Kaynağa Gözat

利用履歴一覧対応

develop
sosuke.iwabuchi 1 yıl önce
ebeveyn
işleme
403f845ff7
6 değiştirilmiş dosya ile 146 ekleme ve 1 silme
  1. +1
    -1
      app/Codes/DepositTransferReason.php
  2. +42
    -0
      app/Http/Controllers/Web/Shop/DepositTransferListController.php
  3. +18
    -0
      app/Http/Controllers/Web/Shop/DepositTransferListParam.php
  4. +74
    -0
      app/Repositories/DepositTransferRepository.php
  5. +10
    -0
      app/Repositories/DepositTransferRepositoryData.php
  6. +1
    -0
      routes/api.php

+ 1
- 1
app/Codes/DepositTransferReason.php Dosyayı Görüntüle

@@ -4,7 +4,7 @@ namespace App\Codes;

enum DepositTransferReason: string
{
case チャージ = "駐車料金割引(認証)";
case チャージ = "チャージ";
case 駐車料金割引_認証 = "駐車料金割引_認証";
case 駐車料金割引_印字 = "駐車料金割引_印字";
case 駐車料金割引_取得 = "駐車料金割引_取得";


+ 42
- 0
app/Http/Controllers/Web/Shop/DepositTransferListController.php Dosyayı Görüntüle

@@ -0,0 +1,42 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\WebController;
use App\Repositories\DepositTransferRepository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class DepositTransferListController extends WebController
{

public function name(): string
{
return "デポジット異動履歴一覧取得";
}

public function description(): string
{
return "デポジット異動履歴一覧を取得する";
}


public function __construct(protected DepositTransferListParam $param, private DepositTransferRepository $repository)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$param = $this->param;

$list = $this->repository->get([
...$param->toArray(),
DepositTransferRepository::CONDITION_SHOP_ID => $this->sessionUser->shopId(),
]);
$res = [
"list" => $list,
];
return $this->successResponse($res);
}
}

+ 18
- 0
app/Http/Controllers/Web/Shop/DepositTransferListParam.php Dosyayı Görüntüle

@@ -0,0 +1,18 @@
<?php

namespace App\Http\Controllers\Web\Shop;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\SortableParam;

/**
*/
class DepositTransferListParam extends BaseParam implements SortableParam
{
public function rules(): array
{
return [
...$this->sortableRules(),
];
}
}

+ 74
- 0
app/Repositories/DepositTransferRepository.php Dosyayı Görüntüle

@@ -0,0 +1,74 @@
<?php

namespace App\Repositories;

use App\Exceptions\AppCommonException;
use App\Models\ColumnName;
use App\Models\HtpmsCustomer\Deposit\DepositTransfer;
use App\Repositories\BaseRepository;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;

class DepositTransferRepository extends BaseRepository
{

const CONDITION_ID = 'id';
const CONDITION_SHOP_ID = ColumnName::SHOP_ID;

const TABLE_TRANSFER = "transfer";

/**
* コレクションを取得する
*
* @param array $condition
* @return Collection<int,DepositTransferRepositoryData>
*/
public function get(array $condition): Collection
{

$table = DepositTransfer::getBuilder(static::TABLE_TRANSFER);
// -----検索条件

// SHOP_ID 必須項目
$shopId = data_get($condition, self::CONDITION_SHOP_ID);
if ($shopId) {
$this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_TRANSFER, DepositTransfer::COL_NAME_SHOP_ID]));
} else {
throw new AppCommonException("SHOP_ID不正");
}

// ID
$this->where($table, $condition, static::CONDITION_ID, $this->makeColumnName([static::TABLE_TRANSFER, DepositTransfer::COL_NAME_ID]));

$table->select($this->columns());

$main = DB::connection("htpms_customer")->table($table, "main");

// ソート
$this->sort($main, $condition);
$main->orderByDesc($this->makeColumnName([DepositTransfer::COL_NAME_TRANSFER_DATETIME]));

// リミット
$this->limit($main, $condition);



return LoginUserRepositoryData::makeList($main->get());
}

private function columns()
{
$transfer = static::TABLE_TRANSFER;
$columns = [
$this->makeColumnNameForSelect([$transfer, DepositTransfer::COL_NAME_ID]),
$this->makeColumnNameForSelect([$transfer, DepositTransfer::COL_NAME_TRANSFER_DATETIME]),
$this->makeColumnNameForSelect([$transfer, DepositTransfer::COL_NAME_TRANSFER_AMOUNT]),
$this->makeColumnNameForSelect([$transfer, DepositTransfer::COL_NAME_TRANSFER_REASON]),
$this->makeColumnNameForSelect([$transfer, DepositTransfer::COL_NAME_AFTER_AMOUNT]),
$this->makeColumnNameForSelect([$transfer, DepositTransfer::COL_NAME_BEFORE_AMOUNT]),
];


return $columns;
}
}

+ 10
- 0
app/Repositories/DepositTransferRepositoryData.php Dosyayı Görüntüle

@@ -0,0 +1,10 @@
<?php

namespace App\Repositories;


/**
*/
class DepositTransferRepositoryData extends BaseRepositoryData
{
}

+ 1
- 0
routes/api.php Dosyayı Görüntüle

@@ -63,6 +63,7 @@ Route::middleware('auth:sanctum')->group(function () {
// 店舗ルート
Route::middleware(RouteHelper::role([UserRole::SHOP]))->group(function () {
RouteHelper::get('/shop/deposit', App\Http\Controllers\Web\Shop\MyDepositController::class);
RouteHelper::get('/shop/deposit/transfer/list', App\Http\Controllers\Web\Shop\DepositTransferListController::class);
RouteHelper::get('/qr-service/acquisition/token', App\Http\Controllers\Web\QRService\Acquisition\GetAcquisitionTokenController::class);
RouteHelper::post('/qr-service/acquisition/token/refresh', App\Http\Controllers\Web\QRService\Acquisition\RefreshAcquisitionTokenController::class);
RouteHelper::post('/qr-service/certification/check-data-format', App\Http\Controllers\Web\QRService\Certification\CheckDataFormatController::class);


Yükleniyor…
İptal
Kaydet