Pārlūkot izejas kodu

利用実績一覧対応

develop
sosuke.iwabuchi pirms 2 gadiem
vecāks
revīzija
e1daada1e3
16 mainītis faili ar 436 papildinājumiem un 43 dzēšanām
  1. +1
    -0
      app/Codes/QueueName.php
  2. +45
    -34
      app/Http/Controllers/Web/Custom/HelloTechno/CreateReceiptIssuingOrderController.php
  3. +53
    -0
      app/Http/Controllers/Web/Custom/HelloTechno/UseSummariesController.php
  4. +26
    -0
      app/Http/Controllers/Web/Custom/HelloTechno/UseSummariesParam.php
  5. +50
    -0
      app/Http/Controllers/Web/UseSummary/UseSummaryYYYYMMsController.php
  6. +18
    -0
      app/Http/Controllers/Web/UseSummary/UseSummaryYYYYMMsParam.php
  7. +65
    -0
      app/Jobs/Other/Custom/HelloTechno/CacheParkingName.php
  8. +6
    -0
      app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/CreateManager.php
  9. +23
    -0
      app/Models/HtCustomParkingName.php
  10. +0
    -6
      app/Models/UseSummary.php
  11. +89
    -0
      app/Repositories/Custom/HelloTechno/UseSummaryRepository.php
  12. +11
    -0
      app/Repositories/Custom/HelloTechno/UseSummaryRepositoryData.php
  13. +3
    -3
      app/Util/Custom/HelloTechno/API.php
  14. +1
    -0
      database/migrations/2023_04_24_160000_create_receipt_issuing_ht_custom_orders_table.php
  15. +42
    -0
      database/migrations/2023_06_16_093400_create_ht_custom_parking_names_table.php
  16. +3
    -0
      routes/api.php

+ 1
- 0
app/Codes/QueueName.php Parādīt failu

@@ -6,4 +6,5 @@ enum QueueName: string
{
case EMAIL = 'email';
case SMS = 'sms';
case OTHER = 'other';
}

+ 45
- 34
app/Http/Controllers/Web/Custom/HelloTechno/CreateReceiptIssuingOrderController.php Parādīt failu

@@ -9,6 +9,7 @@ use App\Logic\ReceiptIssuingOrder\Custom\HelloTechno\CreateManager;
use App\Models\ReceiptIssuingOrder as Order;
use App\Models\ReceiptIssuingHTParkingCustomOrder as HT;
use App\Util\Custom\HelloTechno\API;
use Exception;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -42,41 +43,51 @@ class CreateReceiptIssuingOrderController extends HelloTechnoController
{
$param = $this->param;

// 顧客情報取得
$customer = collect(API::getCustomers($param->customerCode))
->where('customer_code', $param->customerCode)
->firstOrFail();
// 駐車場情報取得
$parking = collect(API::getParkings($param->customerCode, $param->parkingManagementCode))
->where('parking_management_code', $param->parkingManagementCode)
->firstOrFail();

$orderData = [
...$param->toArray(),
HT::COL_NAME_CUSTOMER_NAME => $customer['name'],
HT::COL_NAME_PARKING_NAME => $parking['name'],
Order::COL_NAME_HANDLER_ID => Auth::id(),
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_PURPOSE => "駐車料金",
Order::COL_NAME_RECEIPT_ISSUER => $customer['name'],
Order::COL_NAME_RECEIPT_SHOP_NAME => $parking['name'],
Order::COL_NAME_RECEIPT_PURPOSE => "駐車料金",
Order::COL_NAME_MEMO => "駐車料金",
];

logger($orderData);

$messages = $this->manager->init()
->fill($orderData)
->create();

if (count($messages) !== 0) {
return $this->failedResponse([], $messages);
}
try {


$this->transaction->beginTransaction();

// 顧客情報取得
$customer = collect(API::getCustomers($param->customerCode))
->where('customer_code', $param->customerCode)
->firstOrFail();
// 駐車場情報取得
$parking = collect(API::getParkings($param->customerCode, $param->parkingManagementCode))
->where('parking_management_code', $param->parkingManagementCode)
->firstOrFail();

$orderData = [
...$param->toArray(),
HT::COL_NAME_CUSTOMER_NAME => $customer['name'],
HT::COL_NAME_PARKING_NAME => $parking['name'],
Order::COL_NAME_HANDLER_ID => Auth::id(),
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_PURPOSE => "駐車料金",
Order::COL_NAME_RECEIPT_ISSUER => $customer['name'],
Order::COL_NAME_RECEIPT_SHOP_NAME => $parking['name'],
Order::COL_NAME_RECEIPT_PURPOSE => "駐車料金",
Order::COL_NAME_MEMO => "駐車料金",
];

logger($orderData);

$messages = $this->manager->init()
->fill($orderData)
->create();

if (count($messages) !== 0) {
return $this->failedResponse([], $messages);
}

$this->transaction->commit();
} catch (Exception $e) {
$this->transaction->rollBack();
throw $e;
}

return $this->successResponse();
}


