spec_msg.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. module.exports = app => {
  10. class SpecPull extends app.BaseService {
  11. /**
  12. * 构造函数
  13. *
  14. * @param {Object} ctx - egg全局变量
  15. * @return {void}
  16. */
  17. constructor(ctx) {
  18. super(ctx);
  19. this.tableName = 's2b_spec_msg';
  20. }
  21. async tenderNeedMsg(pid, tid, timing) {
  22. const specProj = await this.db.get('zh_s2b_spec_proj', { id: pid });
  23. if (!specProj || !specProj.is_push) return false;
  24. switch (specProj.push_tender_type) {
  25. case 1:
  26. const filter = specProj.filter_tender ? specProj.filter_tender.split(',') : [];
  27. if (filter.indexOf(tid + '') >= 0) return false;
  28. break;
  29. case 2:
  30. const access = specProj.access_tender ? specProj.access_tender.split(',') : [];
  31. if (access.indexOf(tid + '') < 0) return false;
  32. break;
  33. }
  34. const soleTender = await this.db.get('zh_s2b_spec_tender', { id: tid, is_valid: 1 });
  35. const specPush = await this.db.get('zh_s2b_spec_push', { pid, tid: soleTender ? tid : 0, valid: 1, push_timing: timing });
  36. return !!specPush;
  37. }
  38. async addLedgerMsg(transaction, pid, tender, timing) {
  39. const needMsg = await this.tenderNeedMsg(pid, tender.id, timing);
  40. if (!needMsg) return;
  41. await transaction.insert(this.tableName, { pid, tid: tender.id, timing });
  42. }
  43. async addReviseMsg(transaction, pid, revise, timing) {
  44. const needMsg = await this.tenderNeedMsg(pid, revise.tid, timing);
  45. if (!needMsg) return;
  46. await transaction.insert(this.tableName, { pid, tid: revise.tid, rid: revise.id, timing });
  47. }
  48. async addStageMsg(transaction, pid, stage, timing) {
  49. const needMsg = await this.tenderNeedMsg(pid, stage.tid, timing);
  50. if (!needMsg) return;
  51. await transaction.insert(this.tableName, { pid, tid: stage.tid, sid: stage.id, timing });
  52. }
  53. async addAdvanceMsg(transaction, pid, advance, timing) {
  54. const needMsg = await this.tenderNeedMsg(pid, advance.id, timing);
  55. if (!needMsg) return;
  56. await transaction.insert(this.tableName, { pid, tid: advance.tid, advance_id: advance.id, timing });
  57. }
  58. async addMaterialMsg(transaction, pid, material, timing) {
  59. const needMsg = await this.tenderNeedMsg(pid, material.tid, timing);
  60. if (!needMsg) return;
  61. await transaction.insert(this.tableName, { pid, tid: material.tid, material_id: material.id, timing });
  62. }
  63. async addSettleMsg(transaction, pid, settle, timing) {
  64. const needMsg = await this.tenderNeedMsg(pid, settle.tid, timing);
  65. if (!needMsg) return;
  66. await transaction.insert(this.tableName, { pid, tid: settle.tid, settle_id: settle.id, timing });
  67. }
  68. async addChangeMsg(transaction, pid, change, timing) {
  69. const needMsg = await this.tenderNeedMsg(pid, change.tid, timing);
  70. if (!needMsg) return;
  71. await transaction.insert(this.tableName, { pid, tid: change.tid, cid: change.cid, timing });
  72. }
  73. async addChangeApplyMsg(transaction, pid, change_apply, timing) {
  74. const needMsg = await this.tenderNeedMsg(pid, change_apply.tid, timing);
  75. if (!needMsg) return;
  76. await transaction.insert(this.tableName, { pid, tid: change_apply.tid, c_apply_id: change_apply.id, timing });
  77. }
  78. async addChangeProjectMsg(transaction, pid, change_project, timing) {
  79. const needMsg = await this.tenderNeedMsg(pid, change_project.tid, timing);
  80. if (!needMsg) return;
  81. await transaction.insert(this.tableName, { pid, tid: change_project.tid, c_proj_id: change_project.id, timing });
  82. }
  83. async addChangePlanMsg(transaction, pid, change_plan, timing) {
  84. const needMsg = await this.tenderNeedMsg(pid, change_plan.tid, timing);
  85. if (!needMsg) return;
  86. await transaction.insert(this.tableName, { pid, tid: change_plan.tid, c_plan_id: change_plan.id, timing });
  87. }
  88. async addReportMsg(transaction, pid, tender, stage, timing, subInfo) {
  89. const needMsg = await this.tenderNeedMsg(pid, stage.tid, timing);
  90. if (!needMsg) return;
  91. if (transaction) {
  92. await transaction.insert(this.tableName, { pid, tid: tender.id, sid: stage ? stage.id : 0, timing, extra_info: JSON.stringify(subInfo || {}) });
  93. } else {
  94. await this.db.insert(this.tableName, { pid, tid: tender.id, sid: stage ? stage.id : 0, timing, extra_info: JSON.stringify(subInfo || {}) });
  95. }
  96. }
  97. }
  98. return SpecPull;
  99. };