fix : 테넌트별 옵션설정 작업

- Tenant Fields
- Tenant Option Groups
- Tenant Option Values
- Tenant Profiles
This commit is contained in:
2025-08-18 19:03:46 +09:00
parent 97a581f3ae
commit aa190bf48d
16 changed files with 1793 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
<?php
namespace App\Http\Controllers\Api\V1;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Services\TenantFieldSettingService;
use App\Helpers\ApiResponse;
class TenantFieldSettingController extends Controller
{
// GET /v1/fields
public function index(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return TenantFieldSettingService::index($request->all());
}, '테넌트 필드 효과값 목록 조회');
}
// PUT /v1/fields/bulk
public function bulkUpsert(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return TenantFieldSettingService::bulkUpsert($request->all());
}, '테넌트 필드 설정 대량 저장');
}
// PATCH /v1/fields/{key}
public function updateOne(Request $request, string $key)
{
return ApiResponse::handle(function () use ($request, $key) {
return TenantFieldSettingService::updateOne($key, $request->all());
}, '테넌트 필드 설정 단건 수정');
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers\Api\V1;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Services\TenantOptionGroupService;
use App\Helpers\ApiResponse;
class TenantOptionGroupController extends Controller
{
// GET /v1/opt-groups
public function index(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return TenantOptionGroupService::index($request->all());
}, '옵션 그룹 목록 조회');
}
// POST /v1/opt-groups
public function store(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return TenantOptionGroupService::store($request->all());
}, '옵션 그룹 생성');
}
// GET /v1/opt-groups/{id}
public function show($id)
{
return ApiResponse::handle(function () use ($id) {
return TenantOptionGroupService::show($id);
}, '옵션 그룹 단건 조회');
}
// PATCH /v1/opt-groups/{id}
public function update(Request $request, $id)
{
return ApiResponse::handle(function () use ($request, $id) {
return TenantOptionGroupService::update($id, $request->all());
}, '옵션 그룹 수정');
}
// DELETE /v1/opt-groups/{id}
public function destroy($id)
{
return ApiResponse::handle(function () use ($id) {
return TenantOptionGroupService::destroy($id);
}, '옵션 그룹 삭제');
}
}

View File

@@ -0,0 +1,59 @@
<?php
namespace App\Http\Controllers\Api\V1;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Services\TenantOptionValueService;
use App\Helpers\ApiResponse;
class TenantOptionValueController extends Controller
{
// GET /v1/opt-groups/{gid}/values
public function index(Request $request, $gid)
{
return ApiResponse::handle(function () use ($request, $gid) {
return TenantOptionValueService::index($gid, $request->all());
}, '옵션 값 목록 조회');
}
// POST /v1/opt-groups/{gid}/values
public function store(Request $request, $gid)
{
return ApiResponse::handle(function () use ($request, $gid) {
return TenantOptionValueService::store($gid, $request->all());
}, '옵션 값 생성');
}
// GET /v1/opt-groups/{gid}/values/{id}
public function show($gid, $id)
{
return ApiResponse::handle(function () use ($gid, $id) {
return TenantOptionValueService::show($gid, $id);
}, '옵션 값 단건 조회');
}
// PATCH /v1/opt-groups/{gid}/values/{id}
public function update(Request $request, $gid, $id)
{
return ApiResponse::handle(function () use ($request, $gid, $id) {
return TenantOptionValueService::update($gid, $id, $request->all());
}, '옵션 값 수정');
}
// DELETE /v1/opt-groups/{gid}/values/{id}
public function destroy($gid, $id)
{
return ApiResponse::handle(function () use ($gid, $id) {
return TenantOptionValueService::destroy($gid, $id);
}, '옵션 값 삭제');
}
// PATCH /v1/opt-groups/{gid}/values/reorder
public function reorder(Request $request, $gid)
{
return ApiResponse::handle(function () use ($request, $gid) {
return TenantOptionValueService::reorder($gid, $request->all());
}, '옵션 값 정렬 순서 변경');
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers\Api\V1;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Services\TenantUserProfileService;
use App\Helpers\ApiResponse;
class TenantUserProfileController extends Controller
{
// GET /v1/profiles
public function index(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return TenantUserProfileService::index($request->all());
}, '회원 프로필 목록 조회');
}
// GET /v1/profiles/{userId}
public function show($userId)
{
return ApiResponse::handle(function () use ($userId) {
return TenantUserProfileService::show($userId);
}, '회원 프로필 단건 조회');
}
// PATCH /v1/profiles/{userId}
public function update(Request $request, $userId)
{
return ApiResponse::handle(function () use ($request, $userId) {
return TenantUserProfileService::update($userId, $request->all());
}, '회원 프로필 수정(관리자)');
}
// GET /v1/profiles/me
public function me(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return TenantUserProfileService::me($request->all());
}, '내 프로필 조회');
}
// PATCH /v1/profiles/me
public function updateMe(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return TenantUserProfileService::updateMe($request->all());
}, '내 프로필 수정');
}
}