| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 'use strict';
- /**
- * 标段协作相关
- *
- * @author Mai
- * @date
- * @version
- */
- module.exports = app => {
- class TenderAss extends app.BaseService {
- /**
- * 构造函数
- *
- * @param {Object} ctx - egg全局变量
- * @return {void}
- */
- constructor(ctx) {
- super(ctx);
- this.tableName = 'tender_ass';
- }
- async getAssData(tid, type, rela_id = '') {
- return this.getAllDataByCondition({
- columns: ['id', 'tid', 'user_id', 'rela_id', 'ass_type', 'ass_id', 'name', 'company', 'role'],
- where: { tid, ass_type: type, rela_id: rela_id || '' },
- orders: [['create_time', 'asc']]
- });
- }
- async getUserAssData(tid, type, user_id, rela_id = '') {
- const result = await this.getDataByCondition({ tid, ass_type: type, user_id, rela_id });
- if (result) result.ass_id = result.ass_id ? result.ass_id.split(',') : [];
- return result;
- }
- async saveAssData(tid, type, rela_id, data) {
- const accountId = this.ctx.session.sessionUser.accountId;
- const orgAssData = await this.getAssData(tid, type, rela_id || '');
- const updateData = [], deleteData = [], insertData = [];
- for (const d of data) {
- const oa = orgAssData.find(x => { return x.user_id === d.user_id; });
- if (oa) {
- updateData.push({ id: oa.id, ass_id: d.ass_id, update_user_id: accountId });
- } else {
- insertData.push({
- tid, rela_id: rela_id || '', ass_type: type, ass_id: d.ass_id,
- user_id: d.user_id, name: d.name, company: d.company, role: d.role,
- create_user_id: accountId, update_user_id: accountId,
- });
- }
- }
- for (const oa of orgAssData) {
- const d = data.find(x => { return x.user_id === oa.user_id; });
- if (!d) deleteData.push(oa.id);
- }
- if (updateData.length === 0 && deleteData.length === 0 && insertData.length === 0) return;
- const conn = await this.db.beginTransaction();
- try {
- if (insertData.length > 0) await conn.insert(this.tableName, insertData);
- if (deleteData.length > 0) await conn.delete(this.tableName, { id: deleteData });
- if (updateData.length > 0) await conn.updateRows(this.tableName, updateData);
- await conn.commit();
- } catch (err) {
- this.ctx.log(err);
- await conn.rollback();
- throw '保存协作数据错误';
- }
- }
- }
- return TenderAss;
- };
|