feat: 日志分页列表和添加操作日志记录

This commit is contained in:
hxr
2024-06-28 08:06:26 +08:00
parent 9b5fd036e5
commit 3ba34ca8ee
17 changed files with 192 additions and 26 deletions

View File

@@ -1,11 +1,13 @@
package com.youlai.system.controller;
import com.youlai.system.enums.LogModuleEnum;
import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit;
import com.youlai.system.common.model.Option;
import com.youlai.system.common.result.Result;
import com.youlai.system.model.form.DeptForm;
import com.youlai.system.model.query.DeptQuery;
import com.youlai.system.model.vo.DeptVO;
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
import com.youlai.system.service.SysDeptService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -31,8 +33,9 @@ public class SysDeptController {
private final SysDeptService deptService;
@Operation(summary = "获取部门列表")
@Operation(summary = "部门列表")
@GetMapping
@LogAnnotation( value = "部门列表",module = LogModuleEnum.DEPT)
public Result<List<DeptVO>> getDeptList(
DeptQuery queryParams
) {
@@ -40,7 +43,7 @@ public class SysDeptController {
return Result.success(list);
}
@Operation(summary = "获取部门下拉列表")
@Operation(summary = "部门下拉列表")
@GetMapping("/options")
public Result<List<Option>> getDeptOptions() {
List<Option> list = deptService.listDeptOptions();

View File

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.common.model.Option;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.enums.LogModuleEnum;
import com.youlai.system.model.vo.DictPageVO;
import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit;
import com.youlai.system.model.form.DictForm;
import com.youlai.system.model.query.DictTypePageQuery;
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
import com.youlai.system.service.SysDictService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -34,6 +36,7 @@ public class SysDictController {
@Operation(summary = "字典分页列表")
@GetMapping("/page")
@LogAnnotation( value = "字典分页列表",module = LogModuleEnum.DICT)
public PageResult<DictPageVO> getDictPage(
DictTypePageQuery queryParams
) {

View File

@@ -0,0 +1,37 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.model.query.RolePageQuery;
import com.youlai.system.model.vo.LogPageVO;
import com.youlai.system.service.SysLogService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* 日志控制层
*
* @author Ray
* @since 2022/10/16
*/
@Tag(name = "08.日志接口")
@RestController
@RequestMapping("/api/v1/logs")
@RequiredArgsConstructor
public class SysLogController {
private final SysLogService logService;
@Operation(summary = "日志分页列表")
@GetMapping("/page")
public PageResult<LogPageVO> listPagedLogs(
RolePageQuery queryParams
) {
Page<LogPageVO> result = logService.listPagedLogs(queryParams);
return PageResult.success(result);
}
}

View File

@@ -1,12 +1,14 @@
package com.youlai.system.controller;
import com.youlai.system.common.result.Result;
import com.youlai.system.enums.LogModuleEnum;
import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit;
import com.youlai.system.model.form.MenuForm;
import com.youlai.system.model.query.MenuQuery;
import com.youlai.system.model.vo.MenuVO;
import com.youlai.system.common.model.Option;
import com.youlai.system.model.vo.RouteVO;
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
import com.youlai.system.service.SysMenuService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@@ -35,6 +37,7 @@ public class SysMenuController {
@Operation(summary = "菜单列表")
@GetMapping
@LogAnnotation( value = "菜单列表",module = LogModuleEnum.MENU)
public Result<List<MenuVO>> listMenus(MenuQuery queryParams) {
List<MenuVO> menuList = menuService.listMenus(queryParams);
return Result.success(menuList);

View File

@@ -1,6 +1,7 @@
package com.youlai.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.enums.LogModuleEnum;
import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit;
import com.youlai.system.common.model.Option;
import com.youlai.system.common.result.PageResult;
@@ -8,6 +9,7 @@ import com.youlai.system.common.result.Result;
import com.youlai.system.model.form.RoleForm;
import com.youlai.system.model.query.RolePageQuery;
import com.youlai.system.model.vo.RolePageVO;
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
import com.youlai.system.service.SysRoleService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -37,6 +39,7 @@ public class SysRoleController {
@Operation(summary = "角色分页列表")
@GetMapping("/page")
@LogAnnotation( value = "角色分页列表",module = LogModuleEnum.ROLE)
public PageResult<RolePageVO> getRolePage(
RolePageQuery queryParams
) {

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result;
import com.youlai.system.common.util.ExcelUtils;
import com.youlai.system.enums.LogModuleEnum;
import com.youlai.system.model.dto.UserImportDTO;
import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit;
import com.youlai.system.plugin.easyexcel.UserImportListener;
@@ -16,6 +17,7 @@ import com.youlai.system.model.query.UserPageQuery;
import com.youlai.system.model.dto.UserExportDTO;
import com.youlai.system.model.vo.UserInfoVO;
import com.youlai.system.model.vo.UserPageVO;
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;
import com.youlai.system.service.SysUserService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -52,6 +54,7 @@ public class SysUserController {
@Operation(summary = "用户分页列表")
@GetMapping("/page")
@LogAnnotation( value = "用户分页列表",module = LogModuleEnum.USER)
public PageResult<UserPageVO> listPagedUsers(
UserPageQuery queryParams
) {

View File

@@ -24,9 +24,9 @@ public interface UserConverter {
@Mappings({
@Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(bo.getGender(), com.youlai.system.enums.GenderEnum.class))")
})
UserPageVO bo2PageVo(UserBO bo);
UserPageVO toPageVo(UserBO bo);
Page<UserPageVO> bo2PageVo(Page<UserBO> bo);
Page<UserPageVO> toPageVo(Page<UserBO> bo);
UserForm convertToForm(SysUser entity);

View File

@@ -1,7 +1,10 @@
package com.youlai.system.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.model.entity.SysLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.youlai.system.model.query.RolePageQuery;
import com.youlai.system.model.vo.LogPageVO;
import org.apache.ibatis.annotations.Mapper;
@@ -14,6 +17,7 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SysLogMapper extends BaseMapper<SysLog> {
Page<LogPageVO> listPagedLogs(Page page, RolePageQuery queryParams);
}

View File

@@ -0,0 +1,21 @@
package com.youlai.system.model.query;
import com.youlai.system.common.base.BasePageQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
/**
* 日志分页查询对象
*
* @author Ray
* @since 2.10.0
*/
@Schema(description = "日志分页查询对象")
@Getter
@Setter
public class LogPageQuery extends BasePageQuery {
@Schema(description="关键字(日志内容/请求路径/请求方法/地区/浏览器/终端系统)")
private String keywords;
}

View File

@@ -2,16 +2,18 @@ package com.youlai.system.model.query;
import com.youlai.system.common.base.BasePageQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/**
* 角色分页查询实体
* 角色分页查询对象
*
* @author haoxr
* @author Ray
* @since 2022/6/3
*
*/
@Data
@Schema(description = "角色分页查询对象")
@Getter
@Setter
public class RolePageQuery extends BasePageQuery {
@Schema(description="关键字(角色名称/角色编码)")

View File

@@ -0,0 +1,59 @@
package com.youlai.system.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.youlai.system.enums.LogModuleEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 系统日志分页VO
*
* @author Ray
* @since 2.10.0
*/
@Data
@Schema(description = "系统日志分页VO")
public class LogPageVO implements Serializable {
@Schema(description = "主键")
private Long id;
@Schema(description = "日志模块")
private LogModuleEnum module;
@Schema(description = "日志内容")
private String content;
@Schema(description = "请求路径")
private String requestUri;
@Schema(description = "请求方法")
private String method;
@Schema(description = "IP 地址")
private String ip;
@Schema(description = "地区")
private String region;
@Schema(description = "浏览器")
private String browser;
@Schema(description = "终端系统")
private String os;
@Schema(description = "执行时间(毫秒)")
private Long executionTime;
@Schema(description = "创建人ID")
private Long createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@Schema(description = "操作人")
private String operator;
}

View File

@@ -1,7 +1,10 @@
package com.youlai.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.model.entity.SysLog;
import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.system.model.query.RolePageQuery;
import com.youlai.system.model.vo.LogPageVO;
/**
* 系统日志 服务接口
@@ -11,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface SysLogService extends IService<SysLog> {
Page<LogPageVO> listPagedLogs(RolePageQuery queryParams);
}

View File

@@ -1,7 +1,10 @@
package com.youlai.system.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.model.entity.SysLog;
import com.youlai.system.model.query.RolePageQuery;
import com.youlai.system.model.vo.LogPageVO;
import com.youlai.system.service.SysLogService;
import com.youlai.system.mapper.SysLogMapper;
import org.springframework.stereotype.Service;
@@ -16,6 +19,17 @@ import org.springframework.stereotype.Service;
public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog>
implements SysLogService {
/**
* 获取日志分页列表
*
* @param queryParams 查询参数
* @return
*/
@Override
public Page<LogPageVO> listPagedLogs(RolePageQuery queryParams) {
return this.baseMapper.listPagedLogs(new Page(queryParams.getPageNum(), queryParams.getPageSize()),
queryParams);
}
}

View File

@@ -76,7 +76,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
Page<UserBO> userPage = this.baseMapper.listPagedUsers(page, queryParams);
// 实体转换
return userConverter.bo2PageVo(userPage);
return userConverter.toPageVo(userPage);
}
/**