+ 53
- 0
app/Http/Controllers/Web/Custom/HelloTechno/UseSummariesController.php Parādīt failu

@@ -0,0 +1,53 @@
<?php

namespace App\Http\Controllers\Web\Custom\HelloTechno;

use App\Codes\UserRole;
use App\Http\Controllers\Web\IParam;
use App\Repositories\Custom\HelloTechno\UseSummaryRepository as Repository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class UseSummariesController extends HelloTechnoController
{
public function name(): string
{
return "[HelloTechno専用]利用実績一覧取得";
}

public function description(): string
{
return "[HelloTechno専用]利用実績の一覧を取得する";
}

public function __construct(
protected UseSummariesParam $param,
private Repository $repository
) {
parent::__construct();
$this->roleAllow(UserRole::NORMAL_ADMIN);
}

protected function getParam(): IParam
{
return $this->param;
}

protected function run(Request $request): JsonResponse
{
$param = $this->param;

$condition = [
...$param->toArray(),
Repository::CONDITION_CONTRACT_ID => Auth::user()->contract_id,
];

$list = $this->repository->get($condition);


return $this->successResponse([
'records' => $list
]);
}
}

+ 26
- 0
app/Http/Controllers/Web/Custom/HelloTechno/UseSummariesParam.php Parādīt failu

@@ -0,0 +1,26 @@
<?php

namespace App\Http\Controllers\Web\Custom\HelloTechno;

use App\Http\Controllers\Web\BaseParam;
use App\Repositories\Custom\HelloTechno\UseSummaryRepository as Repository;

/**
* @property ?string $id
* @property ?string $summaryYyyymm
*/

class UseSummariesParam extends BaseParam
{
public function rules(): array
{
return
array_merge(
[
Repository::CONDITION_ID => $this->str(true),
Repository::CONDITION_SUMMARY_YYYYMM => $this->str(),
],
$this->sortableRules(),
);
}
}

+ 50
- 0
app/Http/Controllers/Web/UseSummary/UseSummaryYYYYMMsController.php Parādīt failu

@@ -0,0 +1,50 @@
<?php

namespace App\Http\Controllers\Web\UseSummary;

use App\Codes\UserRole;
use App\Features\LoginUser;
use App\Http\Controllers\Web\IParam;
use App\Http\Controllers\Web\WebController;
use App\Logic\ReceiptIssuingOrder\TokenCheckManager;
use App\Models\ReceiptIssuingOrder;
use App\Models\UseSummary;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;

class UseSummaryYYYYMMsController extends WebController
{
use LoginUser;

public function name(): string
{
return "利用実績年月一覧取得";
}

public function description(): string
{
return "利用実績年月一覧を取得する";
}

public function __construct(
protected UseSummaryYYYYMMsParam $param,
) {
parent::__construct();
$this->roleAllow(UserRole::NORMAL_ADMIN);
}

protected function getParam(): IParam
{
return $this->param;
}

protected function run(Request $request): JsonResponse
{
$list = UseSummary::whereContractId($this->loginUser()->getCurrentContractId())
->orderByDesc(UseSummary::COL_NAME_SUMMARY_YYYYMM)
->pluck(UseSummary::COL_NAME_SUMMARY_YYYYMM);

return $this->successResponse(['records' => $list]);
}
}

+ 18
- 0
app/Http/Controllers/Web/UseSummary/UseSummaryYYYYMMsParam.php Parādīt failu

@@ -0,0 +1,18 @@
<?php

namespace App\Http\Controllers\Web\UseSummary;

use App\Http\Controllers\Web\BaseParam;
use App\Models\ReceiptIssuingOrder;

/**
*
*/

class UseSummaryYYYYMMsParam extends BaseParam
{
public function rules(): array
{
return [];
}
}

+ 65
- 0
app/Jobs/Other/Custom/HelloTechno/CacheParkingName.php Parādīt failu

@@ -0,0 +1,65 @@
<?php

namespace App\Jobs\Other\Custom\HelloTechno;

use App\Codes\QueueName;
use App\Logic\SMS\SMSManager;
use App\Models\HtCustomParkingName;
use App\Models\SMSSendOrder;
use App\Util\Custom\HelloTechno\API;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Arr;

class CacheParkingName implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;


/**
* Create a new job instance.
*
* @return void
*/
public function __construct(
private string $customerCode,
private string $parkingManagementCode
) {
$this->onQueue(QueueName::OTHER->value);
}

