审计日志

This commit is contained in:
陈超
2022-07-19 20:09:40 +08:00
parent bd657bfe6f
commit 2a619ec235
9 changed files with 146 additions and 34 deletions

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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>

View File

@@ -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();
}

View File

@@ -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;
}
}