123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /**
- * 日志业务逻辑模型
- *
- * @author CaiAoLin
- * @date 2017/7/27
- * @version
- */
- import BaseModel from "../../common/base/base_model";
- import LogType from "../../common/const/log_type_const";
- import LogSchema from "./schema/log";
- import UAParser from "ua-parser-js";
- class LogModel extends BaseModel {
- /**
- * 构造函数
- *
- * @return {void}
- */
- constructor() {
- let parent = super();
- parent.model = LogSchema;
- parent.init();
- }
- /**
- * 新增日志
- *
- * @param {String} userId
- * @param {Number} type
- * @param {String|Object} message
- * @return {Promise}
- */
- addLog(userId, type, message) {
- let result = null;
- if (typeof message === 'string' && message === '') {
- return result;
- }
- if (typeof message === 'object' && Object.keys(message).length <= 0) {
- return result;
- }
- let addData = {
- user_id: userId,
- type: type,
- message: message,
- create_time: new Date().getTime()
- };
- result = this.db.create(addData);
- return result;
- }
- /**
- * 新增登录日志
- *
- * @param {String} userId
- * @param {Object} request
- * @return {Promise}
- */
- addLoginLog(userId, request) {
- let ip = request.connection.remoteAddress;
- ip = ip.split(':');
- ip = ip[3] === undefined ? '' : ip[3];
- let userAgentObject = new UAParser(request.headers['user-agent']);
- let osInfo = userAgentObject.getOS();
- let cpuInfo = userAgentObject.getCPU();
- let browserInfo = userAgentObject.getBrowser();
- let message = {
- os: osInfo.name + ' ' + osInfo.version + ' ' + cpuInfo.architecture,
- browser: browserInfo.name + ' ' + browserInfo.version,
- ip: ip
- };
- return this.addLog(userId, LogType.LOGIN_LOG, message);
- }
- /**
- * 获取log列表
- *
- * @param {String} userId
- * @param {Number} type
- * @param {Number} page
- * @param {Number} pageSize
- * @return {Promise}
- */
- async getLog(userId, type, page = 1, pageSize = 3) {
- let condition = {
- user_id: userId,
- type: type
- };
- page = parseInt(page);
- page = page <= 1 ? 1 : page;
- let option = {pageSize: pageSize, offset: parseInt((page - 1) * pageSize)};
- let logList = await this.db.find(condition, null, option);
- logList = logList.length > 0 ? logList : [];
- return logList
- }
- }
- export default LogModel;
|