From 1bac87a300909b80104c70a23bb321983a1e6fcf Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Tue, 20 Jun 2023 14:02:23 +0900 Subject: [PATCH] =?UTF-8?q?=E7=B2=BE=E7=AE=97=E5=B1=A5=E6=AD=B4API?= =?UTF-8?q?=E9=96=8B=E9=80=9A=E3=81=AB=E4=BC=B4=E3=81=86=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HelloTechno/AdjustDataController.php | 43 +++++++++ .../Custom/HelloTechno/AdjustDataParam.php | 22 +++++ .../CreateReceiptIssuingOrderController.php | 2 +- .../ReceiptIssuingOrder/ConfirmController.php | 2 +- .../Web/ReceiptIssuingOrder/ConfirmParam.php | 4 +- app/Models/ReceiptIssuingOrder.php | 1 + .../ReceiptIssuingOrderRepository.php | 14 ++- app/Util/Custom/HelloTechno/API.php | 89 ++++++++++++++++++- routes/api.php | 1 + 9 files changed, 169 insertions(+), 9 deletions(-) create mode 100644 app/Http/Controllers/Web/Custom/HelloTechno/AdjustDataController.php create mode 100644 app/Http/Controllers/Web/Custom/HelloTechno/AdjustDataParam.php diff --git a/app/Http/Controllers/Web/Custom/HelloTechno/AdjustDataController.php b/app/Http/Controllers/Web/Custom/HelloTechno/AdjustDataController.php new file mode 100644 index 0000000..bc7f839 --- /dev/null +++ b/app/Http/Controllers/Web/Custom/HelloTechno/AdjustDataController.php @@ -0,0 +1,43 @@ +roleAllow(UserRole::NORMAL_ADMIN); + } + + protected function getParam(): IParam + { + return $this->param; + } + + protected function run(Request $request): JsonResponse + { + $param = $this->param; + + $adjustData = API::getAdjustData($param->customerCode, $param->parkingManagementCode, $param->adjustSeqNo); + + return $this->successResponse($adjustData); + } +} diff --git a/app/Http/Controllers/Web/Custom/HelloTechno/AdjustDataParam.php b/app/Http/Controllers/Web/Custom/HelloTechno/AdjustDataParam.php new file mode 100644 index 0000000..b1c0590 --- /dev/null +++ b/app/Http/Controllers/Web/Custom/HelloTechno/AdjustDataParam.php @@ -0,0 +1,22 @@ + $this->str(), + 'parking_management_code' => $this->str(), + 'adjust_seq_no' => $this->numeric(), + ]; + } +} diff --git a/app/Http/Controllers/Web/Custom/HelloTechno/CreateReceiptIssuingOrderController.php b/app/Http/Controllers/Web/Custom/HelloTechno/CreateReceiptIssuingOrderController.php index 02552bf..ff6c9e2 100644 --- a/app/Http/Controllers/Web/Custom/HelloTechno/CreateReceiptIssuingOrderController.php +++ b/app/Http/Controllers/Web/Custom/HelloTechno/CreateReceiptIssuingOrderController.php @@ -65,7 +65,7 @@ class CreateReceiptIssuingOrderController extends HelloTechnoController Order::COL_NAME_SUMMARY_KEY1 => $param->customerCode, Order::COL_NAME_SUMMARY_KEY2 => $param->parkingManagementCode, Order::COL_NAME_RECEIPT_PURPOSE => "駐車領収証", - Order::COL_NAME_RECEIPT_INVOICE_NO => "##TODO インボイス登録番号##", + Order::COL_NAME_RECEIPT_INVOICE_NO => $customer['invoice_no'], Order::COL_NAME_RECEIPT_PURPOSE => "駐車料金", Order::COL_NAME_RECEIPT_ISSUER => $customer['name'], Order::COL_NAME_RECEIPT_SHOP_NAME => $parking['name'], diff --git a/app/Http/Controllers/Web/ReceiptIssuingOrder/ConfirmController.php b/app/Http/Controllers/Web/ReceiptIssuingOrder/ConfirmController.php index 49dc95b..d3f5fda 100644 --- a/app/Http/Controllers/Web/ReceiptIssuingOrder/ConfirmController.php +++ b/app/Http/Controllers/Web/ReceiptIssuingOrder/ConfirmController.php @@ -38,7 +38,7 @@ class ConfirmController extends WebController $param = $this->param; - $this->manager->initById($param->id) + $this->manager->initByToken($param->accessToken) ->checkTimestamp($param->timestamp) ->fill( [ diff --git a/app/Http/Controllers/Web/ReceiptIssuingOrder/ConfirmParam.php b/app/Http/Controllers/Web/ReceiptIssuingOrder/ConfirmParam.php index 53992f5..8512ee0 100644 --- a/app/Http/Controllers/Web/ReceiptIssuingOrder/ConfirmParam.php +++ b/app/Http/Controllers/Web/ReceiptIssuingOrder/ConfirmParam.php @@ -7,7 +7,7 @@ use App\Http\Controllers\Web\TimestampParam; use App\Models\ReceiptIssuingOrder; /** - * @property string $id + * @property string $accessToken * @property string $receiptName */ @@ -17,7 +17,7 @@ class ConfirmParam extends BaseParam implements TimestampParam { return array_merge( [ - ReceiptIssuingOrder::COL_NAME_ID => $this->str(), + ReceiptIssuingOrder::COL_NAME_ACCESS_TOKEN => $this->str(), ReceiptIssuingOrder::COL_NAME_RECEIPT_NAME => $this->str(), ], $this->timestamp(), diff --git a/app/Models/ReceiptIssuingOrder.php b/app/Models/ReceiptIssuingOrder.php index d16dc21..ce008c8 100644 --- a/app/Models/ReceiptIssuingOrder.php +++ b/app/Models/ReceiptIssuingOrder.php @@ -47,6 +47,7 @@ class ReceiptIssuingOrder extends AppModel const COL_NAME_MEMO = "memo"; protected $casts = [ + self::COL_NAME_ORDER_DATETIME => 'datetime', self::COL_NAME_ACCESS_TOKEN_EXPIRES_AT => 'datetime', self::COL_NAME_STATUS_SMS_SEND_DATETIME => 'datetime', self::COL_NAME_STATUS_FIRST_ACCESS_DATETIME => 'datetime', diff --git a/app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php b/app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php index 8a00c23..f340e55 100644 --- a/app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php +++ b/app/Repositories/Custom/HelloTechno/ReceiptIssuingOrderRepository.php @@ -35,6 +35,7 @@ class ReceiptIssuingOrderRepository extends BaseRepository const CONDITION_ORDER_DATE_FROM = 'order_date_from'; const CONDITION_ORDER_DATE_TO = 'order_date_to'; + const CONDITION_RECEIPT_NO = 'receipt_no'; const TABLE_ORDER = "order"; const TABLE_CUSTOM_ORDER = "custom_order"; @@ -125,6 +126,10 @@ class ReceiptIssuingOrderRepository extends BaseRepository $table->where($this->makeColumnName([static::TABLE_HANDLER, User::COL_NAME_NAME]), 'like', "%{$handlerName}%"); } + // 領収証番号 + $this->where($table, $condition, static::CONDITION_RECEIPT_NO, $this->makeColumnName([static::TABLE_ORDER, ReceiptIssuingOrder::COL_NAME_RECEIPT_NO])); + + $table->select($this->columns()); $main = DB::table($table, "main"); @@ -182,10 +187,11 @@ class ReceiptIssuingOrderRepository extends BaseRepository $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MAIL_NAME]), $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_MEMO]), $this->makeColumnNameForSelect([$order, ReceiptIssuingOrder::COL_NAME_UPDATED_AT]), - $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_CUSTOMER_CODE], 'customer_code'), - $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_PARKING_MANAGEMENT_CODE], 'parking_management_code'), - $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_CUSTOMER_NAME], 'customer_name'), - $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_PARKING_NAME], 'parking_name'), + $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_CUSTOMER_CODE]), + $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_PARKING_MANAGEMENT_CODE]), + $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_CUSTOMER_NAME]), + $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_PARKING_NAME]), + $this->makeColumnNameForSelect([$custom, CustomOrder::COL_NAME_ADJUST_SEQ_NO]), $this->makeColumnNameForSelect([$handler, User::COL_NAME_ID], 'handler_id'), $this->makeColumnNameForSelect([$handler, User::COL_NAME_NAME], 'handler_name'), diff --git a/app/Util/Custom/HelloTechno/API.php b/app/Util/Custom/HelloTechno/API.php index bea0658..0bda580 100644 --- a/app/Util/Custom/HelloTechno/API.php +++ b/app/Util/Custom/HelloTechno/API.php @@ -3,8 +3,10 @@ namespace App\Util\Custom\HelloTechno; use App\Exceptions\AppCommonException; +use App\Models\ReceiptIssuingHTParkingCustomOrder; +use App\Models\ReceiptIssuingOrder; use Exception; -use Illuminate\Http\Client\Response; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; @@ -19,6 +21,7 @@ class API private const URL_CUSTOMERS = 'customers'; private const URL_PARKINGS = 'parkings'; private const URL_ADJUST_DATA = 'adjust-data'; + private const URL_RECEIPT_ISSUING_ORDER = 'receipt-issuing'; private const CONFIG_KEY_API_HOST = "logic.custom.hellotechno.host"; @@ -50,6 +53,12 @@ class API return static::get(static::getAdjustDataUrl(), $query); } + public static function sendReceiptIssuingOrder(ReceiptIssuingOrder $order, ReceiptIssuingHTParkingCustomOrder $customOrder) + { + $param = static::makeReceiptIssuingOrderParams($order, $customOrder); + return static::post(static::getReceiptIssuingOrderUrl(), $param); + } + private static function getHost(): string { return config(static::CONFIG_KEY_API_HOST, "http://localhost"); @@ -73,6 +82,63 @@ class API $condition = [static::getHost(), static::URL_ADJUST_DATA]; return implode('/', $condition); } + private static function getReceiptIssuingOrderUrl() + { + $condition = [static::getHost(), static::URL_RECEIPT_ISSUING_ORDER]; + return implode('/', $condition); + } + + + public static function makeReceiptIssuingOrderParams(ReceiptIssuingOrder $order, ReceiptIssuingHTParkingCustomOrder $customOrder): array + { + $param = []; + $param['id'] = $order->id; + $param['customer_code'] = $customOrder->customer_code; + $param['parking_management_code'] = $customOrder->parking_management_code; + $param['adjust_seq_no'] = $customOrder->adjust_seq_no; + $param['order_datetime'] = static::formatDateTimeStr($order->order_datetime); + $param['status_done'] = $order->status_done; + $param['status_sms_send_datetime'] = static::formatDateTimeStr($order->status_sms_send_datetime); + $param['status_first_access_datetime'] = static::formatDateTimeStr($order->status_first_access_datetime); + $param['status_receipt_confirm_datetime'] = static::formatDateTimeStr($order->status_receipt_confirm_datetime); + $param['status_order_mail_datetime'] = static::formatDateTimeStr($order->status_order_mail_datetime); + $param['status_mail_download_datetime'] = static::formatDateTimeStr($order->status_mail_download_datetime); + $param['status_mail_post_date'] = static::formatDateStr($order->status_mail_post_date); + $param['status_receipt_download_datetime'] = static::formatDateTimeStr($order->status_receipt_download_datetime); + $param['status_receipt_email_send_order_datetime'] = static::formatDateTimeStr($order->status_receipt_email_send_order_datetime); + $param['status_receipt_email_send_datetime'] = static::formatDateTimeStr($order->status_receipt_email_send_datetime); + $param['sms_phone_number'] = $order->sms_phone_number; + $param['sms_send_success'] = $order->sms_send_success; + $param['receipt_no'] = $order->receipt_no; + $param['receipt_use_date'] = $order->receipt_use_date; + $param['receipt_shop_name'] = $order->receipt_shop_name; + $param['receipt_issuer'] = $order->receipt_issuer; + $param['receipt_purpose'] = $order->receipt_purpose; + $param['receipt_name'] = $order->receipt_name; + $param['receipt_invoice_no'] = $order->receipt_invoice_no; + $param['receipt_amount'] = $order->receipt_amount; + $param['email'] = $order->email; + $param['mail_pref_code'] = $order->mail_pref_code; + $param['mail_zip_code'] = $order->mail_zip_code; + $param['mail_address1'] = $order->mail_address1; + $param['mail_address2'] = $order->mail_address2; + $param['mail_address3'] = $order->mail_address3; + $param['mail_name'] = $order->mail_name; + $param['updated_at'] = $order->updated_at; + return $param; + } + + private static function formatDateStr(?Carbon $date): ?string + { + if ($date === null) return null; + return $date->format('Y-m-d'); + } + + private static function formatDateTimeStr(?Carbon $date): ?string + { + if ($date === null) return null; + return $date->format('Y-m-d H:i:s'); + } private static function get(string $url, array $query = []) { @@ -94,4 +160,25 @@ class API throw $e; } } + + private static function post(string $url, array $param = []) + { + try { + $res = Http::post($url, $param); + if ($res->failed()) { + throw $res->throw(); + } + $data = $res->json(); + + if (data_get($data, static::RESULT_CODE) !== static::RESULT_CODE_SUCCESS) { + Log::error("HT RESPONSE ERROR"); + Log::error($data); + throw new AppCommonException('HT API 失敗'); + } + return data_get($data, static::FIELD_DATA, []); + } catch (Exception $e) { + Log::error("HelloTechno API エラー URL:${url}]"); + throw $e; + } + } } diff --git a/routes/api.php b/routes/api.php index 6ce9eb5..d587937 100644 --- a/routes/api.php +++ b/routes/api.php @@ -40,6 +40,7 @@ RouteHelper::post('/user/change-password', App\Http\Controllers\Web\LoginUser\Ch // Custom for HelloTechno RouteHelper::get('/custom/hello-techno/customers', App\Http\Controllers\Web\Custom\HelloTechno\CustomersController::class); RouteHelper::get('/custom/hello-techno/parkings', App\Http\Controllers\Web\Custom\HelloTechno\ParkingsController::class); +RouteHelper::get('/custom/hello-techno/adjust-data', App\Http\Controllers\Web\Custom\HelloTechno\AdjustDataController::class); // RouteHelper::get('/custom/hello-techno/adjust-data', App\Http\Controllers\Web\Custom\HelloTechno\CustomersController::class); RouteHelper::get('/custom/hello-techno/receipt-issuing-orders', App\Http\Controllers\Web\Custom\HelloTechno\ReceiptIssuingOrdersController::class); RouteHelper::post('/custom/hello-techno/receipt-issuing-order/create', App\Http\Controllers\Web\Custom\HelloTechno\CreateReceiptIssuingOrderController::class);