import express from "express"; const router = express.Router(); import { v4 as uuidv4 } from "uuid"; import { shanghaiTime, shanghaiTimeFormat } from "#utils"; import { addMoreRecord, updataMoreRecord, delMoreRecord, record_update, getRecordInfoById, getFileByRecordId, delFileByRecordId, delByRecordId, getMoreRecordList, getMoreRecordByMoreId, getTypesById, } from "#db"; import { getTypeInfoFn, setFilesById, setFilesByRecord, getFileUrl } from "./utils.js"; // 添加多个账单记录 router.post("/", async function (req, res) { const { name = "", remark = "", book_id = "", start_time = "", end_time = "", total_fee = 0, log_day = '', type = "", files = [], userInfo = {}, } = req.body; const more_id = `M_${uuidv4()}`; const type_id = await getTypeInfoFn({ userInfo, book_id, type }); await addMoreRecord({ more_id, book_id, type_id: type_id, author_id: userInfo.user_id, total_fee, name, remark, log_day, start_time: shanghaiTimeFormat(start_time, "YYYY-MM-DD") + " 00:00:00", end_time: shanghaiTimeFormat(end_time, "YYYY-MM-DD") + " 23:59:59", create_time: shanghaiTime().format("YYYY-MM-DD HH:mm:ss"), update_time: shanghaiTime().format("YYYY-MM-DD HH:mm:ss"), }); await setFilesByRecord({ files, book_id, more_id, userInfo, }); res.json({ code: 200, data: { record_id: more_id, }, }); }); // 编辑多个账单记录 router.put("/:more_id", async function (req, res) { const more_id = req.params.more_id; // 获取 fileId 参数 const { name = "", remark = "", book_id = "", start_time = "", end_time = "", total_fee = 0, type = "", log_day = "", files = [], userInfo = {}, } = req.body; // 更新附件信息 await setFilesById({ record_id: more_id, userInfo, book_id, files, }); // 更新类型 const typeId = await getTypeInfoFn({ userInfo, book_id, type, }); // 更新数据内容 const recordInfo = await updataMoreRecord({ name, more_id, type_id: typeId, author_id: userInfo.user_id, total_fee: total_fee, remark: remark, log_day, start_time: shanghaiTimeFormat(start_time, "YYYY-MM-DD") + " 00:00:00", end_time: shanghaiTimeFormat(end_time, "YYYY-MM-DD") + " 23:59:59", update_time: shanghaiTime().format("YYYY-MM-DD HH:mm:ss"), }); res.json({ code: 200, data: recordInfo ? "" : "更新失败", }); }); // 删除单个账单记录 router.delete("/:more_id", async function (req, res) { const more_id = req.params.more_id; // 获取 fileId 参数 const { userInfo = {} } = req.body; // const recordInfo = await getRecordInfoById(more_id); // 删除附件映射关系 const getAllFiles = await getFileByRecordId(more_id); if (getAllFiles.length) { await Promise.all( getAllFiles.map((elm) => delFileByRecordId(more_id, elm.file_id)) ); } // 删除record数据 await delMoreRecord(more_id, userInfo.user_id); res.json({ code: 200, data: "", }); }); // 获取所有批量账单记录 router.post("/list/:book_id", async function (req, res) { const book_id = req.params.book_id; // 获取 fileId 参数 const { userInfo = {} } = req.body; const moreRecordList = await getMoreRecordList(book_id, userInfo.user_id); res.json({ code: 200, data: moreRecordList.map((elm) => ({ name: elm.name, more_id: elm.more_id, remark: elm.remark, total_fee: elm.total_fee, create_time: shanghaiTimeFormat(elm.create_time), start_time: shanghaiTimeFormat(elm.start_time), end_time: shanghaiTimeFormat(elm.end_time), })), }); }); // 获取所有批量账单记录 router.get("/:more_id", async function (req, res) { const more_id = req.params.more_id; // 获取 fileId 参数 const { userInfo = {} } = req.body; const files = await getFileByRecordId(more_id); const moreRecordInfo = await getMoreRecordByMoreId(more_id, userInfo.user_id); const typesRes = await getTypesById({ typeId: moreRecordInfo.type_id, book_id: moreRecordInfo.book_id, author_id: moreRecordInfo.author_id, }); if (typesRes) { moreRecordInfo.type = typesRes.name; } else { moreRecordInfo.type = ""; } res.json({ code: 200, data: { type: moreRecordInfo.type, name: moreRecordInfo.name, more_id: moreRecordInfo.more_id, remark: moreRecordInfo.remark, total_fee: moreRecordInfo.total_fee, log_day: moreRecordInfo.log_day, create_time: shanghaiTimeFormat(moreRecordInfo.create_time), start_time: shanghaiTimeFormat(moreRecordInfo.start_time), end_time: shanghaiTimeFormat(moreRecordInfo.end_time), files: files.map((elm) => getFileUrl(req, elm)), }, }); }); export default router;