feat: 优化模板代码,增加服务端模板

This commit is contained in:
2025-03-15 15:50:28 +08:00
parent c2cbc1b1d6
commit 8af39a1e88
68 changed files with 96980 additions and 3536 deletions
+157
View File
@@ -0,0 +1,157 @@
import cuid from "cuid";
// import getDb from "../dbServer.mjs";
import {getDb} from "funjia-server/lib/funjia-server.mjs";
import _ from "lodash";
const getDynamic = (router) => {
router.post('/api/dynamic/list/:tableName', async (ctx) => {
// 设置头类型, 如果不设置,会直接下载该页面
ctx.type = 'application/json';
const db = await getDb();
const body = ctx.request.body;
const data = db.data[ctx.params.tableName]?.filter((item) => {
let isMatch = true;
for (let field in body) {
if (["page", "pageSize"].includes(field)) {
continue;
}
if (typeof (item[field]) == "string") {
isMatch = item[field]?.indexOf?.(body[field]) > -1;
} else if (typeof (item[field]) == "number") {
isMatch = item[field] == body[field];
}
if (!isMatch)
break;
}
return isMatch;
});
const {
page,
pageSize
} = body;
let batchData = data;
if (page && pageSize) {
batchData = data.slice((page - 1) * pageSize, page * pageSize);
}
ctx.body = {
code: 0,
data: batchData || [],
total: data.length
};
});
router.get('/api/dynamic/:tableName', async (ctx) => {
// 设置头类型, 如果不设置,会直接下载该页面
ctx.type = 'application/json';
const db = await getDb();
const data = db.data[ctx.params.tableName];
const query = ctx.request.query;
console.log("参数:", query, ctx.request.body, ctx.query);
let detail = {};
if (query.id && data) {
detail = data.find((item) => {
return item.id == query.id;
});
}
ctx.body = {
code: 0,
data: detail || {}
};
});
router.post('/api/dynamic/add/:tableName', async (ctx) => {
ctx.type = 'application/json';
const tableName=ctx.params.tableName;
const db = await getDb();
// You can also use this syntax if you prefer
if (!db.data[tableName])
db.data[tableName] = [];
const dynamic = db.data[tableName];
const data = ctx.request.body;
console.log("add:", data);
data.id = cuid();
data.createTime = new Date();
dynamic.push(data)
// Write db.data content to db.json
await db.write()
ctx.body = {
code: 0,
};
});
router.post('/api/dynamic/upd/:tableName', async (ctx) => {
ctx.type = 'application/json';
const tableName=ctx.params.tableName;
const db = await getDb();
// You can also use this syntax if you prefer
if (!db.data[tableName])
db.data = {
dynamic: []
}
const dynamic = db.data[tableName];
const data = ctx.request.body;
const id = data.id;
console.log("数据Id", id);
if (id && dynamic) {
const currentDetail = dynamic.find(item => item.id == id);
if (currentDetail) {
_.merge(currentDetail, data);
}
// Write db.data content to db.json
await db.write()
}
ctx.body = {
code: 0,
};
});
router.post('/api/dynamic/delete/:tableName', async (ctx) => {
ctx.type = 'application/json';
const tableName=ctx.params.tableName;
const db = await getDb();
// You can also use this syntax if you prefer
if (!db.data[tableName])
db.data = {
[tableName]: []
}
const dynamic = db.data[tableName];
const data = ctx.request.body;
const ids = data.ids;
if (ids?.length > 0 && dynamic) {
let id = null;
for (let i = 0; i < ids.length; i++) {
id = ids[i];
const idx = dynamic.findIndex(item => item.id == id);
if (idx != -1) {
dynamic.splice(idx, 1);
}
}
// Write db.data content to db.json
await db.write()
}
ctx.body = {
code: 0,
};
});
}
export default getDynamic;