123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- 'use strict';
- /**
- * 消息数据模型
- *
- * @author CaiAoLin
- * @date 2017/11/23
- * @version
- */
- module.exports = app => {
- class Message extends app.BaseService {
- /**
- * 构造函数
- *
- * @param {Object} ctx - egg全局变量
- * @return {void}
- */
- constructor(ctx) {
- super(ctx);
- this.tableName = 'message';
- }
- /**
- * 规则
- *
- * @return {Object} - 返回规则
- */
- rule() {
- return {
- title: { type: 'string', required: true, allowEmpty: false },
- content: { type: 'string', required: false, allowEmpty: true },
- istop: { type: 'string', required: false, allowEmpty: true },
- };
- }
- /**
- * 查询过虑
- *
- * @param {Object} data - 筛选表单中的get数据
- * @return {void}
- */
- searchFilter(data, project_id) {
- this.initSqlBuilder();
- // 状态筛选
- data.type = parseInt(data.type);
- data.type = isNaN(data.type) || data.type <= 0 ? 1 : data.type;
- // 获取用户数据
- this.sqlBuilder.setAndWhere('type', {
- value: data.type,
- operate: '=',
- });
- this.sqlBuilder.setAndWhere('project_id', {
- value: project_id,
- operate: '=',
- });
- }
- /**
- * 获取消息数据
- *
- * @param {Number} startTime - 时间标记位(获取这个时间点之后的数据)
- * @return {Array} - 返回消息数据
- */
- async getMessage(startTime, project_id) {
- this.initSqlBuilder();
- this.sqlBuilder.setAndWhere('release_time', {
- value: startTime,
- operate: '>=',
- });
- // 获取用户数据
- this.sqlBuilder.setAndWhere('project_id', {
- value: project_id,
- operate: '=',
- });
- // 获取用户数据
- this.sqlBuilder.setAndWhere('type', {
- value: 1,
- operate: '=',
- });
- const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
- const result = await this.db.query(sql, sqlParam);
- return result;
- }
- /**
- * 修改通知信息
- *
- * @param {Object} data - post过来的数据
- * @return {Boolean} - 返回修改结果
- */
- async save(id, data, user, projectId) {
- if (data._csrf_j !== undefined) {
- delete data._csrf_j;
- }
- if (id > 0) {
- // 修改操作时
- data.id = id;
- const msgInfo = await this.getDataById(id);
- data.istop = parseFloat(msgInfo.istop) === 0 && parseInt(data.istop) === 1 ? data.create_time : data.istop === undefined ? 0 : msgInfo.istop;
- delete data.create_time;
- } else {
- data.release_time = data.create_time;
- data.project_id = projectId;
- data.create_uid = user.accountId;
- data.creator = user.name;
- data.istop = parseInt(data.istop) === 1 ? data.create_time : 0;
- }
- const operate = id === 0 ? await this.db.insert(this.tableName, data) :
- await this.db.update(this.tableName, data);
- const result = operate.affectedRows > 0;
- return result;
- }
- /**
- * 修改通知信息
- *
- * @param {Object} data - post过来的数据
- * @return {Boolean} - 返回修改结果
- */
- async getMsgList(projectId, limit = 5, offset = 0, type = 1) {
- if (type === 1) {
- const sql = 'SELECT * FROM ?? WHERE `project_id` = ? AND `type` = ? ORDER BY CONCAT(`istop`,`release_time`) DESC LIMIT ?,?';
- const sqlParam = [this.tableName, projectId, type, offset, limit];
- return await this.db.query(sql, sqlParam);
- }
- const sql = 'SELECT * FROM ?? WHERE `type` = ? AND `status` = ? ORDER BY `release_time` DESC LIMIT ?,?';
- const sqlParam = [this.tableName, type, 1, offset, limit];
- return await this.db.query(sql, sqlParam);
- }
- }
- return Message;
- };
|