more.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. import express from "express";
  2. const router = express.Router();
  3. import { v4 as uuidv4 } from "uuid";
  4. import { shanghaiTime, shanghaiTimeFormat } from "#utils";
  5. import {
  6. addMoreRecord,
  7. updataMoreRecord,
  8. delMoreRecord,
  9. record_update,
  10. getRecordInfoById,
  11. getFileByRecordId,
  12. delFileByRecordId,
  13. delByRecordId,
  14. getMoreRecordList,
  15. getMoreRecordByMoreId,
  16. getTypesById,
  17. } from "#db";
  18. import { getTypeInfoFn, setFilesById, setFilesByRecord, getFileUrl } from "./utils.js";
  19. // 添加多个账单记录
  20. router.post("/", async function (req, res) {
  21. const {
  22. name = "",
  23. remark = "",
  24. book_id = "",
  25. start_time = "",
  26. end_time = "",
  27. total_fee = 0,
  28. log_day = '',
  29. type = "",
  30. files = [],
  31. userInfo = {},
  32. } = req.body;
  33. const more_id = `M_${uuidv4()}`;
  34. const type_id = await getTypeInfoFn({ userInfo, book_id, type });
  35. await addMoreRecord({
  36. more_id,
  37. book_id,
  38. type_id: type_id,
  39. author_id: userInfo.user_id,
  40. total_fee,
  41. name,
  42. remark,
  43. log_day,
  44. start_time: shanghaiTimeFormat(start_time, "YYYY-MM-DD") + " 00:00:00",
  45. end_time: shanghaiTimeFormat(end_time, "YYYY-MM-DD") + " 23:59:59",
  46. create_time: shanghaiTime().format("YYYY-MM-DD HH:mm:ss"),
  47. update_time: shanghaiTime().format("YYYY-MM-DD HH:mm:ss"),
  48. });
  49. await setFilesByRecord({
  50. files,
  51. book_id,
  52. more_id,
  53. userInfo,
  54. });
  55. res.json({
  56. code: 200,
  57. data: {
  58. record_id: more_id,
  59. },
  60. });
  61. });
  62. // 编辑多个账单记录
  63. router.put("/:more_id", async function (req, res) {
  64. const more_id = req.params.more_id; // 获取 fileId 参数
  65. const {
  66. name = "",
  67. remark = "",
  68. book_id = "",
  69. start_time = "",
  70. end_time = "",
  71. total_fee = 0,
  72. type = "",
  73. log_day = "",
  74. files = [],
  75. userInfo = {},
  76. } = req.body;
  77. // 更新附件信息
  78. await setFilesById({
  79. record_id: more_id,
  80. userInfo,
  81. book_id,
  82. files,
  83. });
  84. // 更新类型
  85. const typeId = await getTypeInfoFn({
  86. userInfo,
  87. book_id,
  88. type,
  89. });
  90. // 更新数据内容
  91. const recordInfo = await updataMoreRecord({
  92. name,
  93. more_id,
  94. type_id: typeId,
  95. author_id: userInfo.user_id,
  96. total_fee: total_fee,
  97. remark: remark,
  98. log_day,
  99. start_time: shanghaiTimeFormat(start_time, "YYYY-MM-DD") + " 00:00:00",
  100. end_time: shanghaiTimeFormat(end_time, "YYYY-MM-DD") + " 23:59:59",
  101. update_time: shanghaiTime().format("YYYY-MM-DD HH:mm:ss"),
  102. });
  103. res.json({
  104. code: 200,
  105. data: recordInfo ? "" : "更新失败",
  106. });
  107. });
  108. // 删除单个账单记录
  109. router.delete("/:more_id", async function (req, res) {
  110. const more_id = req.params.more_id; // 获取 fileId 参数
  111. const { userInfo = {} } = req.body;
  112. // const recordInfo = await getRecordInfoById(more_id);
  113. // 删除附件映射关系
  114. const getAllFiles = await getFileByRecordId(more_id);
  115. if (getAllFiles.length) {
  116. await Promise.all(
  117. getAllFiles.map((elm) => delFileByRecordId(more_id, elm.file_id))
  118. );
  119. }
  120. // 删除record数据
  121. await delMoreRecord(more_id, userInfo.user_id);
  122. res.json({
  123. code: 200,
  124. data: "",
  125. });
  126. });
  127. // 获取所有批量账单记录
  128. router.post("/list/:book_id", async function (req, res) {
  129. const book_id = req.params.book_id; // 获取 fileId 参数
  130. const { userInfo = {} } = req.body;
  131. const moreRecordList = await getMoreRecordList(book_id, userInfo.user_id);
  132. res.json({
  133. code: 200,
  134. data: moreRecordList.map((elm) => ({
  135. name: elm.name,
  136. more_id: elm.more_id,
  137. remark: elm.remark,
  138. total_fee: elm.total_fee,
  139. create_time: shanghaiTimeFormat(elm.create_time),
  140. start_time: shanghaiTimeFormat(elm.start_time),
  141. end_time: shanghaiTimeFormat(elm.end_time),
  142. })),
  143. });
  144. });
  145. // 获取所有批量账单记录
  146. router.get("/:more_id", async function (req, res) {
  147. const more_id = req.params.more_id; // 获取 fileId 参数
  148. const { userInfo = {} } = req.body;
  149. const files = await getFileByRecordId(more_id);
  150. const moreRecordInfo = await getMoreRecordByMoreId(more_id, userInfo.user_id);
  151. const typesRes = await getTypesById({
  152. typeId: moreRecordInfo.type_id,
  153. book_id: moreRecordInfo.book_id,
  154. author_id: moreRecordInfo.author_id,
  155. });
  156. if (typesRes) {
  157. moreRecordInfo.type = typesRes.name;
  158. } else {
  159. moreRecordInfo.type = "";
  160. }
  161. res.json({
  162. code: 200,
  163. data: {
  164. type: moreRecordInfo.type,
  165. name: moreRecordInfo.name,
  166. more_id: moreRecordInfo.more_id,
  167. remark: moreRecordInfo.remark,
  168. total_fee: moreRecordInfo.total_fee,
  169. log_day: moreRecordInfo.log_day,
  170. create_time: shanghaiTimeFormat(moreRecordInfo.create_time),
  171. start_time: shanghaiTimeFormat(moreRecordInfo.start_time),
  172. end_time: shanghaiTimeFormat(moreRecordInfo.end_time),
  173. files: files.map((elm) => getFileUrl(req, elm)),
  174. },
  175. });
  176. });
  177. export default router;