budget_final_list.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. const status = {
  10. cancel: 0,
  11. wait: 1,
  12. ext: 2,
  13. done: 3,
  14. error: 4,
  15. };
  16. module.exports = app => {
  17. class BudgetFinalList extends app.BaseService {
  18. /**
  19. * 构造函数
  20. *
  21. * @param {Object} ctx - egg全局变量
  22. * @return {void}
  23. */
  24. constructor(ctx) {
  25. super(ctx);
  26. this.tableName = 'budget_final_list';
  27. }
  28. _analysisFinal(data) {
  29. data.tender = data.tender ? data.tender.split(',') : [];
  30. data.tender_info = data.tender_info ? JSON.parse(data.tender_info) : [];
  31. data.contract = data.contract ? data.contract.split(',') : [];
  32. }
  33. async getFinal(id) {
  34. const data = await this.getDataById(id);
  35. this._analysisFinal(data);
  36. return data;
  37. }
  38. async addFinal(budget, tender) {
  39. const user = await this.ctx.service.projectAccount.getDataById(this.ctx.session.sessionUser.accountId);
  40. const final = {
  41. bid: budget.id, uid: user.id,
  42. u_name: user.name, u_role: user.role, u_company: user.company, u_mobile: user.mobile,
  43. u_login: this.ctx.session.sessionUser.loginType + ';' + this.ctx.session.sessionUser.loginStatus,
  44. tender: tender ? tender.join(',') : '', status: status.ext,
  45. };
  46. const result = await this.db.insert(this.tableName, final);
  47. return await this.getFinal(result.insertId);
  48. }
  49. async clearExpiredFinal(budget) {
  50. const datas = await this.getAllDataByCondition({ where: { bid: budget.id }, orders: [['id', 'DESC']]});
  51. if (datas.length > 3) {
  52. datas.splice(0, 3);
  53. const conn = await this.db.beginTransaction();
  54. try {
  55. const id = datas.map(x => { return x.id; });
  56. await conn.delete(this.tableName, { id });
  57. await conn.delete(this.ctx.service.budgetFinal.tableName, { final_id: id });
  58. await conn.commit();
  59. } catch (err) {
  60. await conn.rollback();
  61. this.ctx.log(err);
  62. }
  63. }
  64. }
  65. }
  66. return BudgetFinalList;
  67. };