Просмотр исходного кода

QR取得設定周辺の整備

develop
sosuke.iwabuchi 1 год назад
Родитель
Сommit
6db7e14790
15 измененных файлов: 450 добавлений и 0 удалений
  1. +17
    -0
      app/Http/Controllers/Web/Rule.php
  2. +42
    -0
      app/Http/Controllers/Web/Shop/Config/Acquisition/DisableController.php
  3. +20
    -0
      app/Http/Controllers/Web/Shop/Config/Acquisition/DisableParam.php
  4. +42
    -0
      app/Http/Controllers/Web/Shop/Config/Acquisition/EnableController.php
  5. +26
    -0
      app/Http/Controllers/Web/Shop/Config/Acquisition/EnableParam.php
  6. +44
    -0
      app/Http/Controllers/Web/Shop/Config/Certification/AddController.php
  7. +25
    -0
      app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php
  8. +42
    -0
      app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php
  9. +25
    -0
      app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php
  10. +56
    -0
      app/Http/Controllers/Web/Shop/Config/ShopConfigDetailController.php
  11. +19
    -0
      app/Http/Controllers/Web/Shop/Config/ShopConfigDetailParam.php
  12. +72
    -0
      app/Repositories/CertificationAvailableSettingRepository.php
  13. +14
    -0
      app/Repositories/CertificationAvailableSettingRepositoryData.php
  14. +1
    -0
      lang/ja/validation.php
  15. +5
    -0
      routes/api.php

+ 17
- 0
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"];
}
}

+ 42
- 0
app/Http/Controllers/Web/Shop/Config/Acquisition/DisableController.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config\Acquisition;

use App\Http\Controllers\Web\WebController;
use App\Models\HtpmsCustomer\QRService\AcquisitionAvailableSetting;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class DisableController extends WebController
{

public function name(): string
{
return "QRサービス券取得設定無効化";
}

public function description(): string
{
return "QRサービス券取得設定を無効にする";
}


public function __construct(protected DisableParam $param)
{
parent::__construct();
}

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

$setting = AcquisitionAvailableSetting::whereShopId($param->shopId)
->firstOrFail();

$setting->delete();

$setting->save();

return $this->successResponse();
}
}

+ 20
- 0
app/Http/Controllers/Web/Shop/Config/Acquisition/DisableParam.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config\Acquisition;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\Rule;
use App\Models\ColumnName;

/**
* @property string shopId
*/
class DisableParam extends BaseParam
{
public function rules(): array
{
return [
ColumnName::SHOP_ID => $this->str([...Rule::id()]),
];
}
}

+ 42
- 0
app/Http/Controllers/Web/Shop/Config/Acquisition/EnableController.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config\Acquisition;

use App\Http\Controllers\Web\WebController;
use App\Models\HtpmsCustomer\QRService\AcquisitionAvailableSetting;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class EnableController extends WebController
{

public function name(): string
{
return "QRサービス券取得設定変更";
}

public function description(): string
{
return "QRサービス券取得設定を変更する";
}


public function __construct(protected EnableParam $param)
{
parent::__construct();
}

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

$setting = AcquisitionAvailableSetting::whereShopId($param->shopId)
->firstOrNew();

$setting->fill($param->toArray());

$setting->save();

return $this->successResponse();
}
}

+ 26
- 0
app/Http/Controllers/Web/Shop/Config/Acquisition/EnableParam.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config\Acquisition;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\Rule;
use App\Models\ColumnName;

/**
* @property string shopId
* @property string qrServiceParkingGroupId
* @property int shopNo
* @property int discountTicketCode
*/
class EnableParam extends BaseParam
{
public function rules(): array
{
return [
ColumnName::SHOP_ID => $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()]),
];
}
}

+ 44
- 0
app/Http/Controllers/Web/Shop/Config/Certification/AddController.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config\Certification;

use App\Http\Controllers\Web\WebController;
use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class AddController extends WebController
{

public function name(): string
{
return "QRサービス券認証設定追加";
}

public function description(): string
{
return "QRサービス券認証設定を追加する";
}


public function __construct(protected AddParam $param)
{
parent::__construct();
}

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

$setting = CertificationAvailableSetting::whereShopId($param->shopId)
->whereParkingManagementCode($param->parkingManagementCode)
->whereDiscountTicketCode($param->discountTicketCode)
->firstOrNew();

$setting->fill($param->toArray());

$setting->save();

return $this->successResponse();
}
}

