spec_msg.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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) {
  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 0: return true;
  26. case 1:
  27. const filter = specProj.filter_tender ? specProj.filter_tender.split(',') : [];
  28. return filter.indexOf(tid + '') < 0;
  29. case 2:
  30. const access = specProj.access_tender ? specProj.access_tender.split(',') : [];
  31. return access.indexOf(tid + '') >= 0;
  32. }
  33. }
  34. async addLedgerMsg(transaction, pid, tender, timing) {
  35. const needMsg = await this.tenderNeedMsg(pid, tender.id);
  36. if (!needMsg) return;
  37. await transaction.insert(this.tableName, { pid, tid: tender.id, timing });
  38. }
  39. async addReviseMsg(transaction, pid, revise, timing) {
  40. const needMsg = await this.tenderNeedMsg(pid, revise.tid);
  41. if (!needMsg) return;
  42. await transaction.insert(this.tableName, { pid, tid: revise.tid, rid: revise.id, timing });
  43. }
  44. async addStageMsg(transaction, pid, stage, timing) {
  45. const needMsg = await this.tenderNeedMsg(pid, stage.tid);
  46. if (!needMsg) return;
  47. await transaction.insert(this.tableName, { pid, tid: stage.tid, sid: stage.id, timing });
  48. }
  49. }
  50. return SpecPull;
  51. };