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:
@@ -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");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user