| @@ -4,7 +4,7 @@ namespace App\Codes; | |||||
| enum DepositTransferReason: string | enum DepositTransferReason: string | ||||
| { | { | ||||
| case チャージ = "駐車料金割引(認証)"; | |||||
| case チャージ = "チャージ"; | |||||
| case 駐車料金割引_認証 = "駐車料金割引_認証"; | case 駐車料金割引_認証 = "駐車料金割引_認証"; | ||||
| case 駐車料金割引_印字 = "駐車料金割引_印字"; | case 駐車料金割引_印字 = "駐車料金割引_印字"; | ||||
| case 駐車料金割引_取得 = "駐車料金割引_取得"; | case 駐車料金割引_取得 = "駐車料金割引_取得"; | ||||
| @@ -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); | |||||
| } | |||||
| } | |||||
| @@ -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(), | |||||
| ]; | |||||
| } | |||||
| } | |||||
| @@ -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; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,10 @@ | |||||
| <?php | |||||
| namespace App\Repositories; | |||||
| /** | |||||
| */ | |||||
| class DepositTransferRepositoryData extends BaseRepositoryData | |||||
| { | |||||
| } | |||||
| @@ -63,6 +63,7 @@ Route::middleware('auth:sanctum')->group(function () { | |||||
| // 店舗ルート | // 店舗ルート | ||||
| Route::middleware(RouteHelper::role([UserRole::SHOP]))->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', 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::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/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); | RouteHelper::post('/qr-service/certification/check-data-format', App\Http\Controllers\Web\QRService\Certification\CheckDataFormatController::class); | ||||