operate_log.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /**
  2. * Created by MyPC on 2019/11/5.
  3. */
  4. 'use strict';
  5. const hash= require('../class/hash');
  6. const Sequelize = require('sequelize');
  7. const Op = Sequelize.Op;
  8. var moment = require('moment');
  9. /*var d = new Date();
  10. var tableNameYear=d.getFullYear();
  11. +OPERATELOGTABLE*/
  12. module.exports = (sequelize, DataTypes) => {
  13. const operateLog = sequelize.define('operate_log', {
  14. id : {type: DataTypes.INTEGER(11), primaryKey: true, autoIncrement: true},
  15. logType: DataTypes.INTEGER,
  16. dataId: DataTypes.INTEGER,
  17. cid: DataTypes.INTEGER,
  18. sid: DataTypes.STRING,
  19. username: DataTypes.STRING,
  20. category: DataTypes.STRING,
  21. operation: DataTypes.STRING,
  22. img: DataTypes.INTEGER(15),
  23. createDate: DataTypes.DATE,
  24. }, {tableName:'operate_log_'+OPERATELOGTABLE});
  25. /*
  26. * 根据ID合集获得客户信息
  27. * */
  28. operateLog.findByCondition=async function(logType,dataId){
  29. if(!hash.isExistence(logType)||!hash.isExistence(dataId)){
  30. return []
  31. }else if(!hash.isNotANumber(logType)||!hash.isNotANumber(dataId)){
  32. return [];
  33. }
  34. //var idList = await this.findAll(condition);//获得idList
  35. //var yearList= await this.findAll(condition);//获得yearList
  36. //console.log(logType+'d'+dataId);
  37. var list=[];
  38. var sqlQuery = 'select CONVERT(GROUP_CONCAT(id) USING utf8) as id,date_format(createDate,"%Y") as year FROM operate_log where ' +
  39. 'logType=? and dataId=? GROUP BY Year(createDate) order by createDate ';
  40. await sequelize.query(sqlQuery,
  41. { replacements: [logType,dataId], type: sequelize.QueryTypes.SELECT }
  42. ).then(function(results) {
  43. list=results;
  44. })
  45. var sqlArray=[];
  46. list.forEach(function(v,i){
  47. sqlArray.push(' SELECT *,DATE_FORMAT(createDate, "%Y-%m-%d %H:%m:%S") AS createDate FROM operate_log_'+v.year+' WHERE id in ('+v.id+') ');
  48. });
  49. if(!hash.isExistence(list)){
  50. return [];
  51. }
  52. var sql=sqlArray.join(" UNION ");
  53. sql+=' ORDER BY id desc';
  54. await this.sequelize.query(sql).spread((results, metadata) => {
  55. list=results;
  56. });
  57. list.forEach(function(v,i){
  58. //list[i].createDate=moment(v.createDate, 'YYYY-MM-DD HH:mm');//moment.unix(v.createDate).format('YYYY-MM-DD HH:mm');
  59. list[i].id=hash.hashEncode(v.id.toString());
  60. });
  61. return list;
  62. };
  63. /*
  64. * 新增操作日志
  65. *
  66. * */
  67. operateLog.createOperateLog=async function(logType,dataId,operation){
  68. if(!hash.isExistence(logType)||!hash.isExistence(dataId)){
  69. return false;
  70. }
  71. var sid=hash.hashDecode(STAFF.sid);
  72. var createDate=moment(new Date()).format('YYYY-MM-DD HH:mm:ss');
  73. var sql='INSERT INTO operate_log (logType,sid,createDate,dataId,cid) values ('+logType+','+sid+',"'+createDate +'",'+dataId+','+STAFF.cid+')';
  74. var id='';
  75. await this.sequelize.query(sql).spread((results, metadata) => {
  76. id=results;
  77. });
  78. var obj = {
  79. id:id,
  80. logType: logType,
  81. username: STAFF.username,
  82. sid: sid,
  83. category: STAFF.category,
  84. createDate: createDate,
  85. operation: operation,
  86. img: STAFF.avatar,
  87. dataId: dataId,
  88. cid: STAFF.cid,
  89. };
  90. await this.create(obj);
  91. return true;
  92. };
  93. return operateLog;
  94. };