From 3d4091b4f5392b5b5a069afdef467d8bf5a3d0c6 Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Thu, 4 Apr 2024 16:48:03 +0900 Subject: [PATCH] =?UTF-8?q?=E5=8D=B0=E5=AD=97=E6=96=B9=E5=BC=8F=E5=89=B2?= =?UTF-8?q?=E5=BC=95=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Server/IF24_02Controller.php | 11 ++- app/Logics/QRService/PrintingLogic.php | 68 +++++++++++++++++++ .../HtpmsCustomer/QRService/PrintTicket.php | 50 ++++++++++++++ ..._add_column_tbl3_mst_shop_no_relations.php | 5 ++ ...4_154100_create_tbl3_qrs_print_tickets.php | 57 ++++++++++++++++ ...2000_create_tbl3_dep_deposit_transfers.php | 43 ++++++++++++ 6 files changed, 233 insertions(+), 1 deletion(-) create mode 100644 app/Logics/QRService/PrintingLogic.php create mode 100644 app/Models/HtpmsCustomer/QRService/PrintTicket.php create mode 100644 database/migrations/2024_04_04_154100_create_tbl3_qrs_print_tickets.php create mode 100644 database/migrations/2024_04_04_162000_create_tbl3_dep_deposit_transfers.php diff --git a/app/Http/Controllers/Server/IF24_02Controller.php b/app/Http/Controllers/Server/IF24_02Controller.php index 01357f7..5cb56e9 100644 --- a/app/Http/Controllers/Server/IF24_02Controller.php +++ b/app/Http/Controllers/Server/IF24_02Controller.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Server; use App\Exceptions\AppCommonException; use App\Logics\QRService\CertificateLogic; use App\Logics\QRService\CreateLogic; +use App\Logics\QRService\PrintingLogic; use App\Transmission\Layouts\Code\QRTypeCode; use App\Transmission\Layouts\IF24_02Request; use Exception; @@ -53,7 +54,15 @@ class IF24_02Controller extends IFController $request->discountAmount, ); } else if ($request->qrTypeCode === QRTypeCode::方式2_印字方式) { - throw new NotImplementedException("方式2未実装"); + PrintingLogic::use( + $request->shopNo, + $request->header->parkingManagementCode, + $request->publishingTerminalCode, + $request->publishingDate, + $request->publishingNo, + $request->adjustDatetime, + $request->discountAmount, + ); } else if ($request->qrTypeCode === QRTypeCode::方式3_取得方式) { CreateLogic::use( $request->shopNo, diff --git a/app/Logics/QRService/PrintingLogic.php b/app/Logics/QRService/PrintingLogic.php new file mode 100644 index 0000000..1bb9628 --- /dev/null +++ b/app/Logics/QRService/PrintingLogic.php @@ -0,0 +1,68 @@ +wherePublishingDate($publishingDate) + ->wherePublishingNo($seqNo) + ->exists() + ) { + throw new AppCommonException("利用済み"); + } + + // 店舗特定 + $relation = ShopNoRelation::whereShopNo($shopNo) + ->whereParkingManagementCode($parkingManagementCode) + ->whereQrServiceUseage(QRServiceUsage::印字方式) + ->firstOrFail(); + + $qr = new PrintTicket(); + $qr->publishing_terminal_code = $adjusterTerminalCode; + $qr->publishing_date = $publishingDate; + $qr->publishing_no = $seqNo; + $qr->shop_id = $relation->shop_id; + $qr->parking_management_code = $parkingManagementCode; + $qr->used_at = $adjustDatetime; + $qr->discount_amount = $discountAmount; + + // デポジット処理 + self::useDeposit($qr->shop_id, $discountAmount, DepositTransferReason::駐車料金割引_印字); + + $qr->save(); + } +} diff --git a/app/Models/HtpmsCustomer/QRService/PrintTicket.php b/app/Models/HtpmsCustomer/QRService/PrintTicket.php new file mode 100644 index 0000000..9392455 --- /dev/null +++ b/app/Models/HtpmsCustomer/QRService/PrintTicket.php @@ -0,0 +1,50 @@ + Cast::DATE, + self::COL_NAME_USED_AT => Cast::DATETIME, + ]; + + public function getHistory(): ?HistoryModel + { + return null; + } + + public function getModelName(): string + { + return "利用済み印字QRサービス券"; + } + + /** + * 使用済み判定 使用済みの場合trueを返却 + * + * @return boolean + */ + public function isUsed(): bool + { + return $this->used_at !== null; + } +} diff --git a/database/migrations/2024_04_04_085800_add_column_tbl3_mst_shop_no_relations.php b/database/migrations/2024_04_04_085800_add_column_tbl3_mst_shop_no_relations.php index 97e52ff..aa66e29 100644 --- a/database/migrations/2024_04_04_085800_add_column_tbl3_mst_shop_no_relations.php +++ b/database/migrations/2024_04_04_085800_add_column_tbl3_mst_shop_no_relations.php @@ -47,6 +47,11 @@ return new class extends Migration ColumnName::PARKING_MANAGEMENT_CODE, "qr_service_useage", ]); + MigrationHelper::addUnique("tbl3_mst_shop_no_relations", 2, [ + ColumnName::SHOP_NO, + "qr_service_useage", + ColumnName::PARKING_MANAGEMENT_CODE, + ]); // データ移行 foreach ($backup as $data) { diff --git a/database/migrations/2024_04_04_154100_create_tbl3_qrs_print_tickets.php b/database/migrations/2024_04_04_154100_create_tbl3_qrs_print_tickets.php new file mode 100644 index 0000000..829f90d --- /dev/null +++ b/database/migrations/2024_04_04_154100_create_tbl3_qrs_print_tickets.php @@ -0,0 +1,57 @@ +baseColumn() + ->publishingTerminalCode() + ->publishingDate() + ->publishingNo() + ->shopId() + ->parkinManagementCode(); + + $table->datetime("expires_at")->nullable()->comment("有効期限"); + $table->datetime("used_at")->comment("利用日時"); + $table->unsignedInteger("discount_amount")->comment("割引金額"); + + $helper->index(1, [ColumnName::PARKING_MANAGEMENT_CODE]); + $helper->index(2, [ColumnName::SHOP_ID]); + $helper->index(3, ['used_at']); + }; + + Schema::dropIfExists("tbl3_qrs_print_tickets"); + MigrationHelper::createTable("tbl3_qrs_print_tickets", $schema, "HTD 利用済み印字QRサービス券"); + + MigrationHelper::addUnique( + "tbl3_qrs_print_tickets", + 1, + [ + ColumnName::PUBLISHING_TERMINAL_CODE, + ColumnName::PUBLISHING_DATE, + ColumnName::PUBLISHING_NO, + ] + ); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + } +}; diff --git a/database/migrations/2024_04_04_162000_create_tbl3_dep_deposit_transfers.php b/database/migrations/2024_04_04_162000_create_tbl3_dep_deposit_transfers.php new file mode 100644 index 0000000..414170d --- /dev/null +++ b/database/migrations/2024_04_04_162000_create_tbl3_dep_deposit_transfers.php @@ -0,0 +1,43 @@ +baseColumn() + ->shopId(); + + $table->dateTime("transfer_datetime")->comment("異動日時"); + $table->integer("transfer_amount")->comment("異動金額"); + $table->integer("before_amount")->comment("異動前デポジット"); + $table->integer("after_amount")->comment("異動金額"); + $table->string("transfer_reason")->nullable()->comment("異動理由"); + + $helper->index(1, [ColumnName::SHOP_ID]); + $helper->index(2, ["transfer_datetime"]); + }; + + Schema::dropIfExists("tbl3_dep_deposit_transfers"); + MigrationHelper::createTable("tbl3_dep_deposit_transfers", $schema, "HTD デポジット異動履歴"); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + } +};