소스 검색

QR取得周辺の整備

develop
sosuke.iwabuchi 1 년 전
부모
커밋
5199645098
14개의 변경된 파일202개의 추가작업 그리고 8개의 파일을 삭제
  1. +43
    -0
      app/Http/Controllers/Web/LoginUser/ShopListController.php
  2. +23
    -0
      app/Http/Controllers/Web/LoginUser/ShopListParam.php
  3. +48
    -0
      app/Http/Controllers/Web/QRService/Acquisition/GetAcquisitionTokenController.php
  4. +9
    -0
      app/Http/Controllers/Web/QRService/Acquisition/GetAcquisitionTokenParam.php
  5. +42
    -0
      app/Http/Controllers/Web/QRService/Acquisition/RefreshAcquisitionTokenController.php
  6. +9
    -0
      app/Http/Controllers/Web/QRService/Acquisition/RefreshGetAcquisitionTokenParam.php
  7. +8
    -3
      app/Http/Controllers/Web/QRService/CreateTicketController.php
  8. +1
    -0
      app/Logics/LoginUser/LoginUserLogic.php
  9. +4
    -1
      app/Logics/Shop/ShopLogic.php
  10. +1
    -0
      app/Models/User.php
  11. +3
    -2
      app/Repositories/LoginUserRepository.php
  12. +5
    -0
      database/migrations/2014_10_12_000000_create_tbl3_mst_users.php
  13. +1
    -0
      database/migrations/2024_03_13_182509_create_tbl3_mst_shops.php
  14. +5
    -2
      routes/api.php

+ 43
- 0
app/Http/Controllers/Web/LoginUser/ShopListController.php 파일 보기

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

namespace App\Http\Controllers\Web\LoginUser;

use App\Codes\UserRole;
use App\Http\Controllers\Web\WebController;
use App\Repositories\LoginUserRepository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class ShopListController extends WebController
{

public function name(): string
{
return "店舗ログインユーザ一覧取得";
}

public function description(): string
{
return "店舗ログインユーザ一覧を取得する";
}


public function __construct(protected ShopListParam $param, private LoginUserRepository $repository)
{
parent::__construct();
}

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

$list = $this->repository->get([
...$param->toArray(),
LoginUserRepository::CONDITION_ROLE => UserRole::SHOP->value,
]);
$res = [
"list" => $list,
];
return $this->successResponse($res);
}
}

+ 23
- 0
app/Http/Controllers/Web/LoginUser/ShopListParam.php 파일 보기

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

namespace App\Http\Controllers\Web\LoginUser;

use App\Http\Controllers\Web\BaseParam;
use App\Http\Controllers\Web\SortableParam;
use App\Repositories\LoginUserRepository;

/**
* @property ?string name
* @property ?string $email
*/
class ShopListParam extends BaseParam implements SortableParam
{
public function rules(): array
{
return [
LoginUserRepository::CONDITION_EMAIL => $this->str(true),
LoginUserRepository::CONDITION_NAME => $this->str(true),
...$this->sortableRules(),
];
}
}

+ 48
- 0
app/Http/Controllers/Web/QRService/Acquisition/GetAcquisitionTokenController.php 파일 보기

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

namespace App\Http\Controllers\Web\QRService\Acquisition;

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

class GetAcquisitionTokenController extends WebController
{

public function name(): string
{
return "サービス券取得用トークン取得";
}

public function description(): string
{
return "サービス券取得用トークンを取得する";
}


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

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

$token = AcquisitionTicketToken::whereShopId($shopId)->first();

if ($token === null) {
$token = new AcquisitionTicketToken();
$token->shop_id = $shopId;
$token->token = Str::uuid()->toString();
$token->save();
}

$res = [
"token" => $token->token,
];
return $this->successResponse($res);
}
}

+ 9
- 0
app/Http/Controllers/Web/QRService/Acquisition/GetAcquisitionTokenParam.php 파일 보기

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

namespace App\Http\Controllers\Web\QRService\Acquisition;

use App\Http\Controllers\Web\NoneParams;

class GetAcquisitionTokenParam extends NoneParams
{
}

+ 42
- 0
app/Http/Controllers/Web/QRService/Acquisition/RefreshAcquisitionTokenController.php 파일 보기

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

