change_company.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date 2018/8/14
  7. * @version
  8. */
  9. module.exports = app => {
  10. class ChangeCompany extends app.BaseService {
  11. /**
  12. * 构造函数
  13. *
  14. * @param {Object} ctx - egg全局变量
  15. * @return {void}
  16. */
  17. constructor(ctx) {
  18. super(ctx);
  19. this.tableName = 'change_company';
  20. }
  21. /**
  22. * 队列修改和添加公司信息
  23. * @param {Object} data - 公司信息集合
  24. * @return {Object} - 返回新增的公司列表,和替换下拉选择公司列表
  25. */
  26. async setCompanyList(data) {
  27. const tenderId = parseInt(data.tid);
  28. const updateIdArray = data.uci;
  29. const updateArray = data.uc;
  30. const addArray = data.ac;
  31. const addCompany = [];
  32. const selectCompany = [];
  33. // 初始化事务
  34. this.transaction = await this.db.beginTransaction();
  35. try {
  36. // 更新公司信息
  37. if (updateIdArray.length !== 0) {
  38. for (const index in updateIdArray) {
  39. if (updateArray[index].trim() === '') {
  40. await this.transaction.delete(this.tableName, { id: updateIdArray[index] });
  41. } else {
  42. const updateData = {
  43. id: updateIdArray[index],
  44. name: updateArray[index],
  45. };
  46. await this.transaction.update(this.tableName, updateData);
  47. selectCompany.push(updateData);
  48. }
  49. }
  50. }
  51. if (addArray.length !== 0) {
  52. for (const name of addArray) {
  53. const addData = {
  54. tid: tenderId,
  55. name,
  56. };
  57. const operate = await this.transaction.insert(this.tableName, addData);
  58. if (operate.affectedRows !== 1) {
  59. throw '提交数据失败';
  60. } else {
  61. selectCompany.push({ id: operate.insertId, name });
  62. addCompany.push({ id: operate.insertId, name });
  63. }
  64. }
  65. }
  66. await this.transaction.commit();
  67. } catch (error) {
  68. console.log(error);
  69. // 回滚
  70. await this.transaction.rollback();
  71. }
  72. return [addCompany, selectCompany];
  73. }
  74. }
  75. return ChangeCompany;
  76. };