增加了手机操作端
This commit is contained in:
@@ -51,6 +51,30 @@ class MaterialsController
|
||||
}
|
||||
|
||||
public function download(Request $request)
|
||||
{
|
||||
$file = $this->resolveDownloadFile($request);
|
||||
if ($file instanceof \support\Response) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return redirect($file['url'], 302);
|
||||
}
|
||||
|
||||
public function downloadLink(Request $request)
|
||||
{
|
||||
$file = $this->resolveDownloadFile($request);
|
||||
if ($file instanceof \support\Response) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return api_success([
|
||||
'filename' => $file['filename'],
|
||||
'url' => $file['url'],
|
||||
'size' => $file['size'],
|
||||
], '下载链接已生成');
|
||||
}
|
||||
|
||||
private function resolveDownloadFile(Request $request): array|\support\Response
|
||||
{
|
||||
$id = (int)$request->input('id', 0);
|
||||
if ($id <= 0) {
|
||||
@@ -65,12 +89,43 @@ class MaterialsController
|
||||
return api_error('物料批次下载失败', 500, ['detail' => $e->getMessage()]);
|
||||
}
|
||||
|
||||
$filename = rawurlencode($file['filename']);
|
||||
return response($file['content'], 200, [
|
||||
'Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
'Content-Disposition' => "attachment; filename=\"{$file['filename']}\"; filename*=UTF-8''{$filename}",
|
||||
'Cache-Control' => 'no-store, no-cache, must-revalidate',
|
||||
]);
|
||||
return $file;
|
||||
}
|
||||
|
||||
public function invalidateBatch(Request $request)
|
||||
{
|
||||
$id = (int)$request->input('id', 0);
|
||||
if ($id <= 0) {
|
||||
return api_error('物料批次 ID 不能为空', 422);
|
||||
}
|
||||
|
||||
try {
|
||||
return api_success($this->service()->invalidateBatch($id, $request), '物料批次已失效');
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
return api_error($e->getMessage(), 422);
|
||||
} catch (\RuntimeException $e) {
|
||||
return api_error($e->getMessage(), $e->getCode() ?: 500);
|
||||
} catch (\Throwable $e) {
|
||||
return api_error('物料批次失效失败', 500, ['detail' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
public function invalidateTag(Request $request)
|
||||
{
|
||||
$id = (int)$request->input('id', 0);
|
||||
if ($id <= 0) {
|
||||
return api_error('物料条码 ID 不能为空', 422);
|
||||
}
|
||||
|
||||
try {
|
||||
return api_success($this->service()->invalidateTag($id, $request), '物料条码已失效');
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
return api_error($e->getMessage(), 422);
|
||||
} catch (\RuntimeException $e) {
|
||||
return api_error($e->getMessage(), $e->getCode() ?: 500);
|
||||
} catch (\Throwable $e) {
|
||||
return api_error('物料条码失效失败', 500, ['detail' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
private function service(): MaterialTagService
|
||||
|
||||
Reference in New Issue
Block a user