/**
* Execute the job.
*
* @return void
*/
public function handle(SMSManager $manager)
{

// 顧客情報取得
$customer = collect(API::getCustomers($this->customerCode))
->where('customer_code', $this->customerCode)
->firstOrFail();
// 駐車場情報取得
$parking = collect(API::getParkings($this->customerCode, $this->parkingManagementCode))
->where('parking_management_code', $this->parkingManagementCode)
->firstOrFail();


// モデル更新
$model = HtCustomParkingName::whereCustomerCode($this->customerCode)
->whereParkingManagementCode($this->parkingManagementCode)
->firstOrNew([
HtCustomParkingName::COL_NAME_CUSTOMER_CODE => $this->customerCode,
HtCustomParkingName::COL_NAME_PARKING_MANAGEMENT_CODE => $this->parkingManagementCode,
]);

$model->customer_name = $customer['name'];
$model->parking_name = $parking['name'];

$model->save();
}
}

+ 6
- 0
app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/CreateManager.php Parādīt failu

@@ -2,6 +2,7 @@

namespace App\Logic\ReceiptIssuingOrder\Custom\HelloTechno;

use App\Jobs\Other\Custom\HelloTechno\CacheParkingName;
use App\Logic\ReceiptIssuingOrder\CreateManager as BaseManager;
use App\Models\ReceiptIssuingHTParkingCustomOrder;

@@ -39,6 +40,11 @@ class CreateManager
$this->customOrder->setReceiptIssuingOrder($this->manager->id());
$this->customOrder->save();


// 駐車場名キャッシュ
CacheParkingName::dispatch($this->customOrder->customer_code, $this->customOrder->parking_management_code);


return [];
}
}

+ 23
- 0
app/Models/HtCustomParkingName.php Parādīt failu

@@ -0,0 +1,23 @@
<?php

namespace App\Models;


class HtCustomParkingName extends AppModel
{
const COL_NAME_CUSTOMER_CODE = "customer_code";
const COL_NAME_PARKING_MANAGEMENT_CODE = "parking_management_code";
const COL_NAME_CUSTOMER_NAME = "customer_name";
const COL_NAME_PARKING_NAME = "parking_name";


public function getModelName(): string
{
return "HT_駐車場名キャッシュテーブル";
}

public function getHistory(): ?HistoryModel
{
return null;
}
}

+ 0
- 6
app/Models/UseSummary.php Parādīt failu

@@ -9,17 +9,11 @@ class UseSummary extends AppModel
use ContractFeature;

const COL_NAME_SUMMARY_YYYYMM = 'summary_yyyymm';
const COL_NAME_SUMMARY_DATE_START = 'summary_date_start';
const COL_NAME_SUMMARY_DATE_END = 'summary_date_end';
const COL_NAME_RECEIPT_ORDER_COUNT = 'receipt_order_count';
const COL_NAME_SMS_SEND_COUNT = 'sms_send_count';
const COL_NAME_SMS_SEND_COST = 'sms_send_cost';
const COL_NAME_IS_FIXED = 'is_fixed';

protected $casts = [
self::COL_NAME_SUMMARY_DATE_START => 'datetime',
self::COL_NAME_SUMMARY_DATE_END => 'datetime',
];

public function getModelName(): string
{


+ 89
- 0
app/Repositories/Custom/HelloTechno/UseSummaryRepository.php Parādīt failu

@@ -0,0 +1,89 @@
<?php

namespace App\Repositories\Custom\HelloTechno;

use App\Models\HtCustomParkingName;
use App\Models\UseByKeySummary;
use App\Repositories\BaseRepository;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;

class UseSummaryRepository extends BaseRepository
{

const CONDITION_ID = 'id';

const CONDITION_SUMMARY_YYYYMM = 'summary_yyyymm';

const CONDITION_CONTRACT_ID = 'contract_id';

const TABLE_SUMMARY = "summary";
const TABLE_NAME = "name";


/**
* コレクションを取得する
*
* @param array $condition
* @return Collection<UseSummaryRepositoryData>
*/
public function get(array $condition): Collection
{
$order = UseByKeySummary::getBuilder(static::TABLE_SUMMARY);

$parkingName = HtCustomParkingName::getBuilder();


$table = $order
->leftJoinSub($parkingName, static::TABLE_NAME, function (JoinClause $join) {
$join->on(
$this->makeColumnName([static::TABLE_SUMMARY, UseByKeySummary::COL_NAME_SUMMARY_KEY1]),
$this->makeColumnName([static::TABLE_NAME, HtCustomParkingName::COL_NAME_CUSTOMER_CODE])
)->on(
$this->makeColumnName([static::TABLE_SUMMARY, UseByKeySummary::COL_NAME_SUMMARY_KEY2]),
$this->makeColumnName([static::TABLE_NAME, HtCustomParkingName::COL_NAME_PARKING_MANAGEMENT_CODE])
);
});

// -----検索条件
// 契約ID
$this->where($table, $condition, static::CONDITION_CONTRACT_ID, $this->makeColumnName([static::TABLE_SUMMARY, UseByKeySummary::COL_NAME_CONTRACT_ID]));
// 年月
$this->where($table, $condition, static::CONDITION_SUMMARY_YYYYMM, $this->makeColumnName([static::TABLE_SUMMARY, UseByKeySummary::COL_NAME_SUMMARY_YYYYMM]));


$table->select($this->columns());

$main = DB::table($table, "main");

// ソート
$this->sort($main, $condition);
$main->orderBy(static::CONDITION_ID);

// リミット
$this->limit($main, $condition);


return ReceiptIssuingOrderRepositoryData::makeList($main->get());
}

private function columns()
{
$summary = static::TABLE_SUMMARY;
$name = static::TABLE_NAME;
$columns = [
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_ID]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_YYYYMM]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_KEY1]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SUMMARY_KEY2]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_RECEIPT_ORDER_COUNT]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_SMS_SEND_COUNT]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_IS_FIXED]),
$this->makeColumnNameForSelect([$summary, UseByKeySummary::COL_NAME_UPDATED_AT]),
$this->makeColumnNameForSelect([$name, HtCustomParkingName::COL_NAME_CUSTOMER_NAME]),
$this->makeColumnNameForSelect([$name, HtCustomParkingName::COL_NAME_PARKING_NAME]),
];
return $columns;
}
}

