怎样实现企业管理系统的操作日志功能
第一步:数据库
表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");
}
操作日志的处理全然是在后台运行,不要要在前台处理,须要记录的地方,就直接使用该写好的操作日志方法,这样就能够记录用户的操作步骤