fix: 품목관리 API 응답 및 라우팅 오류 수정

- ItemsController: show/destroy 메서드 파라미터 타입 수정 (int → 동적 캐스팅)
- ItemsController: store/update에서 product_type → item_type 변환 로직 추가
- ItemService: 정렬 순서 수정 (최신 품목이 먼저 표시되도록 desc 추가)
- ItemService: code 키를 item_code로 변경 (ApiResponse::handle의 HTTP 상태 코드 충돌 방지)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-14 20:04:29 +09:00
parent 3d1dbfc3ca
commit b82f9c786b
2 changed files with 34 additions and 6 deletions

View File

@@ -42,8 +42,9 @@ public function index(Request $request)
*
* @param string|null type 품목 유형 (선택적 - 없으면 ID만으로 조회)
*/
public function show(Request $request, int $id)
public function show(Request $request, $id)
{
$id = (int) $id;
return ApiResponse::handle(function () use ($request, $id) {
// item_type 선택적 (없으면 ID만으로 items 테이블에서 조회)
$itemType = $request->input('type') ?? $request->input('item_type');
@@ -87,7 +88,14 @@ public function showByCode(Request $request, string $code)
public function store(ItemStoreRequest $request)
{
return ApiResponse::handle(function () use ($request) {
return $this->service->store($request->all());
// Request는 product_type 검증, Service는 item_type 사용
$data = $request->all();
if (isset($data['product_type'])) {
$data['item_type'] = $data['product_type'];
unset($data['product_type']);
}
return $this->service->store($data);
}, __('message.item.created'));
}
@@ -99,7 +107,14 @@ public function store(ItemStoreRequest $request)
public function update(int $id, ItemUpdateRequest $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return $this->service->update($id, $request->all());
// Request는 product_type 검증, Service는 item_type 사용
$data = $request->all();
if (isset($data['product_type'])) {
$data['item_type'] = $data['product_type'];
unset($data['product_type']);
}
return $this->service->update($id, $data);
}, __('message.item.updated'));
}
@@ -127,8 +142,9 @@ public function stats(Request $request)
*
* @param string type 품목 유형 (필수 - 동적 테이블 라우팅)
*/
public function destroy(Request $request, int $id)
public function destroy(Request $request, $id)
{
$id = (int) $id;
return ApiResponse::handle(function () use ($request, $id) {
// item_type 필수 (동적 테이블 라우팅에 사용)
$itemType = strtoupper($request->input('type') ?? $request->input('item_type') ?? '');