怎样实现企业管理系统的操作日志功能
第一步:数据库
表1:用户日志(Sys_UserLoginLog)
列名 |
数据类型 |
主键/外键 |
说明 |
LoginID |
int |
主键 |
日志ID |
StaffID |
int |
外键 |
员工ID |
operationLog |
nchar(50) |
|
操作内容 |
operationDate |
datetime |
|
操作时间 |
表2:员工表(sys_YuanGong)
列名 |
数据类型 |
主键/外键 |
说明 |
YuanGongID |
int |
主键 |
员工ID |
LuRuYuanID |
int |
外键 |
录入员ID |
YuanGongZhuangTaiID |
int |
外键 |
员工状态ID |
MenDianID |
int |
外键 |
门店ID |
ZhiWuID |
Int |
外键 |
职务 |
JueSeID |
int |
外键 |
角色ID |
YuanGongBianHao |
nchar(50) |
|
员工编号 |
YuanGongXingMing |
nchar(50) |
|
员工姓名 |
XingBie |
nchar(50) |
|
性别 |
JiGuan |
nchar(50) |
|
籍贯 |
XueLi |
nchar(50) |
|
学历 |
ChuShengRiQi |
date |
|
出生日期 |
ShenFenZhengHao |
nchar(18) |
|
身份证号 |
RuZhiRiQi |
data |
|
入职日期 |
RuZhiDiDian |
nchar(50) |
|
入职地点 |
YiDongShouJi |
int |
|
移动手机 |
JiaTingDianHua |
nchar(50) |
|
家庭电话 |
DiXin |
decimal(18, 2) |
|
底薪 |
JiShiFou |
bit |
|
技术否 |
HunFou |
bit |
|
婚否 |
TongXunDiZhi |
nchar(50) |
|
通讯地址 |
BeiZhu |
nchar(50) |
|
备注 |
MiMa |
nchar(50) |
|
password |
第二步:Controllers(控制器)
在控制器中写一个处理用户操作的方法,这样就能够在须要的地方直接调用这方法,避免了不要的反复代码,/// <summary>
/// 设置登陆日志
/// </summary>
/// <param name="log">操作信息</param>
/// <param name="returnstring">返回值内容</param>
/// <param name="intUesrID">登陆用户ID</param>
/// <returns></returns>
public string UesrLog(string log,string returnstring,int intUesrID)
{
var logstring = "";
Models.sys_UserLoginLog UserLog = new Models.sys_UserLoginLog();
UserLog.StaffID = Convert.ToInt32(intUesrID);//登陆人
UserLog.operationLog = log;//设置日志内容
UserLog.operationDate = DateTime.Now;//设置当前时间
myMdl.sys_UserLoginLog.AddObject(UserLog);
int j = myMdl.SaveChanges();
if (j > 0)//推断是否保存成功
{
logstring = returnstring;
}
return logstring;
}
在须要的地方调用:比如:
public void LoginOff()//注销登陆人
{
FormsAuthentication.SignOut();//删除身份验证票据
UesrLog("退出登陆", "true", Convert.ToInt32(Session["YongHuID"]));//调用写好的操作日志的方法
Response.Redirect("/Main/Login");
}
操作日志的处理全然是在后台运行,不要要在前台处理,须要记录的地方,就直接使用该写好的操作日志方法,这样就能够记录用户的操作步骤