123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 'use strict';
- const auditConst = require('../const/audit');
- /**
- * 附件表 数据模型
- * @author LanJianRong
- * @date 2020/6/30
- * @version
- */
- module.exports = app => {
- class MaterialFile extends app.BaseService {
- /**
- * 构造函数
- *
- * @param {Object} ctx - egg全局变量
- * @return {void}
- */
- constructor(ctx) {
- super(ctx);
- this.tableName = 'material_file';
- }
- /**
- * 获取当前标段(期)所有上传的附件
- * @param {Number} tid 标段id
- * @param {Number?} mid 期id
- * @return {Promise<void>} 数据库查询实例
- */
- async getAllMaterialFiles(tid, mid) {
- const where = { tid };
- if (mid) where.mid = mid;
- const materialList = await this.db.select(this.ctx.service.material.tableName, {
- where: { tid },
- });
- // 当用户点击所有期时,不能通过当前的material.status !== auditConst.status.checked来判断是否有删除权限
- // 需要获取当前标段所有期与fileList一一对比,可删除的加上pre_delete标记true
- const fileList = await this.db.select(this.tableName, {
- where,
- });
- return fileList.map(file => {
- const material = materialList.find(i => i.id === file.mid && i.tid === file.tid);
- if (material) {
- const { status } = material;
- if ( status !== auditConst.stage.status.checked) {
- return { ...file, pre_delete: true }
- }
- }
- return file
- })
- }
- /**
- * 存储上传的文件信息至数据库
- * @param {Array} payload 载荷
- * @return {Promise<void>} 数据库插入执行实例
- */
- async saveFileMsgToDb(payload) {
- return await this.db.insert(this.tableName, payload);
- }
- /**
- * 获取单个文件信息
- * @param {Number} id 文件id
- * @return {Promise<void>} 数据库查询实例
- */
- async getMaterialFileById(id) {
- return await this.getDataByCondition({ id });
- }
- /**
- * 删除附件
- * @param {Number} id - 附件id
- * @return {void}
- */
- async delete(id) {
- return await this.deleteById(id);
- }
- }
- return MaterialFile;
- };
|