From 6db7e147904aba5748444a658bd0b10c00fd742f Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Wed, 27 Mar 2024 18:19:57 +0900 Subject: [PATCH] =?UTF-8?q?QR=E5=8F=96=E5=BE=97=E8=A8=AD=E5=AE=9A=E5=91=A8?= =?UTF-8?q?=E8=BE=BA=E3=81=AE=E6=95=B4=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Web/Rule.php | 17 +++++ .../Config/Acquisition/DisableController.php | 42 +++++++++++ .../Shop/Config/Acquisition/DisableParam.php | 20 ++++++ .../Config/Acquisition/EnableController.php | 42 +++++++++++ .../Shop/Config/Acquisition/EnableParam.php | 26 +++++++ .../Config/Certification/AddController.php | 44 ++++++++++++ .../Shop/Config/Certification/AddParam.php | 25 +++++++ .../Config/Certification/RemoveController.php | 42 +++++++++++ .../Shop/Config/Certification/RemoveParam.php | 25 +++++++ .../Config/ShopConfigDetailController.php | 56 +++++++++++++++ .../Web/Shop/Config/ShopConfigDetailParam.php | 19 +++++ ...ertificationAvailableSettingRepository.php | 72 +++++++++++++++++++ ...ficationAvailableSettingRepositoryData.php | 14 ++++ lang/ja/validation.php | 1 + routes/api.php | 5 ++ 15 files changed, 450 insertions(+) create mode 100644 app/Http/Controllers/Web/Shop/Config/Acquisition/DisableController.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Acquisition/DisableParam.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Acquisition/EnableController.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Acquisition/EnableParam.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/AddController.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php create mode 100644 app/Http/Controllers/Web/Shop/Config/ShopConfigDetailController.php create mode 100644 app/Http/Controllers/Web/Shop/Config/ShopConfigDetailParam.php create mode 100644 app/Repositories/CertificationAvailableSettingRepository.php create mode 100644 app/Repositories/CertificationAvailableSettingRepositoryData.php diff --git a/app/Http/Controllers/Web/Rule.php b/app/Http/Controllers/Web/Rule.php index 265f533..ed1a2e4 100644 --- a/app/Http/Controllers/Web/Rule.php +++ b/app/Http/Controllers/Web/Rule.php @@ -11,4 +11,21 @@ abstract class Rule $ret[] = "max:255"; return $ret; } + + public static function id(): array + { + return ["uuid"]; + } + public static function parkingManagementCode(): array + { + return ["regex:/^[0-9]{5}$/"]; + } + public static function shopNo(): array + { + return ["between:0,99"]; + } + public static function discountTicketCode(): array + { + return ["between:0,99"]; + } } diff --git a/app/Http/Controllers/Web/Shop/Config/Acquisition/DisableController.php b/app/Http/Controllers/Web/Shop/Config/Acquisition/DisableController.php new file mode 100644 index 0000000..9d20fc4 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Acquisition/DisableController.php @@ -0,0 +1,42 @@ +param; + + $setting = AcquisitionAvailableSetting::whereShopId($param->shopId) + ->firstOrFail(); + + $setting->delete(); + + $setting->save(); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Acquisition/DisableParam.php b/app/Http/Controllers/Web/Shop/Config/Acquisition/DisableParam.php new file mode 100644 index 0000000..f5e9ac0 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Acquisition/DisableParam.php @@ -0,0 +1,20 @@ + $this->str([...Rule::id()]), + ]; + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Acquisition/EnableController.php b/app/Http/Controllers/Web/Shop/Config/Acquisition/EnableController.php new file mode 100644 index 0000000..b93ed4b --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Acquisition/EnableController.php @@ -0,0 +1,42 @@ +param; + + $setting = AcquisitionAvailableSetting::whereShopId($param->shopId) + ->firstOrNew(); + + $setting->fill($param->toArray()); + + $setting->save(); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Acquisition/EnableParam.php b/app/Http/Controllers/Web/Shop/Config/Acquisition/EnableParam.php new file mode 100644 index 0000000..c6c1af6 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Acquisition/EnableParam.php @@ -0,0 +1,26 @@ + $this->str([...Rule::id()]), + ColumnName::QR_SERVICE_PARKING_GROUP_ID => $this->str([...Rule::id()]), + ColumnName::SHOP_NO => $this->numeric([...Rule::shopNo()]), + ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), + ]; + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/AddController.php b/app/Http/Controllers/Web/Shop/Config/Certification/AddController.php new file mode 100644 index 0000000..34b6e1b --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/AddController.php @@ -0,0 +1,44 @@ +param; + + $setting = CertificationAvailableSetting::whereShopId($param->shopId) + ->whereParkingManagementCode($param->parkingManagementCode) + ->whereDiscountTicketCode($param->discountTicketCode) + ->firstOrNew(); + + $setting->fill($param->toArray()); + + $setting->save(); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php b/app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php new file mode 100644 index 0000000..8f8fff5 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php @@ -0,0 +1,25 @@ + $this->str([...Rule::id()]), + ColumnName::QR_SERVICE_PARKING_GROUP_ID => $this->str([...Rule::id()]), + ColumnName::PARKING_MANAGEMENT_CODE => $this->string([...Rule::parkingManagementCode()]), + ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), + ]; + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php b/app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php new file mode 100644 index 0000000..c4769b6 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php @@ -0,0 +1,42 @@ +param; + + $setting = CertificationAvailableSetting::whereShopId($param->shopId) + ->whereParkingManagementCode($param->parkingManagementCode) + ->whereDiscountTicketCode($param->discountTicketCode) + ->firstOrFail(); + + $setting->delete(); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php b/app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php new file mode 100644 index 0000000..adc00a4 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php @@ -0,0 +1,25 @@ + $this->str([...Rule::id()]), + ColumnName::QR_SERVICE_PARKING_GROUP_ID => $this->str([...Rule::id()]), + ColumnName::PARKING_MANAGEMENT_CODE => $this->string([...Rule::parkingManagementCode()]), + ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), + ]; + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/ShopConfigDetailController.php b/app/Http/Controllers/Web/Shop/Config/ShopConfigDetailController.php new file mode 100644 index 0000000..4b5c860 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/ShopConfigDetailController.php @@ -0,0 +1,56 @@ +param; + + $shop = Shop::findOrFail($param->shopId); + + + $certification = $this->certificationRepository->get([ + ...$param->toArray(), + ]); + $acquisition = AcquisitionAvailableSetting::whereShopId($param->shopId)->first(); + + + $shop->save(); + + $res = [ + "shop_id" => $param->shopId, + "certification" => $certification, + "acquisition" => $acquisition, + ]; + + return $this->successResponse($res); + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/ShopConfigDetailParam.php b/app/Http/Controllers/Web/Shop/Config/ShopConfigDetailParam.php new file mode 100644 index 0000000..1c55166 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/ShopConfigDetailParam.php @@ -0,0 +1,19 @@ + $this->str(), + ]; + } +} diff --git a/app/Repositories/CertificationAvailableSettingRepository.php b/app/Repositories/CertificationAvailableSettingRepository.php new file mode 100644 index 0000000..8c5debf --- /dev/null +++ b/app/Repositories/CertificationAvailableSettingRepository.php @@ -0,0 +1,72 @@ + + */ + public function get(array $condition): Collection + { + + $table = CertificationAvailableSetting::getBuilder(static::TABLE_SETTING); + + $table->leftJoinSub(Parking::getBuilder(), static::TABLE_PARKING, function (JoinClause $join) { + $join->on( + $this->makeColumnName([static::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]), + $this->makeColumnName([static::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE]) + ); + }); + + // -----検索条件 + // GROUP_ID + $this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_SHOP_ID])); + + + $table->select($this->columns()); + + $main = DB::connection("htpms_customer")->table($table, "main"); + + // ソート + $this->sort($main, $condition); + + // リミット + $this->limit($main, $condition); + + + return CertificationAvailableSettingRepositoryData::makeList($main->get()); + } + + private function columns() + { + $setting = static::TABLE_SETTING; + $parking = static::TABLE_PARKING; + $columns = [ + $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_SHOP_ID]), + $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]), + $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_DISCOUNT_TICKET_CODE]), + $this->makeColumnNameForSelect([$parking, Parking::COL_NAME_PARKING_NAME], "parking_name"), + ]; + + return $columns; + } +} diff --git a/app/Repositories/CertificationAvailableSettingRepositoryData.php b/app/Repositories/CertificationAvailableSettingRepositoryData.php new file mode 100644 index 0000000..18bcab3 --- /dev/null +++ b/app/Repositories/CertificationAvailableSettingRepositoryData.php @@ -0,0 +1,14 @@ + '文字を入力してください', 'unique' => 'すでに使われています', + 'not_regex' => '正しく入力してください', ]); diff --git a/routes/api.php b/routes/api.php index 098fe99..51b67bf 100644 --- a/routes/api.php +++ b/routes/api.php @@ -43,6 +43,11 @@ Route::middleware('auth:sanctum')->group(function () { RouteHelper::get('/shop/list', App\Http\Controllers\Web\Shop\ShopListController::class); RouteHelper::post('/shop/deposit/charge', App\Http\Controllers\Web\Shop\DepositChargeController::class); RouteHelper::post('/shop/config', App\Http\Controllers\Web\Shop\Config\ShopConfigController::class); + RouteHelper::get('/shop/config/detail', App\Http\Controllers\Web\Shop\Config\ShopConfigDetailController::class); + RouteHelper::post('/shop/config/acquisition/enable', App\Http\Controllers\Web\Shop\Config\Acquisition\EnableController::class); + RouteHelper::post('/shop/config/acquisition/disable', App\Http\Controllers\Web\Shop\Config\Acquisition\DisableController::class); + RouteHelper::post('/shop/config/certification/add', App\Http\Controllers\Web\Shop\Config\Certification\AddController::class); + RouteHelper::post('/shop/config/certification/remove', App\Http\Controllers\Web\Shop\Config\Certification\RemoveParam::class); RouteHelper::get('/qr-service/parking-group/list', App\Http\Controllers\Web\QRService\Group\QRServiceGroupListController::class); RouteHelper::post('/qr-service/parking-group/register', App\Http\Controllers\Web\QRService\Group\QRServiceGroupRegisterController::class); RouteHelper::post('/qr-service/parking-group/parking/add', App\Http\Controllers\Web\QRService\Group\QRServiceGroupAddController::class);