tender_node.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. 'use strict';
  2. /**
  3. * 标段项目节数据模型
  4. *
  5. * @author CaiAoLin
  6. * @date 2017/12/1
  7. * @version
  8. */
  9. module.exports = app => {
  10. class TenderNode extends app.BaseService {
  11. /**
  12. * 构造函数
  13. *
  14. * @param {Object} ctx - egg全局变量
  15. * @return {void}
  16. */
  17. constructor(ctx) {
  18. super(ctx);
  19. this.tableName = 'tender_node';
  20. }
  21. /**
  22. * 新增数据
  23. *
  24. * @param {Object} data - 新增的数据(可批量)
  25. * @param {Number} tenderId - 标段id
  26. * @return {Boolean} - 返回新增的结果
  27. */
  28. async add(data, tenderId) {
  29. let result = false;
  30. try {
  31. if (tenderId <= 0) {
  32. throw '标段id错误';
  33. }
  34. if (data instanceof Array) {
  35. // 数组则为批量插入
  36. if (data.length <= 0) {
  37. throw '插入数据为空';
  38. }
  39. // 整理数据
  40. const insertData = [];
  41. for (const tmp of data) {
  42. tmp.template_id = tmp.id;
  43. tmp.template_pid = tmp.pid;
  44. tmp.tender_id = tenderId;
  45. delete tmp.id;
  46. delete tmp.pid;
  47. insertData.push(tmp);
  48. }
  49. const operate = await this.transaction.insert(this.tableName, insertData);
  50. result = operate.affectedRows > 0;
  51. } else {
  52. // 对象则单个插入
  53. }
  54. } catch (error) {
  55. result = false;
  56. }
  57. return result;
  58. }
  59. /**
  60. * 根据层级获取数据
  61. *
  62. * @param {Number} tenderId - 标段id
  63. * @param {Boolean} showAll - 是否显示全部
  64. * @return {Array} - 返回数据
  65. */
  66. async getDataByTenderId(tenderId, showAll = false) {
  67. if (tenderId <= 0) {
  68. return [];
  69. }
  70. const showLevel = !showAll ? 2 : -1;
  71. this.initSqlBuilder();
  72. this.sqlBuilder.setAndWhere('tender_id', {
  73. value: tenderId,
  74. operate: '=',
  75. });
  76. if (showLevel > 0) {
  77. this.sqlBuilder.setAndWhere('level', {
  78. value: showLevel,
  79. operate: '<=',
  80. });
  81. }
  82. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  83. const data = await this.db.query(sql, sqlParam);
  84. return data;
  85. }
  86. }
  87. return TenderNode;
  88. };