tansci-boot/antdv-next-admin/mock/handlers/file.mock.ts

97 lines
2.6 KiB
TypeScript

import { defineMock } from "vite-plugin-mock-dev-server";
import { sysFiles } from "../data/file.data";
export default defineMock([
{
url: "/api/file/list",
method: "GET",
body: (req) => {
const { name, ext, storage, page = 1, pageSize = 20 } = req.query;
let filtered = [...sysFiles];
if (name)
filtered = filtered.filter((item) =>
item.originalName.includes(name as string),
);
if (ext) filtered = filtered.filter((item) => item.ext === ext);
if (storage)
filtered = filtered.filter((item) => item.storage === storage);
const start = (Number(page) - 1) * Number(pageSize);
const list = filtered.slice(start, start + Number(pageSize));
return {
code: 200,
message: "success",
success: true,
data: {
list,
total: filtered.length,
current: Number(page),
pageSize: Number(pageSize),
},
};
},
},
{
url: "/api/file/:id",
method: "GET",
body: (req) => {
const file = sysFiles.find((item) => item.id === req.params.id);
if (!file) return { code: 404, message: "文件不存在", success: false };
return { code: 200, message: "success", success: true, data: file };
},
},
{
url: "/api/file/upload",
method: "POST",
body: (req) => {
const { originalName, size, mimeType, storage = "local" } = req.body;
if (!originalName) {
return { code: 400, message: "文件名不能为空", success: false };
}
const ext = originalName.includes(".")
? originalName.split(".").pop()
: "";
const newFile = {
id: `file-${Date.now()}`,
originalName,
storedName: `${Date.now()}-${originalName}`,
size: size || 0,
ext: ext || "",
mimeType: mimeType || "application/octet-stream",
storage,
url: `/uploads/${Date.now()}-${originalName}`,
uploader: "admin",
uploadTime: new Date().toISOString().replace("T", " ").slice(0, 19),
};
sysFiles.unshift(newFile);
return {
code: 200,
message: "上传成功",
success: true,
data: newFile,
};
},
},
{
url: "/api/file/:id",
method: "DELETE",
body: (req) => {
const index = sysFiles.findIndex((item) => item.id === req.params.id);
if (index === -1)
return { code: 404, message: "文件不存在", success: false };
sysFiles.splice(index, 1);
return { code: 200, message: "删除成功", success: true };
},
},
]);