From 3013f93841720cbe26888a778e81035063ef5f68 Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Thu, 28 Mar 2024 10:41:38 +0900 Subject: [PATCH] =?UTF-8?q?QR=E8=A8=AD=E5=AE=9A=E5=91=A8=E8=BE=BA=E3=81=AE?= =?UTF-8?q?=E6=95=B4=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Parking/DiscountTicketListController.php | 50 ++++++++++++++++++ .../Web/Parking/DiscountTicketListParam.php | 20 +++++++ .../Shop/Config/Certification/AddParam.php | 5 +- .../Config/Certification/DeleteController.php | 51 ++++++++++++++++++ .../Shop/Config/Certification/DeleteParam.php | 22 ++++++++ .../Certification/RegisterController.php | 52 +++++++++++++++++++ .../Config/Certification/RegisterParam.php | 24 +++++++++ .../Config/Certification/RemoveController.php | 4 +- .../Shop/Config/Certification/RemoveParam.php | 5 +- .../Config/Certification/UpdateController.php | 43 +++++++++++++++ .../Shop/Config/Certification/UpdateParam.php | 24 +++++++++ .../HtpmsCustomer/Existing/DiscountTicket.php | 37 +++++++++++++ .../Mst/ShopNoRelationHistory.php | 2 +- ...ertificationAvailableSettingRepository.php | 23 +++++--- .../QRServiceParkingGroupRepository.php | 1 - ...0100_create_tbl3_mst_shop_no_relations.php | 1 + routes/api.php | 8 ++- 17 files changed, 354 insertions(+), 18 deletions(-) create mode 100644 app/Http/Controllers/Web/Parking/DiscountTicketListController.php create mode 100644 app/Http/Controllers/Web/Parking/DiscountTicketListParam.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/DeleteController.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/DeleteParam.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/RegisterController.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/RegisterParam.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/UpdateController.php create mode 100644 app/Http/Controllers/Web/Shop/Config/Certification/UpdateParam.php create mode 100644 app/Models/HtpmsCustomer/Existing/DiscountTicket.php diff --git a/app/Http/Controllers/Web/Parking/DiscountTicketListController.php b/app/Http/Controllers/Web/Parking/DiscountTicketListController.php new file mode 100644 index 0000000..5d568a9 --- /dev/null +++ b/app/Http/Controllers/Web/Parking/DiscountTicketListController.php @@ -0,0 +1,50 @@ +param; + + $parking = Parking::whereParkCode($param->parkingManagementCode) + ->firstOrFail(); + + $res = [ + "list" => DiscountTicket::getBuilder() + ->where(DiscountTicket::COL_NAME_PARK_ID, $parking->id) + ->select([ + sprintf("%s as %s", DiscountTicket::COL_NAME_DISCOUNT_TICKET_CODE, ColumnName::DISCOUNT_TICKET_CODE), + sprintf("%s as %s", DiscountTicket::COL_NAME_TICKET_NAME, "ticket_name"), + ])->get() + ]; + + return $this->successResponse($res); + } +} diff --git a/app/Http/Controllers/Web/Parking/DiscountTicketListParam.php b/app/Http/Controllers/Web/Parking/DiscountTicketListParam.php new file mode 100644 index 0000000..c293a96 --- /dev/null +++ b/app/Http/Controllers/Web/Parking/DiscountTicketListParam.php @@ -0,0 +1,20 @@ + $this->str([...Rule::parkingManagementCode()]), + ]; + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php b/app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php index 8f8fff5..f487380 100644 --- a/app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php +++ b/app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php @@ -8,7 +8,7 @@ use App\Models\ColumnName; /** * @property string shopId - * @property int parkingManagementCode + * @property string parkingManagementCode * @property int discountTicketCode */ class AddParam extends BaseParam @@ -17,8 +17,7 @@ class AddParam extends BaseParam { return [ ColumnName::SHOP_ID => $this->str([...Rule::id()]), - ColumnName::QR_SERVICE_PARKING_GROUP_ID => $this->str([...Rule::id()]), - ColumnName::PARKING_MANAGEMENT_CODE => $this->string([...Rule::parkingManagementCode()]), + ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), ]; } diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/DeleteController.php b/app/Http/Controllers/Web/Shop/Config/Certification/DeleteController.php new file mode 100644 index 0000000..6363e14 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/DeleteController.php @@ -0,0 +1,51 @@ +param; + + + $settings = CertificationAvailableSetting::whereShopId($param->shopId) + ->whereParkingManagementCode($param->parkingManagementCode) + ->get(); + + $relation = ShopNoRelation::whereShopId($param->shopId) + ->whereParkingManagementCode($param->parkingManagementCode) + ->firstOrFail(); + + + foreach ($settings as $setting) { + $setting->delete(); + } + $relation->delete(); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/DeleteParam.php b/app/Http/Controllers/Web/Shop/Config/Certification/DeleteParam.php new file mode 100644 index 0000000..bba0350 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/DeleteParam.php @@ -0,0 +1,22 @@ + $this->str([...Rule::id()]), + ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), + ]; + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/RegisterController.php b/app/Http/Controllers/Web/Shop/Config/Certification/RegisterController.php new file mode 100644 index 0000000..931282a --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/RegisterController.php @@ -0,0 +1,52 @@ +param; + + // 重複チェック + if (ShopNoRelation::whereShopId($param->shopId) + ->whereParkingManagementCode($param->parkingManagementCode) + ->exists() + ) { + ParamException::throw(ColumnName::PARKING_MANAGEMENT_CODE, trans("validation.exists")); + } + + $relation = new ShopNoRelation(); + $relation->shop_id = $param->shopId; + $relation->parking_management_code = $param->parkingManagementCode; + $relation->shop_no = $param->shopNo; + $relation->save(); + + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/RegisterParam.php b/app/Http/Controllers/Web/Shop/Config/Certification/RegisterParam.php new file mode 100644 index 0000000..6051163 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/RegisterParam.php @@ -0,0 +1,24 @@ + $this->str([...Rule::id()]), + ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), + ColumnName::SHOP_NO => $this->numeric([...Rule::shopNo()]), + ]; + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php b/app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php index c4769b6..6de1c38 100644 --- a/app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php +++ b/app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php @@ -7,7 +7,7 @@ use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class AddController extends WebController +class RemoveController extends WebController { public function name(): string @@ -21,7 +21,7 @@ class AddController extends WebController } - public function __construct(protected AddParam $param) + public function __construct(protected RemoveParam $param) { parent::__construct(); } diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php b/app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php index adc00a4..a66b9ab 100644 --- a/app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php +++ b/app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php @@ -8,7 +8,7 @@ use App\Models\ColumnName; /** * @property string shopId - * @property int parkingManagementCode + * @property string parkingManagementCode * @property int discountTicketCode */ class RemoveParam extends BaseParam @@ -17,8 +17,7 @@ class RemoveParam extends BaseParam { return [ ColumnName::SHOP_ID => $this->str([...Rule::id()]), - ColumnName::QR_SERVICE_PARKING_GROUP_ID => $this->str([...Rule::id()]), - ColumnName::PARKING_MANAGEMENT_CODE => $this->string([...Rule::parkingManagementCode()]), + ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), ColumnName::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]), ]; } diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/UpdateController.php b/app/Http/Controllers/Web/Shop/Config/Certification/UpdateController.php new file mode 100644 index 0000000..7b49c61 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/UpdateController.php @@ -0,0 +1,43 @@ +param; + + $relation = ShopNoRelation::whereShopId($param->shopId) + ->whereParkingManagementCode($param->parkingManagementCode) + ->firstOrFail(); + + $relation->shop_no = $param->shopNo; + + $relation->save(); + + return $this->successResponse(); + } +} diff --git a/app/Http/Controllers/Web/Shop/Config/Certification/UpdateParam.php b/app/Http/Controllers/Web/Shop/Config/Certification/UpdateParam.php new file mode 100644 index 0000000..6a115a0 --- /dev/null +++ b/app/Http/Controllers/Web/Shop/Config/Certification/UpdateParam.php @@ -0,0 +1,24 @@ + $this->str([...Rule::id()]), + ColumnName::PARKING_MANAGEMENT_CODE => $this->str([...Rule::parkingManagementCode()]), + ColumnName::SHOP_NO => $this->numeric([...Rule::shopNo()]), + ]; + } +} diff --git a/app/Models/HtpmsCustomer/Existing/DiscountTicket.php b/app/Models/HtpmsCustomer/Existing/DiscountTicket.php new file mode 100644 index 0000000..6f74df1 --- /dev/null +++ b/app/Models/HtpmsCustomer/Existing/DiscountTicket.php @@ -0,0 +1,37 @@ +getConnectionName())->table(static::getTableName(), $name); + } + + public static function getTableName(): string + { + return (new static)->getTable(); + } +} diff --git a/app/Models/HtpmsCustomer/Mst/ShopNoRelationHistory.php b/app/Models/HtpmsCustomer/Mst/ShopNoRelationHistory.php index 0076ba9..1a30206 100644 --- a/app/Models/HtpmsCustomer/Mst/ShopNoRelationHistory.php +++ b/app/Models/HtpmsCustomer/Mst/ShopNoRelationHistory.php @@ -13,6 +13,6 @@ class ShopNoRelationHistory extends HtpmsCustomerHistoryModel public function getModelName(): string { - return "店舗マスタ履歴"; + return "店舗番号紐づけ履歴"; } } diff --git a/app/Repositories/CertificationAvailableSettingRepository.php b/app/Repositories/CertificationAvailableSettingRepository.php index 8c5debf..1442911 100644 --- a/app/Repositories/CertificationAvailableSettingRepository.php +++ b/app/Repositories/CertificationAvailableSettingRepository.php @@ -4,6 +4,7 @@ namespace App\Repositories; use App\Models\ColumnName; use App\Models\HtpmsCustomer\Existing\Parking; +use App\Models\HtpmsCustomer\Mst\ShopNoRelation; use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting; use App\Repositories\BaseRepository; use Illuminate\Database\Query\JoinClause; @@ -16,6 +17,7 @@ class CertificationAvailableSettingRepository extends BaseRepository const CONDITION_SHOP_ID = ColumnName::SHOP_ID; const TABLE_SETTING = "setting"; + const TABLE_RELATION = "relation"; const TABLE_PARKING = "parking"; @@ -28,21 +30,29 @@ class CertificationAvailableSettingRepository extends BaseRepository public function get(array $condition): Collection { - $table = CertificationAvailableSetting::getBuilder(static::TABLE_SETTING); + $table = ShopNoRelation::getBuilder(static::TABLE_RELATION); + $table->leftJoinSub(CertificationAvailableSetting::getBuilder(), static::TABLE_SETTING, function (JoinClause $join) { + $join->on( + $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]), + $this->makeColumnName([static::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]) + ); + }); $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_RELATION, ShopNoRelation::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])); + $this->where($table, $condition, static::CONDITION_SHOP_ID, $this->makeColumnName([static::TABLE_RELATION, ShopNoRelation::COL_NAME_SHOP_ID])); $table->select($this->columns()); + $table->orderBy($this->makeColumnName([self::TABLE_PARKING, Parking::COL_NAME_PARKING_MANAGEMENT_CODE])); + $table->orderBy($this->makeColumnName([self::TABLE_SETTING, CertificationAvailableSetting::COL_NAME_DISCOUNT_TICKET_CODE])); $main = DB::connection("htpms_customer")->table($table, "main"); @@ -52,17 +62,18 @@ class CertificationAvailableSettingRepository extends BaseRepository // リミット $this->limit($main, $condition); - return CertificationAvailableSettingRepositoryData::makeList($main->get()); } private function columns() { $setting = static::TABLE_SETTING; + $relation = static::TABLE_RELATION; $parking = static::TABLE_PARKING; $columns = [ - $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_SHOP_ID]), - $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_PARKING_MANAGEMENT_CODE]), + $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_SHOP_ID]), + $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_PARKING_MANAGEMENT_CODE]), + $this->makeColumnNameForSelect([$relation, ShopNoRelation::COL_NAME_SHOP_NO]), $this->makeColumnNameForSelect([$setting, CertificationAvailableSetting::COL_NAME_DISCOUNT_TICKET_CODE]), $this->makeColumnNameForSelect([$parking, Parking::COL_NAME_PARKING_NAME], "parking_name"), ]; diff --git a/app/Repositories/QRServiceParkingGroupRepository.php b/app/Repositories/QRServiceParkingGroupRepository.php index 0e1aa65..7779acd 100644 --- a/app/Repositories/QRServiceParkingGroupRepository.php +++ b/app/Repositories/QRServiceParkingGroupRepository.php @@ -74,7 +74,6 @@ class QRServiceParkingGroupRepository extends BaseRepository // リミット $this->limit($main, $condition); - return QRServiceParkingGroupRepositoryData::makeList($main->get()); } diff --git a/database/migrations/2024_03_14_160100_create_tbl3_mst_shop_no_relations.php b/database/migrations/2024_03_14_160100_create_tbl3_mst_shop_no_relations.php index 9239bd7..b5a0fdd 100644 --- a/database/migrations/2024_03_14_160100_create_tbl3_mst_shop_no_relations.php +++ b/database/migrations/2024_03_14_160100_create_tbl3_mst_shop_no_relations.php @@ -22,6 +22,7 @@ return new class extends Migration ->shopId() ->parkinManagementCode() ->shopNo(); + $helper->index(1, [ColumnName::PARKING_MANAGEMENT_CODE]); }; MigrationHelper::createTable("tbl3_mst_shop_no_relations", $schema, "HTD 店舗コード紐づけ"); diff --git a/routes/api.php b/routes/api.php index 51b67bf..b47bf9a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -37,6 +37,7 @@ Route::middleware('auth:sanctum')->group(function () { // 運営会社ルート Route::middleware(RouteHelper::role([UserRole::CUSTOMER]))->group(function () { RouteHelper::get('/parking/list', App\Http\Controllers\Web\Parking\ParkingListController::class); + RouteHelper::get('/parking/discount-ticket/list', App\Http\Controllers\Web\Parking\DiscountTicketListController::class); RouteHelper::post('/role/switch/shop', App\Http\Controllers\Web\Auth\SwitchShopController::class); RouteHelper::post('/login-user/shop/register', App\Http\Controllers\Web\LoginUser\ShopRegisterController::class); RouteHelper::post('/shop/register', App\Http\Controllers\Web\Shop\ShopRegisterController::class); @@ -44,10 +45,13 @@ Route::middleware('auth:sanctum')->group(function () { 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/certification/register', App\Http\Controllers\Web\Shop\Config\Certification\RegisterController::class); + RouteHelper::post('/shop/config/certification/update', App\Http\Controllers\Web\Shop\Config\Certification\UpdateController::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\RemoveController::class); + RouteHelper::post('/shop/config/certification/delete', App\Http\Controllers\Web\Shop\Config\Certification\DeleteController::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);