'use strict'; /** * * * @author Ellisran * @date 2021/4/8 * @version */ const touristPermissionConst = require('../const/tourist_permission').defaultPermission; module.exports = app => { class TenderTourist extends app.BaseService { /** * 构造函数 * * @param {Object} ctx - egg全局变量 * @return {void} */ constructor(ctx) { super(ctx); this.tableName = 'tender_tourist'; } async getTourists(tid) { const sql = 'SELECT tt.*,' + 'pa.`name` As `user_name`, pa.`role` As `user_role`, pa.`company` As `user_company` ' + 'FROM ?? As tt LEFT JOIN ?? As pa ON tt.`user_id` = pa.`id` ' + 'WHERE tt.`tid` = ?'; const sqlParam = [this.tableName, this.ctx.service.projectAccount.tableName, tid]; return await this.db.query(sql, sqlParam); } async addAudit(data) { const transaction = await this.db.beginTransaction(); try { const insertData = { tid: this.ctx.tender.id, user_id: data.user_id, in_time: new Date(), }; const result = await transaction.insert(this.tableName, insertData); await transaction.commit(); return await this.getDataById(result.insertId); } catch (err) { await transaction.rollback(); throw err; } } async removeAudit(data) { const transaction = await this.db.beginTransaction(); try { await transaction.delete(this.tableName, { id: data.id }); await transaction.commit(); return true; } catch (err) { await transaction.rollback(); throw err; } } async getTouristPermission(info) { if (info && info.permission) { return JSON.parse(info.permission); } return touristPermissionConst; } async setPermission(data) { const transaction = await this.db.beginTransaction(); try { await transaction.update(this.tableName, { id: data.id, permission: JSON.stringify(data.permission) }); await transaction.commit(); return true; } catch (err) { await transaction.rollback(); throw err; } } } return TenderTourist; };