初始版本,目前线上可用

This commit is contained in:
2025-11-19 12:49:16 +08:00
commit cb7f1c45e8
178 changed files with 30336 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
import dayjs from "dayjs";
import { Request, Response } from "express";
export function filterObjEmptyVal(obj: { [key: string]: any }) {
if (!obj) return {};
if (Array.isArray(obj))
throw Error("你传入了一个数组需要的是一个Object对象");
let emptyObj = {};
for (let [key, value] of Object.entries(obj)) {
if (value || value === 0) emptyObj[key] = value;
}
return emptyObj;
}
export function getNowDateStr() {
return dayjs().format("YYYY-MM-DD HH:mm:ss");
}
export function buildTree(items, parentId = 0) {
return items
.filter((item) => item.parentId === parentId)
.map((item) => ({
...item,
children: buildTree(items, item.id),
}));
}
export function getPaginationParams(req: Request): {
pageSize: number;
pageNumber: number;
} {
const { pageSize = 10, pageNumber = 1 } =
req.method === "GET" ? req.query : req.body;
return {
pageSize: Math.max(1, parseInt(pageSize as string, 10)),
pageNumber: Math.max(1, parseInt(pageNumber as string, 10)),
};
}
/** 统一错误处理 */
export function handleError(res: Response, error: any) {
const message = error instanceof Error ? error.message : "未知错误";
res.status(500).json({
code: 500,
msg: message,
});
}
/** 处理日期参数 */
export default function parseRangDate(req: Request) {
let { startDate: reqStart, endDate: reqEnd } =
req.method === "GET" ? req.query : req.body;
const dateFormat = "YYYY-MM-DD HH:mm:ss";
if (!reqStart && !reqEnd) return {};
// 验证必填参数
if (!reqStart) reqStart = dayjs().startOf("day").toDate();
// 处理起始日期
const start = dayjs(reqStart as string, dateFormat);
if (!start.isValid()) throw new Error("起始日期格式错误");
// 处理结束日期
let end = start;
if (reqEnd) {
end = dayjs(reqEnd as string, dateFormat);
if (!end.isValid()) throw new Error("结束日期格式错误");
if (end.isBefore(start)) throw new Error("结束日期不能早于起始日期");
}
// 生成时间范围
return {
startDate: start.format("YYYY-MM-DD HH:mm:ss"),
endDate: (reqEnd ? end : dayjs()).format("YYYY-MM-DD HH:mm:ss"),
};
}