审计日志
This commit is contained in:
@@ -24,14 +24,14 @@ public class AuditParam {
|
||||
@Pattern(regexp = PatternRegex.TIME_FORMAT, message = "时间格式错误")
|
||||
private String searchEndTime;
|
||||
|
||||
@ApiModelProperty("用户名")
|
||||
private String userName;
|
||||
@ApiModelProperty("登录名")
|
||||
private String loginName;
|
||||
|
||||
@ApiModelProperty("事件类型")
|
||||
private String type;
|
||||
@ApiModelProperty("事件类型(0.业务事件 1.系统事件)")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("操作类型")
|
||||
private String operate;
|
||||
private String operateType;
|
||||
|
||||
@ApiModelProperty("页码")
|
||||
@NotNull(message = "页码不可为空")
|
||||
|
||||
@@ -17,13 +17,13 @@ public class AuditLogCusVO implements Serializable {
|
||||
* 操作人员
|
||||
*/
|
||||
@ApiModelProperty("操作人员")
|
||||
private String userName;
|
||||
private String LoginName;
|
||||
|
||||
/**
|
||||
* 操作类型
|
||||
*/
|
||||
@ApiModelProperty("操作类型")
|
||||
private String operate;
|
||||
private String operateType;
|
||||
|
||||
/**
|
||||
* 事件总数
|
||||
|
||||
@@ -35,7 +35,7 @@ public class AuditLogVO {
|
||||
* 事件类型
|
||||
*/
|
||||
@ApiModelProperty("事件类型")
|
||||
private String operateType;
|
||||
private String type;
|
||||
/**
|
||||
* 操作结果
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.njcn.system.pojo.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @version 1.0.0
|
||||
* @author: chenchao
|
||||
* @date: 2022/07/19 19:06
|
||||
*/
|
||||
@Data
|
||||
public class LogParamVO {
|
||||
|
||||
/**
|
||||
* 登录名
|
||||
*/
|
||||
@ApiModelProperty("登录名")
|
||||
private List<String> loginName;
|
||||
|
||||
/**
|
||||
* 操作类型
|
||||
*/
|
||||
@ApiModelProperty("操作类型")
|
||||
private List<String> operateType;
|
||||
|
||||
}
|
||||
@@ -7,7 +7,9 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.system.pojo.param.AuditParam;
|
||||
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
||||
import com.njcn.system.pojo.vo.AuditLogVO;
|
||||
import com.njcn.system.pojo.vo.LogParamVO;
|
||||
import com.njcn.system.service.AuditService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -64,15 +66,24 @@ public class AuditController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,res,methodDescribe);
|
||||
}
|
||||
|
||||
// @OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
// @PostMapping("/censusAuditLog")
|
||||
// @ApiOperation("审计日志统计")
|
||||
// @ApiImplicitParam(name = "auditParam", value = "审计日志参数", required = true)
|
||||
// public HttpResult<Page<AuditLogCusVO>> censusAuditLog(@RequestBody @Validated AuditParam auditParam){
|
||||
// String methodDescribe = getMethodDescribe("censusAuditLog");
|
||||
// Page<AuditLogCusVO> result = auditService.censusAuditLog(auditParam);
|
||||
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,result,methodDescribe);
|
||||
// }
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/censusAuditLog")
|
||||
@ApiOperation("审计日志统计")
|
||||
@ApiImplicitParam(name = "auditParam", value = "审计日志参数", required = true)
|
||||
public HttpResult<Page<AuditLogCusVO>> censusAuditLog(@RequestBody @Validated AuditParam auditParam){
|
||||
String methodDescribe = getMethodDescribe("censusAuditLog");
|
||||
Page<AuditLogCusVO> result = auditService.censusAuditLog(auditParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,result,methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
|
||||
@PostMapping("/saveLogParam")
|
||||
@ApiOperation("筛选下拉列表参数")
|
||||
public HttpResult<LogParamVO> saveLogParam() {
|
||||
String methodDescribe = getMethodDescribe("saveLogParam");
|
||||
LogParamVO result = auditService.saveLogParam();
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.system.pojo.dto.excel.UserLogExcel;
|
||||
import com.njcn.system.pojo.param.AuditParam;
|
||||
import com.njcn.system.pojo.po.UserLog;
|
||||
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@@ -24,5 +25,16 @@ public interface AuditMapper {
|
||||
* 查询需要备份的审计日志
|
||||
*/
|
||||
List<UserLogExcel> queryExportUser(@Param("ew") QueryWrapper<UserLogExcel> queryWrapper);
|
||||
|
||||
/**
|
||||
* 获取审计日志统计列表
|
||||
*/
|
||||
List<AuditLogCusVO> selectCensusAuditLog(@Param("auditParam") AuditParam auditParam);
|
||||
/**
|
||||
* 查询所有登录名
|
||||
*/
|
||||
List<String> selectLoginName();
|
||||
/**
|
||||
* 查询所有操作类型
|
||||
*/
|
||||
List<String> selectOperateType();
|
||||
}
|
||||
|
||||
@@ -8,6 +8,15 @@
|
||||
FROM sys_user_log
|
||||
WHERE update_time >= #{auditParam.searchBeginTime}
|
||||
AND #{auditParam.searchEndTime} >= update_time
|
||||
<if test="auditParam.loginName!=null">
|
||||
and login_name = #{auditParam.loginName}
|
||||
</if>
|
||||
<if test="auditParam.type!=null">
|
||||
and type = #{auditParam.type}
|
||||
</if>
|
||||
<if test="auditParam.operateType!=null">
|
||||
and operate_type = #{auditParam.operateType}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectAuditLog" resultType="UserLog">
|
||||
@@ -32,14 +41,14 @@
|
||||
sys_user_log
|
||||
WHERE update_time >= #{auditParam.searchBeginTime}
|
||||
AND #{auditParam.searchEndTime} >= update_time
|
||||
<if test="auditParam.userName!=null">
|
||||
and user_name = #{auditParam.userName}
|
||||
<if test="auditParam.loginName!=null">
|
||||
and login_name = #{auditParam.loginName}
|
||||
</if>
|
||||
<if test="auditParam.type!=null">
|
||||
and type = #{auditParam.type}
|
||||
</if>
|
||||
<if test="auditParam.operate!=null">
|
||||
and operate = #{auditParam.operate}
|
||||
<if test="auditParam.operateType!=null">
|
||||
and operate_type = #{auditParam.operateType}
|
||||
</if>
|
||||
AND id >= (select id from sys_user_log order by id limit #{auditParam.pageNum}, 1) limit #{auditParam.pageSize}
|
||||
</select>
|
||||
@@ -66,5 +75,43 @@
|
||||
Where ${ew.sqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="selectCensusAuditLog" resultType="AuditLogCusVO">
|
||||
SELECT
|
||||
login_name LoginName,
|
||||
operate_type operateType,
|
||||
count(id) AS count
|
||||
FROM sys_user_log
|
||||
WHERE user_name !=""
|
||||
AND user_name !="unknown user"
|
||||
AND operate != "unknown operate"
|
||||
AND update_time >= #{auditParam.searchBeginTime}
|
||||
AND #{auditParam.searchEndTime} >= update_time
|
||||
<if test="auditParam.loginName!=null">
|
||||
and login_name = #{auditParam.loginName}
|
||||
</if>
|
||||
<if test="auditParam.type!=null">
|
||||
and type = #{auditParam.type}
|
||||
</if>
|
||||
<if test="auditParam.operateType!=null">
|
||||
and operate_type = #{auditParam.operateType}
|
||||
</if>
|
||||
GROUP BY login_name, operate_type
|
||||
</select>
|
||||
|
||||
<select id="selectLoginName" resultType="String">
|
||||
SELECT
|
||||
login_name
|
||||
FROM sys_user_log
|
||||
WHERE login_name !=""
|
||||
AND login_name !="unknown user"
|
||||
GROUP BY login_name
|
||||
</select>
|
||||
|
||||
<select id="selectOperateType" resultType="String">
|
||||
SELECT
|
||||
operate_type
|
||||
FROM sys_user_log
|
||||
GROUP BY operate_type
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -6,6 +6,7 @@ import com.njcn.system.pojo.param.AuditParam;
|
||||
import com.njcn.system.pojo.po.UserLog;
|
||||
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
||||
import com.njcn.system.pojo.vo.AuditLogVO;
|
||||
import com.njcn.system.pojo.vo.LogParamVO;
|
||||
|
||||
/**
|
||||
* @version 1.0.0
|
||||
@@ -35,4 +36,8 @@ public interface AuditService extends IService<UserLog> {
|
||||
*/
|
||||
Page<AuditLogCusVO> censusAuditLog(AuditParam auditParam);
|
||||
|
||||
/**
|
||||
* 获取筛选下拉列表参数
|
||||
*/
|
||||
LogParamVO saveLogParam();
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||
import cn.afterturn.easypoi.excel.imports.ExcelImportService;
|
||||
import cn.afterturn.easypoi.exception.excel.ExcelImportException;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -18,6 +19,7 @@ import com.njcn.system.pojo.param.AuditParam;
|
||||
import com.njcn.system.pojo.po.UserLog;
|
||||
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
||||
import com.njcn.system.pojo.vo.AuditLogVO;
|
||||
import com.njcn.system.pojo.vo.LogParamVO;
|
||||
import com.njcn.system.service.AuditService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.compress.utils.IOUtils;
|
||||
@@ -76,7 +78,7 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
||||
AuditLogVO auditLogVO = new AuditLogVO();
|
||||
String updateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(userLog.getUpdateTime());
|
||||
auditLogVO.setTime(updateTime);
|
||||
if (userLog.getUserName().isEmpty()) {
|
||||
if (userLog.getUserName()==null || userLog.getUserName().equals("")) {
|
||||
auditLogVO.setUserName(userLog.getLoginName());
|
||||
} else {
|
||||
auditLogVO.setUserName(userLog.getUserName());
|
||||
@@ -91,7 +93,7 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
||||
describe.append("失败").append(",失败原因为").append(userLog.getFailReason());
|
||||
}
|
||||
auditLogVO.setDescribe(describe.toString());
|
||||
auditLogVO.setOperateType(userLog.getType() == 0 ? "业务事件" : "系统事件");
|
||||
auditLogVO.setType(userLog.getType() == 0 ? "业务事件" : "系统事件");
|
||||
auditLogVO.setResult(userLog.getResult() == 0 ? "失败" : "成功");
|
||||
auditLogVO.setIp(userLog.getIp());
|
||||
if (userLog.getLevel()==0) {
|
||||
@@ -126,6 +128,7 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
||||
File file = new File(filePath.getPath() + File.separator + nowDate +" sys_user_log.xlsx");
|
||||
ExcelUtil.exportExcelWithTargetFile(file, UserLogExcel.class, excelList);
|
||||
|
||||
//备份为txt
|
||||
// QueryWrapper<UserLog> queryWrapper = new QueryWrapper<>();
|
||||
// queryWrapper.ge("sys_user_log.update_time",date);
|
||||
// List<UserLog> userLogs = userLogMapper.selectList(queryWrapper);
|
||||
@@ -163,7 +166,6 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
||||
if (!file.exists()) {
|
||||
throw new BusinessException(AuditLogEnum.NOT_FIND_FILE);
|
||||
}
|
||||
|
||||
ImportParams params = new ImportParams();
|
||||
params.setHeadRows(1);//表头
|
||||
params.setTitleRows(0);//标题行数
|
||||
@@ -173,7 +175,6 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
||||
params.setSheetNum(1);
|
||||
|
||||
FileInputStream in = null;
|
||||
|
||||
try {
|
||||
in = new FileInputStream(file);
|
||||
List<UserLogExcel> excelList = new ExcelImportService().importExcelByIs(in, UserLogExcel.class, params, false).getList();
|
||||
@@ -192,7 +193,6 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
||||
IOUtils.closeQuietly(in);
|
||||
}
|
||||
|
||||
|
||||
// try {
|
||||
// // FileInputStream in = new FileInputStream(file);
|
||||
// MultipartFile multipartFile = getMultipartFile(file);
|
||||
@@ -217,19 +217,28 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
||||
page.setSize(auditParam.getPageSize());
|
||||
page.setCurrent(auditParam.getPageNum());
|
||||
//待分页数据总量
|
||||
int count = auditMapper.getCount(auditParam);
|
||||
page.setTotal(count);
|
||||
List<AuditLogCusVO> auditLogCusVOS = auditMapper.selectCensusAuditLog(auditParam);
|
||||
page.setTotal(auditLogCusVOS.size());
|
||||
//分页总页数
|
||||
int pages = (int)Math.ceil(count*1.0/auditParam.getPageSize());
|
||||
int pages = (int)Math.ceil(page.getTotal()*1.0/auditParam.getPageSize());
|
||||
page.setPages(pages);
|
||||
|
||||
auditParam.setPageNum(auditParam.getPageSize()*(auditParam.getPageNum()-1));
|
||||
List<UserLog> userLogs = auditMapper.selectAuditLog(auditParam);
|
||||
|
||||
|
||||
if (!CollectionUtils.isEmpty(auditLogCusVOS)) {
|
||||
List<List<AuditLogCusVO>> pageList = Lists.partition(auditLogCusVOS, auditParam.getPageSize());
|
||||
auditLogVOS = pageList.get(auditParam.getPageNum() - 1);
|
||||
}
|
||||
page.setRecords(auditLogVOS);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogParamVO saveLogParam() {
|
||||
LogParamVO logParamVO = new LogParamVO();
|
||||
logParamVO.setLoginName(auditMapper.selectLoginName());
|
||||
logParamVO.setOperateType(auditMapper.selectOperateType());
|
||||
return logParamVO;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user