♻️ log 模块拆分
This commit is contained in:
@@ -73,5 +73,9 @@
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-notify-controller</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-log-controller</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -1,45 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.controller;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminOperationLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminOperationLogPageVO;
|
||||
import com.hccake.ballcat.admin.modules.log.service.OperationLogAdminService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.ballcat.common.model.result.R;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/log/adminoperationlog")
|
||||
@Api(value = "adminoperationlog", tags = "操作日志管理")
|
||||
public class AdminOperationLogController {
|
||||
|
||||
private final OperationLogAdminService operationLogAdminService;
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param adminOperationLogQO 操作日志
|
||||
* @return R
|
||||
*/
|
||||
@ApiOperation(value = "分页查询", notes = "分页查询")
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@per.hasPermission('log:adminoperationlog:read')")
|
||||
public R<PageResult<AdminOperationLogPageVO>> getOperationLogAdminPage(PageParam pageParam,
|
||||
AdminOperationLogQO adminOperationLogQO) {
|
||||
return R.ok(operationLogAdminService.queryPage(pageParam, adminOperationLogQO));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.converter;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminAccessLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminAccessLogPageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 访问日志
|
||||
*
|
||||
* @author hccake 2021-03-22 20:23:41
|
||||
*/
|
||||
@Mapper
|
||||
public interface AdminAccessLogConverter {
|
||||
|
||||
AdminAccessLogConverter INSTANCE = Mappers.getMapper(AdminAccessLogConverter.class);
|
||||
|
||||
/**
|
||||
* PO 转 PageVO
|
||||
* @param adminAccessLog 访问日志
|
||||
* @return AdminAccessLogVO 访问日志VO
|
||||
*/
|
||||
AdminAccessLogPageVO poToPageVo(AdminAccessLog adminAccessLog);
|
||||
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.converter;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminLoginLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminLoginLogPageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 登陆日志模型转换器
|
||||
*
|
||||
* @author hccake 2021-03-22 20:28:16
|
||||
*/
|
||||
@Mapper
|
||||
public interface AdminLoginLogConverter {
|
||||
|
||||
AdminLoginLogConverter INSTANCE = Mappers.getMapper(AdminLoginLogConverter.class);
|
||||
|
||||
/**
|
||||
* PO 转 PageVO
|
||||
* @param adminLoginLog 登陆日志
|
||||
* @return AdminLoginLogPageVO 登陆日志PageVO
|
||||
*/
|
||||
AdminLoginLogPageVO poToPageVo(AdminLoginLog adminLoginLog);
|
||||
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.converter;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminOperationLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminOperationLogPageVO;
|
||||
import com.hccake.ballcat.commom.log.operation.model.OperationLogDTO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 操作日志模型转换器
|
||||
*
|
||||
* @author hccake 2021-03-22 20:32:30
|
||||
*/
|
||||
@Mapper
|
||||
public interface AdminOperationLogConverter {
|
||||
|
||||
AdminOperationLogConverter INSTANCE = Mappers.getMapper(AdminOperationLogConverter.class);
|
||||
|
||||
/**
|
||||
* PO 转 PageVO
|
||||
* @param adminOperationLog 操作日志
|
||||
* @return AdminOperationLogPageVO 操作日志PageVO
|
||||
*/
|
||||
AdminOperationLogPageVO poToPageVo(AdminOperationLog adminOperationLog);
|
||||
|
||||
/**
|
||||
* 转换OperationLog 为 OperationLogAdmin
|
||||
* @param operationLogDTO 操作日志DTO
|
||||
* @return AdminOperationLog
|
||||
*/
|
||||
AdminOperationLog dtoToPo(OperationLogDTO operationLogDTO);
|
||||
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.handler;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.converter.AdminOperationLogConverter;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminOperationLog;
|
||||
import com.hccake.ballcat.admin.modules.log.service.OperationLogAdminService;
|
||||
import com.hccake.ballcat.commom.log.operation.model.OperationLogDTO;
|
||||
import com.hccake.ballcat.commom.log.operation.service.OperationLogHandler;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author Hccake
|
||||
* @version 1.0
|
||||
* @date 2020/5/25 20:38
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AdminOperationLogHandler implements OperationLogHandler {
|
||||
|
||||
private final OperationLogAdminService operationLogAdminService;
|
||||
|
||||
/**
|
||||
* 保存操作日志
|
||||
* @param operationLogDTO 操作日志DTO
|
||||
*/
|
||||
@Override
|
||||
public void saveLog(OperationLogDTO operationLogDTO) {
|
||||
AdminOperationLog adminOperationLog = AdminOperationLogConverter.INSTANCE.dtoToPo(operationLogDTO);
|
||||
operationLogAdminService.save(adminOperationLog);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.hccake.ballcat.admin.modules.log.converter.AdminAccessLogConverter;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminAccessLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminAccessLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminAccessLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.hccake.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.hccake.extend.mybatis.plus.toolkit.WrappersX;
|
||||
|
||||
/**
|
||||
* 后台访问日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
public interface AdminAccessLogMapper extends ExtendMapper<AdminAccessLog> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询对象
|
||||
* @return 分页结果数据 PageResult
|
||||
*/
|
||||
default PageResult<AdminAccessLogPageVO> queryPage(PageParam pageParam, AdminAccessLogQO qo) {
|
||||
IPage<AdminAccessLog> page = this.prodPage(pageParam);
|
||||
LambdaQueryWrapperX<AdminAccessLog> wrapperX = WrappersX.lambdaQueryX(AdminAccessLog.class)
|
||||
.eqIfPresent(AdminAccessLog::getUserId, qo.getUserId())
|
||||
.eqIfPresent(AdminAccessLog::getTraceId, qo.getTraceId())
|
||||
.eqIfPresent(AdminAccessLog::getMatchingPattern, qo.getMatchingPattern())
|
||||
.eqIfPresent(AdminAccessLog::getIp, qo.getIp())
|
||||
.gtIfPresent(AdminAccessLog::getCreateTime, qo.getStartTime())
|
||||
.ltIfPresent(AdminAccessLog::getCreateTime, qo.getEndTime());
|
||||
this.selectPage(page, wrapperX);
|
||||
IPage<AdminAccessLogPageVO> voPage = page.convert(AdminAccessLogConverter.INSTANCE::poToPageVo);
|
||||
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.hccake.ballcat.admin.modules.log.converter.AdminLoginLogConverter;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminLoginLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminLoginLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminLoginLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.hccake.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.hccake.extend.mybatis.plus.toolkit.WrappersX;
|
||||
|
||||
/**
|
||||
* 登陆日志
|
||||
*
|
||||
* @author hccake 2020-09-16 20:21:10
|
||||
*/
|
||||
public interface AdminLoginLogMapper extends ExtendMapper<AdminLoginLog> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询对象
|
||||
* @return 分页结果数据 PageResult
|
||||
*/
|
||||
default PageResult<AdminLoginLogPageVO> queryPage(PageParam pageParam, AdminLoginLogQO qo) {
|
||||
IPage<AdminLoginLog> page = this.prodPage(pageParam);
|
||||
LambdaQueryWrapperX<AdminLoginLog> wrapperX = WrappersX.lambdaQueryX(AdminLoginLog.class)
|
||||
.eqIfPresent(AdminLoginLog::getUsername, qo.getUsername())
|
||||
.eqIfPresent(AdminLoginLog::getTraceId, qo.getTraceId()).eqIfPresent(AdminLoginLog::getIp, qo.getIp())
|
||||
.eqIfPresent(AdminLoginLog::getEventType, qo.getEventType())
|
||||
.eqIfPresent(AdminLoginLog::getStatus, qo.getStatus())
|
||||
.gtIfPresent(AdminLoginLog::getLoginTime, qo.getStartTime())
|
||||
.ltIfPresent(AdminLoginLog::getLoginTime, qo.getEndTime());
|
||||
this.selectPage(page, wrapperX);
|
||||
IPage<AdminLoginLogPageVO> voPage = page.convert(AdminLoginLogConverter.INSTANCE::poToPageVo);
|
||||
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.hccake.ballcat.admin.modules.log.converter.AdminOperationLogConverter;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminOperationLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminOperationLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminOperationLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.hccake.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.hccake.extend.mybatis.plus.toolkit.WrappersX;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
public interface AdminOperationLogMapper extends ExtendMapper<AdminOperationLog> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询对象
|
||||
* @return 分页结果数据 PageResult
|
||||
*/
|
||||
default PageResult<AdminOperationLogPageVO> queryPage(PageParam pageParam, AdminOperationLogQO qo) {
|
||||
IPage<AdminOperationLog> page = this.prodPage(pageParam);
|
||||
LambdaQueryWrapperX<AdminOperationLog> wrapperX = WrappersX.lambdaQueryX(AdminOperationLog.class)
|
||||
.eqIfPresent(AdminOperationLog::getOperator, qo.getUserId())
|
||||
.eqIfPresent(AdminOperationLog::getTraceId, qo.getTraceId())
|
||||
.eqIfPresent(AdminOperationLog::getUri, qo.getUri()).eqIfPresent(AdminOperationLog::getIp, qo.getIp())
|
||||
.eqIfPresent(AdminOperationLog::getStatus, qo.getStatus())
|
||||
.eqIfPresent(AdminOperationLog::getType, qo.getType())
|
||||
.gtIfPresent(AdminOperationLog::getCreateTime, qo.getStartTime())
|
||||
.ltIfPresent(AdminOperationLog::getCreateTime, qo.getEndTime());
|
||||
this.selectPage(page, wrapperX);
|
||||
IPage<AdminOperationLogPageVO> voPage = page.convert(AdminOperationLogConverter.INSTANCE::poToPageVo);
|
||||
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.service;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminAccessLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminAccessLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminAccessLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.ExtendService;
|
||||
|
||||
/**
|
||||
* 后台访问日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
public interface AdminAccessLogService extends ExtendService<AdminAccessLog> {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param page 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
PageResult<AdminAccessLogPageVO> queryPage(PageParam page, AdminAccessLogQO qo);
|
||||
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.service;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminLoginLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminLoginLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminLoginLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.ExtendService;
|
||||
|
||||
/**
|
||||
* 登陆日志
|
||||
*
|
||||
* @author hccake 2020-09-16 20:21:10
|
||||
*/
|
||||
public interface AdminLoginLogService extends ExtendService<AdminLoginLog> {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param page 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
PageResult<AdminLoginLogPageVO> queryPage(PageParam page, AdminLoginLogQO qo);
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.service;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminOperationLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminOperationLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminOperationLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.ExtendService;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
public interface OperationLogAdminService extends ExtendService<AdminOperationLog> {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
PageResult<AdminOperationLogPageVO> queryPage(PageParam pageParam, AdminOperationLogQO qo);
|
||||
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.service.impl;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.mapper.AdminAccessLogMapper;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminAccessLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminAccessLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminAccessLogPageVO;
|
||||
import com.hccake.ballcat.admin.modules.log.service.AdminAccessLogService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 后台访问日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AdminAccessLogServiceImpl extends ExtendServiceImpl<AdminAccessLogMapper, AdminAccessLog>
|
||||
implements AdminAccessLogService {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return IPage<LoginLogVO> 分页数据
|
||||
*/
|
||||
@Override
|
||||
public PageResult<AdminAccessLogPageVO> queryPage(PageParam pageParam, AdminAccessLogQO qo) {
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.service.impl;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.mapper.AdminLoginLogMapper;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminLoginLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminLoginLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminLoginLogPageVO;
|
||||
import com.hccake.ballcat.admin.modules.log.service.AdminLoginLogService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 登陆日志
|
||||
*
|
||||
* @author hccake 2020-09-16 20:21:10
|
||||
*/
|
||||
@Service
|
||||
public class AdminLoginLogServiceImpl extends ExtendServiceImpl<AdminLoginLogMapper, AdminLoginLog>
|
||||
implements AdminLoginLogService {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
@Override
|
||||
public PageResult<AdminLoginLogPageVO> queryPage(PageParam pageParam, AdminLoginLogQO qo) {
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package com.hccake.ballcat.admin.modules.log.service.impl;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.mapper.AdminOperationLogMapper;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminOperationLog;
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminOperationLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminOperationLogPageVO;
|
||||
import com.hccake.ballcat.admin.modules.log.service.OperationLogAdminService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
@Service
|
||||
public class OperationLogAdminServiceImpl extends ExtendServiceImpl<AdminOperationLogMapper, AdminOperationLog>
|
||||
implements OperationLogAdminService {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
@Override
|
||||
public PageResult<AdminOperationLogPageVO> queryPage(PageParam pageParam, AdminOperationLogQO qo) {
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -311,7 +311,22 @@
|
||||
<artifactId>ballcat-notify-model</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- log 日志模块 -->
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-log-controller</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-log-biz</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-log-model</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<!--swagger注解-->
|
||||
<dependency>
|
||||
|
||||
34
ballcat-log/ballcat-log-biz/pom.xml
Normal file
34
ballcat-log/ballcat-log-biz/pom.xml
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ballcat-log</artifactId>
|
||||
<groupId>com.hccake</groupId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ballcat-log-biz</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-log-model</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-oauth-model</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-spring-boot-starter-log</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-extend-mybatis-plus</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.hccake.ballcat.admin.modules.log.handler;
|
||||
package com.hccake.ballcat.log.handler;
|
||||
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminAccessLog;
|
||||
import com.hccake.ballcat.admin.modules.log.thread.AccessLogAdminSaveThread;
|
||||
import com.hccake.ballcat.commom.log.access.handler.AccessLogHandler;
|
||||
import com.hccake.ballcat.commom.log.constant.LogConstant;
|
||||
import com.hccake.ballcat.commom.log.util.LogUtils;
|
||||
@@ -10,12 +8,13 @@ import com.hccake.ballcat.common.desensitize.DesensitizationHandlerHolder;
|
||||
import com.hccake.ballcat.common.desensitize.enums.RegexDesensitizationTypeEnum;
|
||||
import com.hccake.ballcat.common.util.IpUtils;
|
||||
import com.hccake.ballcat.common.util.JsonUtils;
|
||||
import com.hccake.ballcat.log.model.entity.AccessLog;
|
||||
import com.hccake.ballcat.log.thread.AccessLogSaveThread;
|
||||
import com.hccake.ballcat.oauth.SysUserDetails;
|
||||
import com.hccake.ballcat.oauth.util.SecurityUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.servlet.HandlerMapping;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -33,13 +32,12 @@ import java.util.Optional;
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AdminAccessLogHandler implements AccessLogHandler<AdminAccessLog> {
|
||||
public class CustomAccessLogHandler implements AccessLogHandler<AccessLog> {
|
||||
|
||||
private static final String APPLICATION_JSON = "application/json";
|
||||
|
||||
private final AccessLogAdminSaveThread accessLogAdminSaveThread;
|
||||
private final AccessLogSaveThread accessLogSaveThread;
|
||||
|
||||
/**
|
||||
* 需要脱敏记录的参数
|
||||
@@ -55,13 +53,13 @@ public class AdminAccessLogHandler implements AccessLogHandler<AdminAccessLog> {
|
||||
* @param myThrowable 异常信息
|
||||
*/
|
||||
@Override
|
||||
public AdminAccessLog prodLog(HttpServletRequest request, HttpServletResponse response, Long time,
|
||||
public AccessLog prodLog(HttpServletRequest request, HttpServletResponse response, Long time,
|
||||
Throwable myThrowable) {
|
||||
Object matchingPatternAttr = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
|
||||
String matchingPattern = matchingPatternAttr == null ? "" : String.valueOf(matchingPatternAttr);
|
||||
// @formatter:off
|
||||
String uri = URLUtil.getPath(request.getRequestURI());
|
||||
AdminAccessLog adminAccessLog = new AdminAccessLog()
|
||||
AccessLog accessLog = new AccessLog()
|
||||
.setTraceId(MDC.get(LogConstant.TRACE_ID))
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setTime(time)
|
||||
@@ -76,28 +74,28 @@ public class AdminAccessLogHandler implements AccessLogHandler<AdminAccessLog> {
|
||||
|
||||
// 参数获取
|
||||
String params = getParams(request);
|
||||
adminAccessLog.setReqParams(params);
|
||||
accessLog.setReqParams(params);
|
||||
|
||||
// 非文件上传请求,记录body,用户改密时不记录body
|
||||
// TODO 使用注解控制此次请求是否记录body,更方便个性化定制
|
||||
if (!LogUtils.isMultipartContent(request) && "/sysuser/pass/{userId}".equals(uri)) {
|
||||
adminAccessLog.setReqBody(LogUtils.getRequestBody(request));
|
||||
accessLog.setReqBody(LogUtils.getRequestBody(request));
|
||||
}
|
||||
|
||||
// 只记录响应头为 application/json 的返回数据
|
||||
// 后台日志对于分页数据请求,不记录返回值
|
||||
if (!uri.endsWith("/page") && response.getContentType() != null
|
||||
&& response.getContentType().contains(APPLICATION_JSON)) {
|
||||
adminAccessLog.setResult(LogUtils.getResponseBody(request, response));
|
||||
accessLog.setResult(LogUtils.getResponseBody(request, response));
|
||||
}
|
||||
|
||||
// 如果登陆用户 则记录用户名和用户id
|
||||
Optional.ofNullable(SecurityUtils.getSysUserDetails()).map(SysUserDetails::getSysUser).ifPresent(x -> {
|
||||
adminAccessLog.setUserId(x.getUserId());
|
||||
adminAccessLog.setUsername(x.getUsername());
|
||||
accessLog.setUserId(x.getUserId());
|
||||
accessLog.setUsername(x.getUsername());
|
||||
});
|
||||
|
||||
return adminAccessLog;
|
||||
return accessLog;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -131,8 +129,8 @@ public class AdminAccessLogHandler implements AccessLogHandler<AdminAccessLog> {
|
||||
* @param accessLog 访问日志
|
||||
*/
|
||||
@Override
|
||||
public void saveLog(AdminAccessLog accessLog) {
|
||||
accessLogAdminSaveThread.put(accessLog);
|
||||
public void saveLog(AccessLog accessLog) {
|
||||
accessLogSaveThread.put(accessLog);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.hccake.ballcat.log.handler;
|
||||
|
||||
import com.hccake.ballcat.commom.log.operation.model.OperationLogDTO;
|
||||
import com.hccake.ballcat.commom.log.operation.service.OperationLogHandler;
|
||||
import com.hccake.ballcat.log.converter.OperationLogConverter;
|
||||
import com.hccake.ballcat.log.model.entity.OperationLog;
|
||||
import com.hccake.ballcat.log.service.OperationLogService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author Hccake
|
||||
* @version 1.0
|
||||
* @date 2020/5/25 20:38
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public class CustomOperationLogHandler implements OperationLogHandler {
|
||||
|
||||
private final OperationLogService operationLogService;
|
||||
|
||||
/**
|
||||
* 保存操作日志
|
||||
* @param operationLogDTO 操作日志DTO
|
||||
*/
|
||||
@Override
|
||||
public void saveLog(OperationLogDTO operationLogDTO) {
|
||||
OperationLog operationLog = OperationLogConverter.INSTANCE.dtoToPo(operationLogDTO);
|
||||
operationLogService.save(operationLog);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
package com.hccake.ballcat.admin.modules.log.listener;
|
||||
package com.hccake.ballcat.log.handler;
|
||||
|
||||
import cn.hutool.http.useragent.UserAgent;
|
||||
import cn.hutool.http.useragent.UserAgentUtil;
|
||||
import com.hccake.ballcat.admin.constants.LoginEventTypeEnum;
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminLoginLog;
|
||||
import com.hccake.ballcat.admin.modules.log.service.AdminLoginLogService;
|
||||
import com.hccake.ballcat.commom.log.constant.LogConstant;
|
||||
import com.hccake.ballcat.commom.log.operation.enums.LogStatusEnum;
|
||||
import com.hccake.ballcat.commom.log.util.LogUtils;
|
||||
import com.hccake.ballcat.common.util.IpUtils;
|
||||
import com.hccake.ballcat.log.enums.LoginEventTypeEnum;
|
||||
import com.hccake.ballcat.log.model.entity.LoginLog;
|
||||
import com.hccake.ballcat.log.service.LoginLogService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.context.event.EventListener;
|
||||
@@ -16,7 +16,6 @@ import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||
import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent;
|
||||
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
|
||||
import org.springframework.security.authentication.event.LogoutSuccessEvent;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -30,10 +29,9 @@ import java.util.HashMap;
|
||||
* @date 2020 /6/9 20:52
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Component
|
||||
public class LoginEventListener {
|
||||
public class LoginLogHandler {
|
||||
|
||||
private final AdminLoginLogService adminLoginLogService;
|
||||
private final LoginLogService loginLogService;
|
||||
|
||||
/**
|
||||
* 登陆成功时间监听 记录用户登录日志
|
||||
@@ -50,9 +48,9 @@ public class LoginEventListener {
|
||||
// TODO 暂时只记录了 password 模式,其他的第三方登陆,等 spring-authorization-server 孵化后重构
|
||||
// https://github.com/spring-projects-experimental/spring-authorization-server
|
||||
if ("password".equals(((HashMap) details).get("grant_type"))) {
|
||||
AdminLoginLog adminLoginLog = prodLoginLog(source).setMsg("登陆成功")
|
||||
.setStatus(LogStatusEnum.SUCCESS.getValue()).setEventType(LoginEventTypeEnum.LOGIN.getValue());
|
||||
adminLoginLogService.save(adminLoginLog);
|
||||
LoginLog loginLog = prodLoginLog(source).setMsg("登陆成功").setStatus(LogStatusEnum.SUCCESS.getValue())
|
||||
.setEventType(LoginEventTypeEnum.LOGIN.getValue());
|
||||
loginLogService.save(loginLog);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,9 +61,9 @@ public class LoginEventListener {
|
||||
@EventListener(AbstractAuthenticationFailureEvent.class)
|
||||
public void onAuthenticationFailureEvent(AbstractAuthenticationFailureEvent event) {
|
||||
AbstractAuthenticationToken source = (AbstractAuthenticationToken) event.getSource();
|
||||
AdminLoginLog adminLoginLog = prodLoginLog(source).setMsg(event.getException().getMessage())
|
||||
LoginLog loginLog = prodLoginLog(source).setMsg(event.getException().getMessage())
|
||||
.setEventType(LoginEventTypeEnum.LOGIN.getValue()).setStatus(LogStatusEnum.FAIL.getValue());
|
||||
adminLoginLogService.save(adminLoginLog);
|
||||
loginLogService.save(loginLog);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -75,9 +73,8 @@ public class LoginEventListener {
|
||||
@EventListener(LogoutSuccessEvent.class)
|
||||
public void onLogoutSuccessEvent(LogoutSuccessEvent event) {
|
||||
AbstractAuthenticationToken source = (AbstractAuthenticationToken) event.getSource();
|
||||
AdminLoginLog adminLoginLog = prodLoginLog(source).setMsg("登出成功")
|
||||
.setEventType(LoginEventTypeEnum.LOGOUT.getValue());
|
||||
adminLoginLogService.save(adminLoginLog);
|
||||
LoginLog loginLog = prodLoginLog(source).setMsg("登出成功").setEventType(LoginEventTypeEnum.LOGOUT.getValue());
|
||||
loginLogService.save(loginLog);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,18 +82,18 @@ public class LoginEventListener {
|
||||
* @param source AbstractAuthenticationToken 当前token
|
||||
* @return LoginLog 登陆日志
|
||||
*/
|
||||
private AdminLoginLog prodLoginLog(AbstractAuthenticationToken source) {
|
||||
private LoginLog prodLoginLog(AbstractAuthenticationToken source) {
|
||||
// 获取 Request
|
||||
HttpServletRequest request = LogUtils.getHttpServletRequest();
|
||||
AdminLoginLog adminLoginLog = new AdminLoginLog().setLoginTime(LocalDateTime.now())
|
||||
.setIp(IpUtils.getIpAddr(request)).setStatus(LogStatusEnum.SUCCESS.getValue())
|
||||
.setTraceId(MDC.get(LogConstant.TRACE_ID)).setUsername(source.getName());
|
||||
LoginLog loginLog = new LoginLog().setLoginTime(LocalDateTime.now()).setIp(IpUtils.getIpAddr(request))
|
||||
.setStatus(LogStatusEnum.SUCCESS.getValue()).setTraceId(MDC.get(LogConstant.TRACE_ID))
|
||||
.setUsername(source.getName());
|
||||
// 根据 ua 获取浏览器和操作系统
|
||||
UserAgent ua = UserAgentUtil.parse(request.getHeader("user-agent"));
|
||||
if (ua != null) {
|
||||
adminLoginLog.setBrowser(ua.getBrowser().getName()).setOs(ua.getOs().getName());
|
||||
loginLog.setBrowser(ua.getBrowser().getName()).setOs(ua.getOs().getName());
|
||||
}
|
||||
return adminLoginLog;
|
||||
return loginLog;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.hccake.ballcat.log.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.hccake.ballcat.log.converter.AccessLogConverter;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.ballcat.log.model.entity.AccessLog;
|
||||
import com.hccake.ballcat.log.model.qo.AccessLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.AccessLogPageVO;
|
||||
import com.hccake.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.hccake.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.hccake.extend.mybatis.plus.toolkit.WrappersX;
|
||||
|
||||
/**
|
||||
* 后台访问日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
public interface AccessLogMapper extends ExtendMapper<AccessLog> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询对象
|
||||
* @return 分页结果数据 PageResult
|
||||
*/
|
||||
default PageResult<AccessLogPageVO> queryPage(PageParam pageParam, AccessLogQO qo) {
|
||||
IPage<AccessLog> page = this.prodPage(pageParam);
|
||||
LambdaQueryWrapperX<AccessLog> wrapperX = WrappersX.lambdaQueryX(AccessLog.class)
|
||||
.eqIfPresent(AccessLog::getUserId, qo.getUserId()).eqIfPresent(AccessLog::getTraceId, qo.getTraceId())
|
||||
.eqIfPresent(AccessLog::getMatchingPattern, qo.getMatchingPattern())
|
||||
.eqIfPresent(AccessLog::getUri, qo.getUri()).eqIfPresent(AccessLog::getHttpStatus, qo.getHttpStatus())
|
||||
.eqIfPresent(AccessLog::getIp, qo.getIp()).gtIfPresent(AccessLog::getCreateTime, qo.getStartTime())
|
||||
.ltIfPresent(AccessLog::getCreateTime, qo.getEndTime());
|
||||
this.selectPage(page, wrapperX);
|
||||
IPage<AccessLogPageVO> voPage = page.convert(AccessLogConverter.INSTANCE::poToPageVo);
|
||||
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.hccake.ballcat.log.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.hccake.ballcat.log.converter.LoginLogConverter;
|
||||
import com.hccake.ballcat.log.model.entity.LoginLog;
|
||||
import com.hccake.ballcat.log.model.qo.LoginLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.LoginLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.hccake.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.hccake.extend.mybatis.plus.toolkit.WrappersX;
|
||||
|
||||
/**
|
||||
* 登陆日志
|
||||
*
|
||||
* @author hccake 2020-09-16 20:21:10
|
||||
*/
|
||||
public interface LoginLogMapper extends ExtendMapper<LoginLog> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询对象
|
||||
* @return 分页结果数据 PageResult
|
||||
*/
|
||||
default PageResult<LoginLogPageVO> queryPage(PageParam pageParam, LoginLogQO qo) {
|
||||
IPage<LoginLog> page = this.prodPage(pageParam);
|
||||
LambdaQueryWrapperX<LoginLog> wrapperX = WrappersX.lambdaQueryX(LoginLog.class)
|
||||
.eqIfPresent(LoginLog::getUsername, qo.getUsername()).eqIfPresent(LoginLog::getTraceId, qo.getTraceId())
|
||||
.eqIfPresent(LoginLog::getIp, qo.getIp()).eqIfPresent(LoginLog::getEventType, qo.getEventType())
|
||||
.eqIfPresent(LoginLog::getStatus, qo.getStatus()).gtIfPresent(LoginLog::getLoginTime, qo.getStartTime())
|
||||
.ltIfPresent(LoginLog::getLoginTime, qo.getEndTime());
|
||||
this.selectPage(page, wrapperX);
|
||||
IPage<LoginLogPageVO> voPage = page.convert(LoginLogConverter.INSTANCE::poToPageVo);
|
||||
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.hccake.ballcat.log.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.hccake.ballcat.log.converter.OperationLogConverter;
|
||||
import com.hccake.ballcat.log.model.entity.OperationLog;
|
||||
import com.hccake.ballcat.log.model.qo.OperationLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.OperationLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX;
|
||||
import com.hccake.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.hccake.extend.mybatis.plus.toolkit.WrappersX;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
public interface OperationLogMapper extends ExtendMapper<OperationLog> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询对象
|
||||
* @return 分页结果数据 PageResult
|
||||
*/
|
||||
default PageResult<OperationLogPageVO> queryPage(PageParam pageParam, OperationLogQO qo) {
|
||||
IPage<OperationLog> page = this.prodPage(pageParam);
|
||||
LambdaQueryWrapperX<OperationLog> wrapperX = WrappersX.lambdaQueryX(OperationLog.class)
|
||||
.eqIfPresent(OperationLog::getOperator, qo.getUserId())
|
||||
.eqIfPresent(OperationLog::getTraceId, qo.getTraceId()).eqIfPresent(OperationLog::getUri, qo.getUri())
|
||||
.eqIfPresent(OperationLog::getIp, qo.getIp()).eqIfPresent(OperationLog::getStatus, qo.getStatus())
|
||||
.eqIfPresent(OperationLog::getType, qo.getType()).likeIfPresent(OperationLog::getMsg, qo.getMsg())
|
||||
.gtIfPresent(OperationLog::getCreateTime, qo.getStartTime())
|
||||
.ltIfPresent(OperationLog::getCreateTime, qo.getEndTime());
|
||||
this.selectPage(page, wrapperX);
|
||||
IPage<OperationLogPageVO> voPage = page.convert(OperationLogConverter.INSTANCE::poToPageVo);
|
||||
return new PageResult<>(voPage.getRecords(), voPage.getTotal());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.hccake.ballcat.log.service;
|
||||
|
||||
import com.hccake.ballcat.log.model.entity.AccessLog;
|
||||
import com.hccake.ballcat.log.model.qo.AccessLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.AccessLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.ExtendService;
|
||||
|
||||
/**
|
||||
* 后台访问日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
public interface AccessLogService extends ExtendService<AccessLog> {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param page 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
PageResult<AccessLogPageVO> queryPage(PageParam page, AccessLogQO qo);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.hccake.ballcat.log.service;
|
||||
|
||||
import com.hccake.ballcat.log.model.entity.LoginLog;
|
||||
import com.hccake.ballcat.log.model.qo.LoginLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.LoginLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.ExtendService;
|
||||
|
||||
/**
|
||||
* 登陆日志
|
||||
*
|
||||
* @author hccake 2020-09-16 20:21:10
|
||||
*/
|
||||
public interface LoginLogService extends ExtendService<LoginLog> {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param page 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
PageResult<LoginLogPageVO> queryPage(PageParam page, LoginLogQO qo);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.hccake.ballcat.log.service;
|
||||
|
||||
import com.hccake.ballcat.log.model.entity.OperationLog;
|
||||
import com.hccake.ballcat.log.model.qo.OperationLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.OperationLogPageVO;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.ExtendService;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
public interface OperationLogService extends ExtendService<OperationLog> {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
PageResult<OperationLogPageVO> queryPage(PageParam pageParam, OperationLogQO qo);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.hccake.ballcat.log.service.impl;
|
||||
|
||||
import com.hccake.ballcat.log.mapper.AccessLogMapper;
|
||||
import com.hccake.ballcat.log.model.entity.AccessLog;
|
||||
import com.hccake.ballcat.log.model.qo.AccessLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.AccessLogPageVO;
|
||||
import com.hccake.ballcat.log.service.AccessLogService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 后台访问日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AccessLogServiceImpl extends ExtendServiceImpl<AccessLogMapper, AccessLog> implements AccessLogService {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return IPage<LoginLogVO> 分页数据
|
||||
*/
|
||||
@Override
|
||||
public PageResult<AccessLogPageVO> queryPage(PageParam pageParam, AccessLogQO qo) {
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.hccake.ballcat.log.service.impl;
|
||||
|
||||
import com.hccake.ballcat.log.mapper.LoginLogMapper;
|
||||
import com.hccake.ballcat.log.model.entity.LoginLog;
|
||||
import com.hccake.ballcat.log.model.qo.LoginLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.LoginLogPageVO;
|
||||
import com.hccake.ballcat.log.service.LoginLogService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 登陆日志
|
||||
*
|
||||
* @author hccake 2020-09-16 20:21:10
|
||||
*/
|
||||
@Service
|
||||
public class LoginLogServiceImpl extends ExtendServiceImpl<LoginLogMapper, LoginLog> implements LoginLogService {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
@Override
|
||||
public PageResult<LoginLogPageVO> queryPage(PageParam pageParam, LoginLogQO qo) {
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.hccake.ballcat.log.service.impl;
|
||||
|
||||
import com.hccake.ballcat.log.mapper.OperationLogMapper;
|
||||
import com.hccake.ballcat.log.model.entity.OperationLog;
|
||||
import com.hccake.ballcat.log.model.qo.OperationLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.OperationLogPageVO;
|
||||
import com.hccake.ballcat.log.service.OperationLogService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
@Service
|
||||
public class OperationLogServiceImpl extends ExtendServiceImpl<OperationLogMapper, OperationLog>
|
||||
implements OperationLogService {
|
||||
|
||||
/**
|
||||
* 根据QueryObject查询分页数据
|
||||
* @param pageParam 分页参数
|
||||
* @param qo 查询参数对象
|
||||
* @return PageResult<LoginLogVO> 分页数据
|
||||
*/
|
||||
@Override
|
||||
public PageResult<OperationLogPageVO> queryPage(PageParam pageParam, OperationLogQO qo) {
|
||||
return baseMapper.queryPage(pageParam, qo);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.hccake.ballcat.admin.modules.log.thread;
|
||||
package com.hccake.ballcat.log.thread;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.entity.AdminAccessLog;
|
||||
import com.hccake.ballcat.admin.modules.log.service.AdminAccessLogService;
|
||||
import com.hccake.ballcat.log.model.entity.AccessLog;
|
||||
import com.hccake.ballcat.log.service.AccessLogService;
|
||||
import com.hccake.ballcat.common.core.thread.AbstractBlockingQueueThread;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -17,9 +17,9 @@ import java.util.List;
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AccessLogAdminSaveThread extends AbstractBlockingQueueThread<AdminAccessLog> {
|
||||
public class AccessLogSaveThread extends AbstractBlockingQueueThread<AccessLog> {
|
||||
|
||||
private final AdminAccessLogService adminAccessLogService;
|
||||
private final AccessLogService accessLogService;
|
||||
|
||||
/**
|
||||
* 线程启动时的日志打印
|
||||
@@ -35,7 +35,7 @@ public class AccessLogAdminSaveThread extends AbstractBlockingQueueThread<AdminA
|
||||
* @param list 后台访问日志列表
|
||||
*/
|
||||
@Override
|
||||
public void error(Throwable e, List<AdminAccessLog> list) {
|
||||
public void error(Throwable e, List<AccessLog> list) {
|
||||
log.error("后台访问日志记录异常, [msg]:{}, [data]:{}", e.getMessage(), list);
|
||||
}
|
||||
|
||||
@@ -44,8 +44,8 @@ public class AccessLogAdminSaveThread extends AbstractBlockingQueueThread<AdminA
|
||||
* @param list 后台访问日志列表
|
||||
*/
|
||||
@Override
|
||||
public void process(List<AdminAccessLog> list) throws Exception {
|
||||
adminAccessLogService.saveBatchSomeColumn(list);
|
||||
public void process(List<AccessLog> list) throws Exception {
|
||||
accessLogService.saveBatchSomeColumn(list);
|
||||
}
|
||||
|
||||
}
|
||||
29
ballcat-log/ballcat-log-controller/pom.xml
Normal file
29
ballcat-log/ballcat-log-controller/pom.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ballcat-log</artifactId>
|
||||
<groupId>com.hccake</groupId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ballcat-log-controller</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-log-biz</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-common-model</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-web</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.hccake.ballcat.admin.modules.log.controller;
|
||||
package com.hccake.ballcat.log.controller;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminAccessLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminAccessLogPageVO;
|
||||
import com.hccake.ballcat.admin.modules.log.service.AdminAccessLogService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.ballcat.common.model.result.R;
|
||||
import com.hccake.ballcat.log.model.qo.AccessLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.AccessLogPageVO;
|
||||
import com.hccake.ballcat.log.service.AccessLogService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -22,24 +22,23 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/log/adminaccesslog")
|
||||
@Api(value = "adminaccesslog", tags = "访问日志管理")
|
||||
public class AdminAccessLogController {
|
||||
@RequestMapping("/log/access-log")
|
||||
@Api(value = "access-log", tags = "访问日志管理")
|
||||
public class AccessLogController {
|
||||
|
||||
private final AdminAccessLogService adminAccessLogService;
|
||||
private final AccessLogService accessLogService;
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param adminAccessLogQO 访问日志查询对象
|
||||
* @param accessLogQO 访问日志查询对象
|
||||
* @return R
|
||||
*/
|
||||
@ApiOperation(value = "分页查询", notes = "分页查询")
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@per.hasPermission('log:adminaccesslog:read')")
|
||||
public R<PageResult<AdminAccessLogPageVO>> getAccessLogApiPage(PageParam pageParam,
|
||||
AdminAccessLogQO adminAccessLogQO) {
|
||||
return R.ok(adminAccessLogService.queryPage(pageParam, adminAccessLogQO));
|
||||
@PreAuthorize("@per.hasPermission('log:access-log:read')")
|
||||
public R<PageResult<AccessLogPageVO>> getAccessLogApiPage(PageParam pageParam, AccessLogQO accessLogQO) {
|
||||
return R.ok(accessLogService.queryPage(pageParam, accessLogQO));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.hccake.ballcat.admin.modules.log.controller;
|
||||
package com.hccake.ballcat.log.controller;
|
||||
|
||||
import com.hccake.ballcat.admin.modules.log.model.qo.AdminLoginLogQO;
|
||||
import com.hccake.ballcat.admin.modules.log.model.vo.AdminLoginLogPageVO;
|
||||
import com.hccake.ballcat.admin.modules.log.service.AdminLoginLogService;
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.ballcat.common.model.result.R;
|
||||
import com.hccake.ballcat.log.model.qo.LoginLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.LoginLogPageVO;
|
||||
import com.hccake.ballcat.log.service.LoginLogService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -21,23 +21,23 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/log/adminloginlog")
|
||||
@Api(value = "adminloginlog", tags = "登陆日志管理")
|
||||
public class AdminLoginLogController {
|
||||
@RequestMapping("/log/login-log")
|
||||
@Api(value = "login-log", tags = "登陆日志管理")
|
||||
public class LoginLogController {
|
||||
|
||||
private final AdminLoginLogService adminLoginLogService;
|
||||
private final LoginLogService loginLogService;
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param adminLoginLogQO 登陆日志查询对象
|
||||
* @param loginLogQO 登陆日志查询对象
|
||||
* @return R 通用返回体
|
||||
*/
|
||||
@ApiOperation(value = "分页查询", notes = "分页查询")
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@per.hasPermission('log:adminloginlog:read')")
|
||||
public R<PageResult<AdminLoginLogPageVO>> getLoginLogPage(PageParam pageParam, AdminLoginLogQO adminLoginLogQO) {
|
||||
return R.ok(adminLoginLogService.queryPage(pageParam, adminLoginLogQO));
|
||||
@PreAuthorize("@per.hasPermission('log:login-log:read')")
|
||||
public R<PageResult<LoginLogPageVO>> getLoginLogPage(PageParam pageParam, LoginLogQO loginLogQO) {
|
||||
return R.ok(loginLogService.queryPage(pageParam, loginLogQO));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.hccake.ballcat.log.controller;
|
||||
|
||||
import com.hccake.ballcat.common.model.domain.PageParam;
|
||||
import com.hccake.ballcat.common.model.domain.PageResult;
|
||||
import com.hccake.ballcat.common.model.result.R;
|
||||
import com.hccake.ballcat.log.model.qo.OperationLogQO;
|
||||
import com.hccake.ballcat.log.model.vo.OperationLogPageVO;
|
||||
import com.hccake.ballcat.log.service.OperationLogService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 操作日志
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/log/operation-log")
|
||||
@Api(value = "operation-log", tags = "操作日志管理")
|
||||
public class OperationLogController {
|
||||
|
||||
private final OperationLogService operationLogService;
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param operationLogQO 操作日志
|
||||
* @return R
|
||||
*/
|
||||
@ApiOperation(value = "分页查询", notes = "分页查询")
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@per.hasPermission('log:operation-log:read')")
|
||||
public R<PageResult<OperationLogPageVO>> getOperationLogAdminPage(PageParam pageParam,
|
||||
OperationLogQO operationLogQO) {
|
||||
return R.ok(operationLogService.queryPage(pageParam, operationLogQO));
|
||||
}
|
||||
|
||||
}
|
||||
36
ballcat-log/ballcat-log-model/pom.xml
Normal file
36
ballcat-log/ballcat-log-model/pom.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ballcat-log</artifactId>
|
||||
<groupId>com.hccake</groupId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ballcat-log-model</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-annotation</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.hccake</groupId>
|
||||
<artifactId>ballcat-spring-boot-starter-log</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.hccake.ballcat.log.converter;
|
||||
|
||||
import com.hccake.ballcat.log.model.entity.AccessLog;
|
||||
import com.hccake.ballcat.log.model.vo.AccessLogPageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 访问日志
|
||||
*
|
||||
* @author hccake 2021-03-22 20:23:41
|
||||
*/
|
||||
@Mapper
|
||||
public interface AccessLogConverter {
|
||||
|
||||
AccessLogConverter INSTANCE = Mappers.getMapper(AccessLogConverter.class);
|
||||
|
||||
/**
|
||||
* PO 转 PageVO
|
||||
* @param accessLog 访问日志
|
||||
* @return AdminAccessLogVO 访问日志VO
|
||||
*/
|
||||
AccessLogPageVO poToPageVo(AccessLog accessLog);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.hccake.ballcat.log.converter;
|
||||
|
||||
import com.hccake.ballcat.log.model.entity.LoginLog;
|
||||
import com.hccake.ballcat.log.model.vo.LoginLogPageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 登陆日志模型转换器
|
||||
*
|
||||
* @author hccake 2021-03-22 20:28:16
|
||||
*/
|
||||
@Mapper
|
||||
public interface LoginLogConverter {
|
||||
|
||||
LoginLogConverter INSTANCE = Mappers.getMapper(LoginLogConverter.class);
|
||||
|
||||
/**
|
||||
* PO 转 PageVO
|
||||
* @param loginLog 登陆日志
|
||||
* @return AdminLoginLogPageVO 登陆日志PageVO
|
||||
*/
|
||||
LoginLogPageVO poToPageVo(LoginLog loginLog);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.hccake.ballcat.log.converter;
|
||||
|
||||
import com.hccake.ballcat.commom.log.operation.model.OperationLogDTO;
|
||||
import com.hccake.ballcat.log.model.entity.OperationLog;
|
||||
import com.hccake.ballcat.log.model.vo.OperationLogPageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 操作日志模型转换器
|
||||
*
|
||||
* @author hccake 2021-03-22 20:32:30
|
||||
*/
|
||||
@Mapper
|
||||
public interface OperationLogConverter {
|
||||
|
||||
OperationLogConverter INSTANCE = Mappers.getMapper(OperationLogConverter.class);
|
||||
|
||||
/**
|
||||
* PO 转 PageVO
|
||||
* @param operationLog 操作日志
|
||||
* @return AdminOperationLogPageVO 操作日志PageVO
|
||||
*/
|
||||
OperationLogPageVO poToPageVo(OperationLog operationLog);
|
||||
|
||||
/**
|
||||
* 转换OperationLog 为 OperationLogAdmin
|
||||
* @param operationLogDTO 操作日志DTO
|
||||
* @return AdminOperationLog
|
||||
*/
|
||||
OperationLog dtoToPo(OperationLogDTO operationLogDTO);
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.hccake.ballcat.admin.constants;
|
||||
package com.hccake.ballcat.log.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.entity;
|
||||
package com.hccake.ballcat.log.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
@@ -16,10 +16,10 @@ import java.time.LocalDateTime;
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
@Data
|
||||
@TableName("admin_access_log")
|
||||
@TableName("log_access_log")
|
||||
@Accessors(chain = true)
|
||||
@ApiModel(value = "后台访问日志")
|
||||
public class AdminAccessLog {
|
||||
public class AccessLog {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.entity;
|
||||
package com.hccake.ballcat.log.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.hccake.ballcat.admin.constants.LoginEventTypeEnum;
|
||||
import com.hccake.ballcat.log.enums.LoginEventTypeEnum;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@@ -19,9 +19,9 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("admin_login_log")
|
||||
@TableName("log_login_log")
|
||||
@ApiModel(value = "登陆日志")
|
||||
public class AdminLoginLog {
|
||||
public class LoginLog {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.entity;
|
||||
package com.hccake.ballcat.log.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
@@ -15,9 +15,9 @@ import java.time.LocalDateTime;
|
||||
* @date 2019-10-15 20:42:32
|
||||
*/
|
||||
@Data
|
||||
@TableName("admin_operation_log")
|
||||
@TableName("log_operation_log")
|
||||
@ApiModel(value = "操作日志")
|
||||
public class AdminOperationLog {
|
||||
public class OperationLog {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.qo;
|
||||
package com.hccake.ballcat.log.model.qo;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "后台访问日志查询对象")
|
||||
public class AdminAccessLogQO {
|
||||
public class AccessLogQO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -38,12 +38,24 @@ public class AdminAccessLogQO {
|
||||
@ApiModelProperty(value = "访问IP地址")
|
||||
private String ip;
|
||||
|
||||
/**
|
||||
* 请求Uri
|
||||
*/
|
||||
@ApiModelProperty(value = "请求Uri")
|
||||
private String uri;
|
||||
|
||||
/**
|
||||
* 请求映射地址
|
||||
*/
|
||||
@ApiModelProperty(value = "请求映射地址")
|
||||
private String matchingPattern;
|
||||
|
||||
/**
|
||||
* 响应状态码
|
||||
*/
|
||||
@ApiModelProperty(value = "响应状态码")
|
||||
private Integer httpStatus;
|
||||
|
||||
/**
|
||||
* 登陆时间区间(开始时间)
|
||||
*/
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.qo;
|
||||
package com.hccake.ballcat.log.model.qo;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.hccake.ballcat.admin.constants.LoginEventTypeEnum;
|
||||
import com.hccake.ballcat.log.enums.LoginEventTypeEnum;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "登陆日志查询对象")
|
||||
public class AdminLoginLogQO {
|
||||
public class LoginLogQO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.qo;
|
||||
package com.hccake.ballcat.log.model.qo;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "操作日志查询对象")
|
||||
public class AdminOperationLogQO {
|
||||
public class OperationLogQO {
|
||||
|
||||
/**
|
||||
* 追踪ID
|
||||
@@ -30,6 +30,12 @@ public class AdminOperationLogQO {
|
||||
@ApiModelProperty(value = "用户ID")
|
||||
private Integer userId;
|
||||
|
||||
/**
|
||||
* 日志消息
|
||||
*/
|
||||
@ApiModelProperty(value = "日志消息")
|
||||
private String msg;
|
||||
|
||||
/**
|
||||
* 访问IP地址
|
||||
*/
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.vo;
|
||||
package com.hccake.ballcat.log.model.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -7,14 +7,14 @@ import lombok.Data;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 后台访问日志展示对象
|
||||
* 访问日志展示对象
|
||||
*
|
||||
* @author hccake
|
||||
* @date 2019-10-16 16:09:25
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "后台访问日志分页展示对象")
|
||||
public class AdminAccessLogPageVO {
|
||||
@ApiModel(value = "访问日志分页展示对象")
|
||||
public class AccessLogPageVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.vo;
|
||||
package com.hccake.ballcat.log.model.vo;
|
||||
|
||||
import com.hccake.ballcat.admin.constants.LoginEventTypeEnum;
|
||||
import com.hccake.ballcat.log.enums.LoginEventTypeEnum;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "登陆日志")
|
||||
public class AdminLoginLogPageVO {
|
||||
public class LoginLogPageVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.hccake.ballcat.admin.modules.log.model.vo;
|
||||
package com.hccake.ballcat.log.model.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "操作日志视图对象")
|
||||
public class AdminOperationLogPageVO {
|
||||
public class OperationLogPageVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
21
ballcat-log/pom.xml
Normal file
21
ballcat-log/pom.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ballcat</artifactId>
|
||||
<groupId>com.hccake</groupId>
|
||||
<version>${revision}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ballcat-log</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>ballcat-log-model</module>
|
||||
<module>ballcat-log-biz</module>
|
||||
<module>ballcat-log-controller</module>
|
||||
</modules>
|
||||
|
||||
|
||||
</project>
|
||||
@@ -151,4 +151,22 @@ UPDATE `sys_lov` SET `url` = '/system/user/page', update_time = now() WHERE `key
|
||||
-- 配置表 conf_key 非 null
|
||||
ALTER TABLE `sys_config`
|
||||
MODIFY COLUMN `conf_key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '配置键' AFTER `name`,
|
||||
MODIFY COLUMN `deleted` bigint(20) NOT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `description`;
|
||||
MODIFY COLUMN `deleted` bigint(20) NOT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `description`;
|
||||
|
||||
|
||||
-- 日志模块拆分相关修改
|
||||
UPDATE `sys_menu` SET `path` = 'operation-log' WHERE `id` = 110100;
|
||||
UPDATE `sys_menu` SET `path` = 'login-log' WHERE `id` = 110200;
|
||||
UPDATE `sys_menu` SET `path` = 'access-log' WHERE `id` = 110300;
|
||||
UPDATE `sys_menu` SET `uri` = 'log/operation-log/OperationLogPage' WHERE `id` = 110100;
|
||||
UPDATE `sys_menu` SET `uri` = 'log/login-log/LoginLogPage' WHERE `id` = 110200;
|
||||
UPDATE `sys_menu` SET `uri` = 'log/access-log/AccessLogPage' WHERE `id` = 110300;
|
||||
UPDATE `sys_menu` SET `permission` = 'log:operation-log:read' WHERE `id` = 110100;
|
||||
UPDATE `sys_menu` SET `permission` = 'log:login-log:read' WHERE `id` = 110200;
|
||||
UPDATE `sys_menu` SET `permission` = 'log:access-log:read' WHERE `id` = 110300;
|
||||
UPDATE `sys_menu` SET `title` = '访问日志' WHERE `id` = 110300;
|
||||
UPDATE `sys_menu` SET `title` = '访问日志查询' WHERE `id` = 110301;
|
||||
|
||||
RENAME TABLE `admin_access_log` TO `log_access_log`;
|
||||
RENAME TABLE `admin_operation_log` TO `log_operation_log`;
|
||||
RENAME TABLE `admin_login_log` TO `log_login_log`;
|
||||
Reference in New Issue
Block a user