+ 11
- 0
app/Repositories/Custom/HelloTechno/UseSummaryRepositoryData.php Parādīt failu

@@ -0,0 +1,11 @@
<?php

namespace App\Repositories\Custom\HelloTechno;

use App\Repositories\BaseRepositoryData;

/**
*/
class UseSummaryRepositoryData extends BaseRepositoryData
{
}

+ 3
- 3
app/Util/Custom/HelloTechno/API.php Parādīt failu

@@ -22,12 +22,12 @@ class API

private const CONFIG_KEY_API_HOST = "logic.custom.hellotechno.host";

public static function getCustomers(?string $customerCde = null)
public static function getCustomers(?string $customerCode = null)
{

$query = [];
if ($customerCde) {
$query['customer_code'] = $customerCde;
if ($customerCode) {
$query['customer_code'] = $customerCode;
}
return static::get(static::getCustomersUrl(), $query);
}


+ 1
- 0
database/migrations/2023_04_24_160000_create_receipt_issuing_ht_custom_orders_table.php Parādīt failu

@@ -41,6 +41,7 @@ return new class extends Migration
$table->string("parking_name")->comment("駐車場名")->nullable();

$helper->index(1, [ColumnName::RECEIPT_ISSUING_ORDER_ID]);
$helper->index(2, ['customer_code', 'parking_management_code', 'adjust_seq_no']);
};
}
};

+ 42
- 0
database/migrations/2023_06_16_093400_create_ht_custom_parking_names_table.php Parādīt failu

@@ -0,0 +1,42 @@
<?php

use App\Models\ColumnName;
use App\Util\MigrationHelper;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{

MigrationHelper::createTable('ht_custom_parking_names', $this->schema());
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('ht_custom_parking_names');
}

private function schema(bool $forHistory = false)
{

return function (Blueprint $table, MigrationHelper $helper) use ($forHistory) {
$helper->baseColumn();

$table->string("customer_code")->comment("顧客コード");
$table->string("parking_management_code")->comment("駐車場管理コード");
$table->string("customer_name")->comment("顧客名")->nullable();
$table->string("parking_name")->comment("駐車場名")->nullable();

$helper->index(1, ['customer_code', 'parking_management_code']);
};
}
};

+ 3
- 0
routes/api.php Parādīt failu

@@ -22,6 +22,8 @@ RouteHelper::post('/receipt-issuing-order/confirm', App\Http\Controllers\Web\Rec
RouteHelper::post('/receipt-issuing-order/mail-order', App\Http\Controllers\Web\ReceiptIssuingOrder\MailOrderController::class);
RouteHelper::post('/receipt-issuing-order/mail-complete', App\Http\Controllers\Web\ReceiptIssuingOrder\MailPostCompleteController::class);

RouteHelper::get('/use-summary/yyyymm', App\Http\Controllers\Web\UseSummary\UseSummaryYYYYMMsController::class);

RouteHelper::get('/receipt/download', App\Http\Controllers\Web\ReceiptIssuingOrder\TokenCheckController::class);


@@ -41,3 +43,4 @@ RouteHelper::get('/custom/hello-techno/parkings', App\Http\Controllers\Web\Custo
// 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);
RouteHelper::get('/custom/hello-techno/use-summaries', App\Http\Controllers\Web\Custom\HelloTechno\UseSummariesController::class);

Notiek ielāde…
Atcelt
Saglabāt