model 层
app\model\system_log.js
/* indent size: 2 */
module.exports = (app,sequelize,modelName) => {
const DataTypes = app.Sequelize;
const Model = app.model.define(modelName || 'system_log', {
id: {
type: DataTypes.INTEGER(10).UNSIGNED,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
uid: {
type: DataTypes.INTEGER(10).UNSIGNED,
allowNull: true,
defaultValue: '0'
},
url: {
type: DataTypes.STRING(1500),
allowNull: false,
defaultValue: ''
},
method: {
type: DataTypes.STRING(50),
allowNull: false
},
title: {
type: DataTypes.STRING(100),
allowNull: true,
defaultValue: ''
},
ip: {
type: DataTypes.STRING(50),
allowNull: false,
defaultValue: ''
},
useragent: {
type: DataTypes.STRING(255),
allowNull: true,
defaultValue: ''
},
create_time: {
type: DataTypes.DATE,
allowNull: true
}
}, {
tableName: modelName
});
Model.associate = function() {
}
return Model;
};
公共处理函数
app\extend\application.js
module.exports = {
//日志表模型分表
async creatTableIfNotExist(modelBase, timeStr) {
console.log(modelBase)
console.log(timeStr)
const modelName = `${modelBase}_${timeStr}`;
const existTable = this.model.models[modelName];
if (existTable) {
return existTable;
}
let tableModel;
switch (modelBase) {
case 'system_log':{
tableModel = require('../model/system_log');
break;
}
}
if (tableModel && modelName) {
tableModel(this, this.model, modelName);
await this.model.sync({ force: false });
return this.model.models[modelName]
}
return null;
}
};
service层
app\service\systemLog.js
'use strict';
const Service = require("egg").Service;
class systemLogService extends Service {
get tableName() { //定义表名
return "system_log";
}
get tableSuffix(){//定义表后缀
var date = new Date();
var Year = 0;
var Month = 0;
var Day = 0;
var CurrentDate = "";
Year = date.getFullYear(); //获取完整的年份(4位)
Month = date.getMonth() + 1;//获取月份
Day = date.getDate();
CurrentDate += Year;
if (Month >= 10) {
CurrentDate += Month;
} else {
CurrentDate += "0" + Month;
}
if (Day >= 10) {
CurrentDate += Day ;
} else {
CurrentDate += "0" + Day ;
}
return `${CurrentDate}`;
}
async index() {
const ctx = this.ctx;
let model = await this.app.creatTableIfNotExist(this.tableName,this.tableSuffix);
console.log(model)
let res = model.findAll();
return res;
}
}
module.exports = systemLogService; //暴露接口