feat : API - 제품 Category 리스트

This commit is contained in:
2025-07-23 18:06:33 +09:00
parent 593d81c4cb
commit 4ac6c0a49e
3 changed files with 163 additions and 9 deletions

View File

@@ -0,0 +1,110 @@
<?php
namespace App\Http\Controllers\Api\V1;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Helpers\ApiResponse;
use App\Services\ProductService;
class ProductController extends Controller
{
public function index(Request $request)
{
//
}
/**
* @OA\Get (
* path="/v1/product/category",
* summary="제품 카테고리 목록 조회",
* description="제품 카테고리(최상위, parent_id=null) 리스트를 반환합니다.",
* tags={"Product"},
* security={{"ApiKeyAuth":{}}},
* @OA\Parameter(
* name="debug",
* in="query",
* required=false,
* description="디버그 모드 여부 (쿼리 확인용)",
* @OA\Schema(type="boolean", example=true)
* ),
* @OA\Response(
* response=200,
* description="카테고리 목록 조회 성공",
* @OA\JsonContent(
* type="object",
* @OA\Property(property="status", type="string", example="success"),
* @OA\Property(property="message", type="string", example="get 성공"),
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(
* type="object",
* @OA\Property(property="id", type="integer", example=4),
* @OA\Property(property="code_group", type="string", example="category"),
* @OA\Property(property="code", type="string", example="BP"),
* @OA\Property(property="name", type="string", example="절곡판"),
* @OA\Property(property="parent_id", type="integer", example=null),
* @OA\Property(property="attributes", type="string", example="[{...}]"),
* @OA\Property(property="description", type="string", example="절곡판"),
* @OA\Property(property="is_active", type="integer", example=1),
* @OA\Property(property="sort_order", type="integer", example=10),
* @OA\Property(property="created_at", type="string", format="date-time", example="2025-07-23T09:00:00Z"),
* @OA\Property(property="updated_at", type="string", format="date-time", example="2025-07-23T09:00:00Z")
* )
* )
* )
* ),
* @OA\Response(response=401, description="인증 실패"),
* @OA\Response(response=500, description="서버 에러")
* )
*/
public function getCategory(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return ProductService::getCategory($request);
}, '제품 카테고리 조회 성공', '제품 카테고리 조회 실패');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
public function show(Request $request, $userNo)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
//
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Services;
use App\Helpers\ApiResponse;
use App\Models\MemberCompany;
use App\Models\Products\CommonCode;
use Illuminate\Support\Facades\DB;
class ProductService
{
/**
* 회원 조회(리스트)
*/
public static function getCategory(string $userToken, bool $debug = false)
{
$query = CommonCode::where('code_group','category')->where('parent_id',null);
return ApiResponse::response('get', $query, true);
}
public static function getMyInfo($request, bool $debug = false)
{
$member = $request->user();
$company = MemberCompany::where('mc_num',$member->tn_num)->first();
$data=[
'member' => $member,
'company' => $company
];
return ApiResponse::response('result', $data, $debug);
}
}

View File

@@ -7,31 +7,38 @@
use App\Http\Controllers\Api\V1\MemberController;
use App\Http\Controllers\Api\V1\AdminApiController;
use App\Http\Controllers\Api\V1\FileController;
use App\Http\Controllers\Api\V1\ProductController;
// V1 초기 개발
Route::prefix('v1')->group(function () {
# 회원관련
Route::post('/login', [ApiController::class, 'login']);
Route::get('/login', [ApiController::class, 'login']);
Route::middleware('auth.apikey')->post('/logout', [ApiController::class, 'logout']);
# API KEY 인증
Route::middleware('auth.apikey')->get('/debug-apikey', [ApiController::class, 'debugApikey']);
# SAM API
Route::middleware('auth.apikey')->group(function () {
# Auth API
Route::post('/login', [ApiController::class, 'login']);
Route::get('/login', [ApiController::class, 'login']);
Route::middleware('auth.apikey')->post('/logout', [ApiController::class, 'logout']);
# API KEY 인증
Route::middleware('auth.apikey')->get('/debug-apikey', [ApiController::class, 'debugApikey']);
// Admin API
Route::post('/admin/list', [AdminApiController::class, 'list'])->middleware('permission:SR'); // 관리자 리스트 조회
// Common API
Route::prefix('common')->group(function () {
Route::get('/code', [CommonController::class, 'getComeCode'])->name('common.code'); // 공통코드 조회
});
// Product API
Route::prefix('product')->group(function () {
Route::get('/category', [ProductController::class, 'getCategory'])->name('product.category'); // 제품 카테고리
});
// Member API
Route::prefix('member')->group(function () {
Route::get('/me', [MemberController::class, 'me'])->name('member.me'); // 회원 목록 조회