package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.constant.UserOperation; import com.whyc.dto.Response; import com.whyc.mapper.DocLogMapper; import com.whyc.pojo.DocLog; import com.whyc.util.ActionUtil; import com.whyc.util.DateUtil; import com.whyc.util.ExcelUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Calendar; import java.util.Date; import java.util.List; @Service public class DocLogService { @Autowired(required = false) private DocLogMapper mapper; public void recordOperationLog(Long uId,String name, Integer operationType, Date operationTime, String terminalIp, String operationMsg, String operationDetail) { DocLog docLog=new DocLog(); docLog.setId(uId.intValue()); docLog.setName(name); docLog.setOprateType(operationType); docLog.setOprateDay(operationTime); docLog.setTerminalIp(terminalIp); docLog.setOprateMsg(operationMsg); docLog.setOperationDetail(operationDetail); mapper.insert(docLog); } //下载专属日志记录 public void recordOperationLogDownLoad(Long uId,String name, Integer operationType, Date operationTime, String terminalIp , String operationMsg, String operationDetail,String oprateReason,String oprateInfo,String oprateVersion) { DocLog docLog=new DocLog(); docLog.setId(uId.intValue()); docLog.setName(name); docLog.setOprateType(operationType); docLog.setOprateDay(operationTime); docLog.setTerminalIp(terminalIp); docLog.setOprateMsg(operationMsg); docLog.setOperationDetail(operationDetail); docLog.setOprateReason(oprateReason); docLog.setOprateInfo(oprateInfo); docLog.setOprateVersion(oprateVersion); mapper.insert(docLog); } public PageInfo getPage(int pageNum, int pageSize, DocLog docLog) { PageHelper.startPage(pageNum,pageSize,true); //这个接口要兼容新老审计日志记录的查询 List userLogList = mapper.getList(docLog); userLogList.stream().forEach(docLog1-> { switch (docLog1.getOprateType()){ case 1: docLog1.setOperationTypeStr(UserOperation.TYPE_LOGIN.getTypeName());break; case 2: docLog1.setOperationTypeStr(UserOperation.TYPE_LOGOUT.getTypeName());break; case 3: docLog1.setOperationTypeStr(UserOperation.TYPE_ADD.getTypeName());break; case 4: docLog1.setOperationTypeStr(UserOperation.TYPE_UPDATE.getTypeName());break; case 5: docLog1.setOperationTypeStr(UserOperation.TYPE_DELETE.getTypeName());break; case 20:docLog1.setOperationTypeStr(UserOperation.TYPE_UNAUTHORIZED_ACCESS.getTypeName());break; case 21:docLog1.setOperationTypeStr(UserOperation.TYPE_EXCEPTION.getTypeName());break; case 31:docLog1.setOperationTypeStr(UserOperation.TYPE_LOGIN_FAIL.getTypeName());break; case 32:docLog1.setOperationTypeStr(UserOperation.TYPE_PARAM_CHANGE.getTypeName());break; case 33:docLog1.setOperationTypeStr(UserOperation.TYPE_PASSWORD_CHANGE.getTypeName());break; case 34:docLog1.setOperationTypeStr(UserOperation.TYPE_LOGIN_TIMEOUT.getTypeName());break; default:docLog1.setOperationTypeStr(UserOperation.TYPE_UNRECOGNIZED.getTypeName()); } }); PageInfo pageInfo = new PageInfo<>(userLogList); return pageInfo; } public void exportExcel(HttpServletResponse response, String[][] value) { String[] columnTitleArr = new String[]{"操作人姓名","操作类型","操作时间","终端IP","操作事件","具体参数"}; String now = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(new Date()); ExcelUtil.exportExcel("UserLog-"+now,"测试sheet1",columnTitleArr,value,new HSSFWorkbook(),response); } public void record(long uId,String name, int operationType, String msg) { DocLog docLog = new DocLog(); docLog.setTerminalIp(ActionUtil.getRequest().getRemoteAddr()); docLog.setOprateDay(new Date()); docLog.setId((int)(uId)); docLog.setName(name); docLog.setOprateType(operationType); docLog.setOprateMsg(msg); mapper.insert(docLog); } public void record(long uId,String name, int operationType, String msg,String msgDetail) { DocLog docLog = new DocLog(); HttpServletRequest request = ActionUtil.getRequest(); String remoteAddr; if(request!=null) { remoteAddr = request.getRemoteAddr(); }else{ remoteAddr = "127.0.0.1"; } docLog.setTerminalIp(remoteAddr); docLog.setOprateDay(new Date()); docLog.setId((int)(uId)); docLog.setName(name); docLog.setOprateType(operationType); docLog.setOprateMsg(msg); docLog.setOperationDetail(msgDetail); mapper.insert(docLog); } public void record2(HttpServletRequest request,long uId, String name, int operationType, String msg, String msgDetail) { DocLog docLog = new DocLog(); docLog.setTerminalIp(request.getRemoteAddr()); //userLog.setTerminalIp(request.getRemoteAddr()); docLog.setOprateDay(new Date()); docLog.setId((int)(uId)); docLog.setName(name); docLog.setOprateType(operationType); docLog.setOprateMsg(msg); docLog.setOperationDetail(msgDetail); mapper.insert(docLog); } //日志查询 public Response searchLog(DocLog docLog,int pageCurr, int pageSize) { PageHelper.startPage(pageCurr,pageSize); QueryWrapper wrapper=new QueryWrapper(); if(docLog!=null){ if(docLog.getName()!=null&&docLog.getName()!=""){ wrapper.like("name",docLog.getName()); } if(docLog.getOprateType()!=null){ wrapper.eq("oprate_type",docLog.getOprateType()); } if(docLog.getOprateDay()!=null){ wrapper.ge("oprate_day",docLog.getOprateDay()); } if(docLog.getOprateDay2()!=null){ wrapper.le("oprate_day",docLog.getOprateDay2()); } } wrapper.ne("id", 0); wrapper.ne("oprate_type",UserOperation.TYPE_EXCEPTION.getType()); wrapper.orderByDesc("oprate_day"); List list=mapper.selectList(wrapper); list.stream().forEach(dlog->{ dlog.setOperationTypeStr(UserOperation.getNameByType(dlog.getOprateType())); }); PageInfo pageInfo=new PageInfo(list); return new Response().setII(1,list.size()>0,pageInfo,"数据返回"); } //操作对应关系 public Response getOperate() { return new Response().setII(1,true,UserOperation.values(),"数据返回"); } //查询下载日志(DownLoadNew) public Response getDownLoadNew(int type, String oprateInfo) { QueryWrapper wrapper=new QueryWrapper(); wrapper.ne("id", 0); wrapper.eq("oprate_type", type); wrapper.eq("oprate_info", oprateInfo); wrapper.orderByDesc("oprate_day"); List list=mapper.selectList(wrapper); list.stream().forEach(dlog->{ dlog.setOperationTypeStr(UserOperation.getNameByType(dlog.getOprateType())); }); return new Response().setII(1,list.size()>0,list,"数据返回"); } public List getListOfToday() { Calendar startTime = Calendar.getInstance(); startTime.set(Calendar.HOUR_OF_DAY,0); startTime.set(Calendar.MINUTE,0); startTime.set(Calendar.SECOND,0); Calendar endTime = Calendar.getInstance(); endTime.set(Calendar.HOUR_OF_DAY,23); endTime.set(Calendar.MINUTE,59); endTime.set(Calendar.SECOND,59); QueryWrapper query = Wrappers.query(); query.ge("oprate_day",startTime.getTime()); query.le("oprate_day",endTime.getTime()); query.ne("oprate_type",10); query.orderByDesc("num"); List logList = mapper.selectList(query); logList.forEach(log->{ Integer operateType = log.getOprateType(); switch (operateType){ case 1: log.setOperateTypeName(UserOperation.TYPE_LOGIN.getTypeName());break; case 2: log.setOperateTypeName(UserOperation.TYPE_LOGOUT.getTypeName());break; case 3: log.setOperateTypeName(UserOperation.TYPE_ADD.getTypeName());break; case 4: log.setOperateTypeName(UserOperation.TYPE_UPDATE.getTypeName());break; case 5: log.setOperateTypeName(UserOperation.TYPE_DELETE.getTypeName());break; case 7: log.setOperateTypeName(UserOperation.TYPE_CANCEL.getTypeName());break; case 9: log.setOperateTypeName(UserOperation.TYPE_STOP.getTypeName());break; case 11: log.setOperateTypeName(UserOperation.TYPE_DOWNLOAD.getTypeName());break; case 12: log.setOperateTypeName(UserOperation.TYPE_DOWNLOAD_PRODUCT.getTypeName());break; case 13: log.setOperateTypeName(UserOperation.TYPE_DOWNLOAD_MATERIAL.getTypeName());break; case 14: log.setOperateTypeName(UserOperation.TYPE_DOWNLOAD_SOFWARE.getTypeName());break; case -1: log.setOperateTypeName(UserOperation.TYPE_UNRECOGNIZED.getTypeName());break; case 20: log.setOperateTypeName(UserOperation.TYPE_UNAUTHORIZED_ACCESS.getTypeName());break; case 21: log.setOperateTypeName(UserOperation.TYPE_EXCEPTION.getTypeName());break; case 31: log.setOperateTypeName(UserOperation.TYPE_LOGIN_FAIL.getTypeName());break; case 32: log.setOperateTypeName(UserOperation.TYPE_PARAM_CHANGE.getTypeName());break; case 33: log.setOperateTypeName(UserOperation.TYPE_PASSWORD_CHANGE.getTypeName());break; case 34: log.setOperateTypeName(UserOperation.TYPE_LOGIN_TIMEOUT.getTypeName());break; case 35: log.setOperateTypeName(UserOperation.TYPE_LOGIN_NO_PASS.getTypeName());break; case 41: log.setOperateTypeName(UserOperation.TYPE_SEND_MAIL.getTypeName());break; default: log.setOperateTypeName(UserOperation.TYPE_UNRECOGNIZED.getTypeName());break; } }); return logList; } }