fix: ItemsFileController 파일 API 오류 수정

- delete() 메서드  타입을 mixed로 변경 + 내부 캐스팅
- userId null 처리 (auth()->id() ?? app('api_user'))
- deleteFile() private 메서드로 삭제 로직 일원화
- getFileUrl()을 file_id 기반으로 변경 (/api/v1/files/{id}/download)
- LOGICAL_RELATIONSHIPS.md items 통합 반영
This commit is contained in:
2025-12-15 13:56:12 +09:00
parent 18ef35a873
commit aaf7979d5f
2 changed files with 37 additions and 64 deletions

View File

@@ -71,7 +71,7 @@ public function upload(int $id, ItemFileUploadRequest $request)
{
return ApiResponse::handle(function () use ($id, $request) {
$tenantId = app('tenant_id');
$userId = auth()->id();
$userId = auth()->id() ?? app('api_user');
$validated = $request->validated();
$fieldKey = $validated['field_key'];
$uploadedFile = $validated['file'];
@@ -92,7 +92,7 @@ public function upload(int $id, ItemFileUploadRequest $request)
->first();
if ($existingFile) {
$existingFile->softDeleteFile($userId);
$this->deleteFile($existingFile);
$replaced = true;
}
}
@@ -135,7 +135,7 @@ public function upload(int $id, ItemFileUploadRequest $request)
return [
'file_id' => $file->id,
'field_key' => $fieldKey,
'file_url' => $this->getFileUrl($filePath),
'file_url' => $this->getFileUrl($file->id),
'file_path' => $filePath,
'file_name' => $displayName,
'file_size' => $file->file_size,
@@ -150,11 +150,12 @@ public function upload(int $id, ItemFileUploadRequest $request)
*
* DELETE /api/v1/items/{id}/files/{fileId}
*/
public function delete(int $id, int $fileId, Request $request)
public function delete(int $id, mixed $fileId, Request $request)
{
$fileId = (int) $fileId;
return ApiResponse::handle(function () use ($id, $fileId) {
$tenantId = app('tenant_id');
$userId = auth()->id();
// 품목 존재 확인
$this->getItemById($id, $tenantId);
@@ -172,7 +173,7 @@ public function delete(int $id, int $fileId, Request $request)
}
// Soft delete
$file->softDeleteFile($userId);
$this->deleteFile($file);
return [
'file_id' => $fileId,
@@ -197,6 +198,15 @@ private function getItemById(int $id, int $tenantId): Item
return $item;
}
/**
* 파일 삭제 (일원화된 삭제 로직)
*/
private function deleteFile(File $file): void
{
$userId = (int) (auth()->id() ?? app('api_user'));
$file->softDeleteFile($userId);
}
/**
* 파일 응답 포맷
*/
@@ -206,7 +216,7 @@ private function formatFileResponse(File $file): array
'id' => $file->id,
'file_name' => $file->display_name,
'file_path' => $file->file_path,
'file_url' => $this->getFileUrl($file->file_path),
'file_url' => $this->getFileUrl($file->id),
'file_size' => $file->file_size,
'mime_type' => $file->mime_type,
'file_type' => $file->file_type,
@@ -218,9 +228,9 @@ private function formatFileResponse(File $file): array
/**
* 파일 URL 생성
*/
private function getFileUrl(string $filePath): string
private function getFileUrl(int $fileId): string
{
return url('/api/v1/files/download/'.base64_encode($filePath));
return url("/api/v1/files/{$fileId}/download");
}
/**