/** * 日志业务逻辑模型 * * @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;