namespace App\Http\Controllers\Web\QRService\Acquisition;

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

class RefreshAcquisitionTokenController extends WebController
{

public function name(): string
{
return "サービス券取得用トークンリフレッシュ";
}

public function description(): string
{
return "サービス券取得用トークンをリフレッシュする";
}


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

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

$token = AcquisitionTicketToken::whereShopId($shopId)->firstOrNew();

$token->shop_id = $shopId;
$token->token = Str::uuid()->toString();
$token->save();

return $this->successResponse();
}
}

+ 9
- 0
app/Http/Controllers/Web/QRService/Acquisition/RefreshGetAcquisitionTokenParam.php 파일 보기

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

namespace App\Http\Controllers\Web\QRService\Acquisition;

use App\Http\Controllers\Web\NoneParams;

class RefreshGetAcquisitionTokenParam extends NoneParams
{
}

+ 8
- 3
app/Http/Controllers/Web/QRService/CreateTicketController.php 파일 보기

@@ -6,9 +6,9 @@ use App\Http\Controllers\Web\WebController;
use App\Logics\QRService\CreateLogic;
use App\Logics\QRService\QRCryptoLogic;
use App\Models\HtpmsCustomer\QRService\AcquisitionTicket;
use App\Models\HtpmsCustomer\QRService\AcquisitionTicketToken;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class CreateTicketController extends WebController
{
@@ -33,9 +33,14 @@ class CreateTicketController extends WebController
{
$param = $this->param;

$token = AcquisitionTicketToken::whereToken($param->token)->first();
if ($token === null) {
return $this->failedResponse();
}

if ($param->ticketId) {
$ticket = AcquisitionTicket::findOrFail($param->ticketId);
if (!$ticket->canUse()) {
$ticket = AcquisitionTicket::find($param->ticketId);
if ($ticket === null || !$ticket->canUse()) {
$ticket = CreateLogic::create($param->token);
}
} else {


+ 1
- 0
app/Logics/LoginUser/LoginUserLogic.php 파일 보기

@@ -30,6 +30,7 @@ class LoginUserLogic
$this->user = $user;
$user->role = UserRole::SHOP;
$user->shop_id = $shop->id;
$user->shop_name = $shop->name;

// チェック処理
$this->checkEmailForCreate();


+ 4
- 1
app/Logics/Shop/ShopLogic.php 파일 보기

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

namespace App\Logics\Shop;

use App\Exceptions\ParamException;
use App\Models\HtpmsCustomer\Deposit\Deposit;
use App\Models\HtpmsCustomer\Mst\Shop;
use App\Models\User;
@@ -18,7 +19,9 @@ class ShopLogic
$this->shop = $shop;

// チェック処理

if (Shop::whereName($shop->name)->exists()) {
ParamException::throw(Shop::COL_NAME_NAME, trans('validation.unique'));
}

$shop->save();



+ 1
- 0
app/Models/User.php 파일 보기

@@ -32,6 +32,7 @@ class User extends Authenticatable implements IModelFeature
const COL_NAME_CUSTOMER_ID = 'customer_id';
const COL_NAME_CUSTOMER_CODE = 'customer_code';
const COL_NAME_SHOP_ID = 'shop_id';
const COL_NAME_SHOP_NAME = 'shop_name';

const COL_NAME_CREATED_BY = ColumnName::CREATED_BY;
const COL_NAME_UPDATED_BY = ColumnName::UPDATED_BY;


+ 3
- 2
app/Repositories/LoginUserRepository.php 파일 보기

@@ -3,6 +3,7 @@
namespace App\Repositories;

use App\Models\Htpms\MstCustomer;
use App\Models\HtpmsCustomer\Mst\Shop;
use App\Models\User;
use App\Repositories\BaseRepository;
use Illuminate\Database\Query\JoinClause;
@@ -20,7 +21,6 @@ class LoginUserRepository extends BaseRepository
const TABLE_USER = "user";
const TABLE_CUSTOMER = "customer";


/**
* コレクションを取得する
*
@@ -39,7 +39,6 @@ class LoginUserRepository extends BaseRepository
);
});


// -----検索条件
// ID
$this->where($table, $condition, static::CONDITION_ID, $this->makeColumnName([static::TABLE_USER, User::COL_NAME_ID]));
@@ -82,6 +81,8 @@ class LoginUserRepository extends BaseRepository
$this->makeColumnNameForSelect([$user, User::COL_NAME_NAME]),
$this->makeColumnNameForSelect([$user, User::COL_NAME_EMAIL]),
$this->makeColumnNameForSelect([$user, User::COL_NAME_CUSTOMER_CODE]),
$this->makeColumnNameForSelect([$user, User::COL_NAME_SHOP_ID]),
$this->makeColumnNameForSelect([$user, User::COL_NAME_SHOP_NAME]),
$this->makeColumnNameForSelect([$customer, MstCustomer::COL_NAME_CUSTOMER_NAME]),
];



+ 5
- 0
database/migrations/2014_10_12_000000_create_tbl3_mst_users.php 파일 보기

@@ -1,5 +1,6 @@
<?php

use App\Models\ColumnName;
use App\Util\MigrationHelper;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
@@ -23,6 +24,10 @@ return new class extends Migration
$table->string('customer_code')->nullable()->comment("顧客コード");
$table->string('email')->comment("Email");
$table->text('password')->nullable()->comment("ログインパスワード");
$table->string('shop_name')->nullable()->comment("店舗名");

$helper->index(1, ["customer_code"]);
$helper->index(2, [ColumnName::SHOP_ID]);
};

MigrationHelper::createTable("tbl3_mst_users", $schema, "HTD ログインユーザー");


+ 1
- 0
database/migrations/2024_03_13_182509_create_tbl3_mst_shops.php 파일 보기

@@ -28,6 +28,7 @@ return new class extends Migration

MigrationHelper::createTable("tbl3_mst_shops", $schema, "HTD 店舗マスタ");
MigrationHelper::createTable("tbl3_mst_shop_histories", $schema, "HTD 店舗マスタ履歴");
MigrationHelper::addUnique("tbl3_mst_shops", 1, ["name"]);
}

/**


+ 5
- 2
routes/api.php 파일 보기

@@ -24,6 +24,7 @@ RouteHelper::get('/qr-service/get-ticket', App\Http\Controllers\Web\QRService\Cr
Route::middleware('auth:sanctum')->group(function () {

// 共通ルート
RouteHelper::get('/role/switch/end', App\Http\Controllers\Web\Auth\SwitchEndController::class);

// 管理者ルート
Route::middleware(RouteHelper::role([UserRole::ADMIN]))->group(function () {
@@ -31,11 +32,12 @@ Route::middleware('auth:sanctum')->group(function () {
RouteHelper::get('/customer/list', App\Http\Controllers\Web\Customer\CustomerListController::class);
RouteHelper::get('/login-user/customer/list', App\Http\Controllers\Web\LoginUser\CustomerListController::class);
RouteHelper::post('/login-user/customer/register', App\Http\Controllers\Web\LoginUser\CustomerRegisterController::class);
RouteHelper::post('/login-user/shop/register', App\Http\Controllers\Web\LoginUser\CustomerRegisterController::class);
});

// 運営会社ルート
Route::middleware(RouteHelper::role([UserRole::CUSTOMER]))->group(function () {
RouteHelper::get('/login-user/shop/list', App\Http\Controllers\Web\LoginUser\ShopListController::class);
RouteHelper::post('/login-user/shop/register', App\Http\Controllers\Web\LoginUser\ShopRegisterController::class);
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);
@@ -61,10 +63,11 @@ Route::middleware('auth:sanctum')->group(function () {
// 店舗ルート
Route::middleware(RouteHelper::role([UserRole::SHOP]))->group(function () {
RouteHelper::get('/shop/deposit', App\Http\Controllers\Web\Shop\MyDepositController::class);
RouteHelper::get('/qr-service/acquisition/token', App\Http\Controllers\Web\QRService\Acquisition\GetAcquisitionTokenController::class);
RouteHelper::post('/qr-service/acquisition/token/refresh', App\Http\Controllers\Web\QRService\Acquisition\RefreshAcquisitionTokenController::class);
});

// 管理者運営会社ルート
Route::middleware(RouteHelper::role([UserRole::ADMIN, UserRole::CUSTOMER]))->group(function () {
RouteHelper::get('/role/switch/end', App\Http\Controllers\Web\Auth\SwitchEndController::class);
});
});

Loading…
취소
저장