feat : API - 제품 Category 리스트
This commit is contained in:
110
app/Http/Controllers/Api/V1/ProductController.php
Normal file
110
app/Http/Controllers/Api/V1/ProductController.php
Normal 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)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
37
app/Services/ProductService.php
Normal file
37
app/Services/ProductService.php
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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'); // 회원 목록 조회
|
||||
|
||||
Reference in New Issue
Block a user