+ 25
- 0
app/Http/Controllers/Web/Shop/Config/Certification/AddParam.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config\Certification;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\Rule;
use App\Models\ColumnName;

/**
* @property string shopId
* @property int parkingManagementCode
* @property int discountTicketCode
*/
class AddParam extends BaseParam
{
public function rules(): array
{
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::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]),
];
}
}

+ 42
- 0
app/Http/Controllers/Web/Shop/Config/Certification/RemoveController.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config\Certification;

use App\Http\Controllers\Web\WebController;
use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class AddController extends WebController
{

public function name(): string
{
return "QRサービス券認証設定削除";
}

public function description(): string
{
return "QRサービス券認証設定を削除する";
}


public function __construct(protected AddParam $param)
{
parent::__construct();
}

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

$setting = CertificationAvailableSetting::whereShopId($param->shopId)
->whereParkingManagementCode($param->parkingManagementCode)
->whereDiscountTicketCode($param->discountTicketCode)
->firstOrFail();

$setting->delete();

return $this->successResponse();
}
}

+ 25
- 0
app/Http/Controllers/Web/Shop/Config/Certification/RemoveParam.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config\Certification;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\Rule;
use App\Models\ColumnName;

/**
* @property string shopId
* @property int parkingManagementCode
* @property int discountTicketCode
*/
class RemoveParam extends BaseParam
{
public function rules(): array
{
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::DISCOUNT_TICKET_CODE => $this->numeric([...Rule::discountTicketCode()]),
];
}
}

+ 56
- 0
app/Http/Controllers/Web/Shop/Config/ShopConfigDetailController.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config;

use App\Http\Controllers\Web\WebController;
use App\Logics\QRService\ChargeLogic;
use App\Models\HtpmsCustomer\Mst\Shop;
use App\Models\HtpmsCustomer\QRService\AcquisitionAvailableSetting;
use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting;
use App\Repositories\CertificationAvailableSettingRepository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class ShopConfigDetailController extends WebController
{

public function name(): string
{
return "店舗設定取得";
}

public function description(): string
{
return "店舗設定を取得する";
}


public function __construct(protected ShopConfigDetailParam $param, private CertificationAvailableSettingRepository $certificationRepository)
{
parent::__construct();
}

protected function run(Request $request): JsonResponse
{
$param = $this->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);
}
}

+ 19
- 0
app/Http/Controllers/Web/Shop/Config/ShopConfigDetailParam.php Просмотреть файл

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

namespace App\Http\Controllers\Web\Shop\Config;

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

/**
* @property string shopId
*/
class ShopConfigDetailParam extends BaseParam
{
public function rules(): array
{
return [
ColumnName::SHOP_ID => $this->str(),
];
}
}

+ 72
- 0
app/Repositories/CertificationAvailableSettingRepository.php Просмотреть файл

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

namespace App\Repositories;

use App\Models\ColumnName;
use App\Models\HtpmsCustomer\Existing\Parking;
use App\Models\HtpmsCustomer\QRService\CertificationAvailableSetting;
use App\Repositories\BaseRepository;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;

class CertificationAvailableSettingRepository extends BaseRepository
{

const CONDITION_SHOP_ID = ColumnName::SHOP_ID;

const TABLE_SETTING = "setting";
const TABLE_PARKING = "parking";


/**
* コレクションを取得する
*
* @param array $condition
* @return Collection<int, CertificationAvailableSettingRepositoryData>
*/
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;
}
}

+ 14
- 0
app/Repositories/CertificationAvailableSettingRepositoryData.php Просмотреть файл

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

namespace App\Repositories;


/**
* @property string id
* @property string name
* @property ?string parking_management_code
* @property ?string parking_name
*/
class CertificationAvailableSettingRepositoryData extends BaseRepositoryData
{
}

+ 1
- 0
lang/ja/validation.php Просмотреть файл

@@ -203,4 +203,5 @@ return array_merge([
],
'string' => '文字を入力してください',
'unique' => 'すでに使われています',
'not_regex' => '正しく入力してください',
]);

+ 5
- 0
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);


Загрузка…
Отмена
Сохранить