project_log.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. 'use strict';
  2. /**
  3. * 项目操作日志-数据模型
  4. *
  5. * @author ellisran
  6. * @date 2021/01/12
  7. * @version
  8. */
  9. module.exports = app => {
  10. class projectLog extends app.BaseService {
  11. constructor(ctx) {
  12. super(ctx);
  13. this.tableName = 'project_log';
  14. }
  15. /**
  16. * 创建登录日志
  17. * @return {Boolean} 日志是否创建成功
  18. * @param {Number} type - 登录类型
  19. * @param {Number} status - 是否显示记录
  20. */
  21. async addProjectLog(transaction, type, status, msg, tid = 0) {
  22. const { ctx } = this;
  23. const ipMsg = await this.ctx.helper.getUserIPMsg();
  24. tid = ctx.tender && ctx.tender.id ? ctx.tender.id : tid;
  25. let subProjectId = ctx.subProject && ctx.subProject.id ? ctx.subProject.id : (ctx.tender && ctx.tender.data.spid ? ctx.tender.data.spid : 0);
  26. if (!subProjectId) {
  27. const tender = await this.ctx.service.tender.getDataById(tid);
  28. if (tender && tender.spid) subProjectId = tender.spid;
  29. }
  30. const payload = {
  31. uid: ctx.session.sessionUser.accountId,
  32. pid: ctx.session.sessionProject.id,
  33. spid: subProjectId,
  34. tid,
  35. type,
  36. status,
  37. msg,
  38. };
  39. this._.assign(payload, ipMsg);
  40. return await transaction.insert(this.tableName, payload);
  41. }
  42. /**
  43. * 获取操作日志
  44. * @param {Number} pid - 项目id
  45. * @param {Number} type - 类型
  46. * @return {Promise<Array>} 日志数组
  47. */
  48. async getLogs(spid, type = 0) {
  49. const typeSql = parseInt(type) !== 0 ? ' AND A.`type` = ' + type : '';
  50. const sql = 'SELECT A.*, B.`name` as `username`, B.`mobile` FROM ?? as A LEFT JOIN ?? as B ON A.`uid` = B.`id` WHERE A.`spid` = ?' + typeSql + ' AND TO_DAYS(NOW()) - TO_DAYS(A.`create_time`) <= 30 ORDER BY A.`id` DESC';
  51. const sqlParam = [this.tableName, this.ctx.service.projectAccount.tableName, spid];
  52. return await this.db.query(sql, sqlParam);
  53. }
  54. }
  55. return projectLog;
  56. };