financial_pay_tender.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 'use strict';
  2. /**
  3. * Created by EllisRan on 2020/3/3.
  4. */
  5. const BaseService = require('../base/base_service');
  6. module.exports = app => {
  7. class FinancialPayTender extends BaseService {
  8. /**
  9. * 构造函数
  10. *
  11. * @param {Object} ctx - egg全局变量
  12. * @return {void}
  13. */
  14. constructor(ctx) {
  15. super(ctx);
  16. this.tableName = 'financial_pay_tender';
  17. this.dataId = 'id';
  18. }
  19. async savePayTender(spid, data) {
  20. if (data.id === 0) {
  21. delete data.id;
  22. data.spid = spid;
  23. const result = await this.db.insert(this.tableName, data);
  24. return await this.getDataById(result.insertId);
  25. }
  26. await this.db.update(this.tableName, data);
  27. return await this.getDataById(data.id);
  28. }
  29. async copyBank2otherTender(spid, tenders, copy_tender) {
  30. const insertDatas = [];
  31. const updateDatas = [];
  32. for (const tender of tenders) {
  33. if (tender.tid === copy_tender.tid) {
  34. continue; // 跳过复制的标
  35. }
  36. if (tender.id === 0) {
  37. delete tender.id;
  38. insertDatas.push({
  39. tid: tender.tid,
  40. spid,
  41. name: copy_tender.name,
  42. bank: copy_tender.bank,
  43. bank_account: copy_tender.bank_account,
  44. contact: copy_tender.contact,
  45. phone: copy_tender.phone,
  46. });
  47. } else {
  48. updateDatas.push({
  49. id: tender.id,
  50. name: copy_tender.name,
  51. bank: copy_tender.bank,
  52. bank_account: copy_tender.bank_account,
  53. contact: copy_tender.contact,
  54. phone: copy_tender.phone,
  55. });
  56. }
  57. }
  58. const transaction = await this.db.beginTransaction();
  59. try {
  60. if (insertDatas.length > 0) {
  61. await transaction.insert(this.tableName, insertDatas);
  62. }
  63. if (updateDatas.length > 0) {
  64. await transaction.updateRows(this.tableName, updateDatas);
  65. }
  66. await transaction.commit();
  67. } catch (e) {
  68. await transaction.rollback();
  69. throw e;
  70. }
  71. return await this.getAllDataByCondition({ where: { spid } });
  72. }
  73. }
  74. return FinancialPayTender;
  75. };