操作事件管理:分页查询操作事件,并根据用户/操作类型/记录时间段进行筛选
4个文件已添加
1个文件已修改
192 ■■■■■ 已修改文件
src/main/java/com/whyc/constant/UserOperation.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/UserLogController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/UserLogMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/UserLog.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/UserLogService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/UserOperation.java
@@ -9,6 +9,8 @@
    TYPE_UPDATE(4,"修改"),
    TYPE_DELETE(5,"删除"),
    TYPE_UNRECOGNIZED(-1,"无法识别的操作类型"),
    /**操作分类 TODO,不确定会使用*/
    SORT_LOGIN(1000,"登录"),
    SORT_COMMON(1001,"常规操作");
src/main/java/com/whyc/controller/UserLogController.java
New file
@@ -0,0 +1,30 @@
package com.whyc.controller;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.pojo.UserLog;
import com.whyc.service.UserLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * 用户操作日志
 */
@RestController
@RequestMapping("userLog")
@Api(tags = "用户操作事件")
public class UserLogController {
    @Autowired
    private UserLogService service;
    @ApiOperation(value = "分页")
    @PostMapping("page")
    public Response<PageInfo<UserLog>> getPage(@RequestParam int pageNum, @RequestParam int pageSize, @RequestBody UserLog userLog){
        PageInfo<UserLog> pageInfo = service.getPage(pageNum,pageSize,userLog);
        return new Response<PageInfo<UserLog>>().set(1,pageInfo);
    }
}
src/main/java/com/whyc/mapper/UserLogMapper.java
New file
@@ -0,0 +1,6 @@
package com.whyc.mapper;
import com.whyc.pojo.UserLog;
public interface UserLogMapper extends CustomMapper<UserLog> {
}
src/main/java/com/whyc/pojo/UserLog.java
New file
@@ -0,0 +1,107 @@
package com.whyc.pojo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.ibatis.type.Alias;
import java.util.Date;
@TableName(value = "tb_user_log")
@Alias("UserLog")
public class UserLog {
    @TableId
    private Integer num;
    @TableField("uId")
    private Integer uId;
    @TableField("uOprateType")
    private Integer operationType;
    @TableField("uOprateDay")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
    private Date operationTime;
    @TableField("uTerminalIp")
    private String terminalIp;
    @TableField("uOprateMsg")
    private String operationMsg;
    private String operationDetail;
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
    private Date operationTime2;
    @TableField(exist = false)
    private String operationTypeStr;
    public String getOperationTypeStr() {
        return operationTypeStr;
    }
    public void setOperationTypeStr(String operationTypeStr) {
        this.operationTypeStr = operationTypeStr;
    }
    public Integer getNum() {
        return num;
    }
    public void setNum(Integer num) {
        this.num = num;
    }
    public Integer getUId() {
        return uId;
    }
    public void setUId(Integer uId) {
        this.uId = uId;
    }
    public Integer getOperationType() {
        return operationType;
    }
    public void setOperationType(Integer operationType) {
        this.operationType = operationType;
    }
    public Date getOperationTime() {
        return operationTime;
    }
    public void setOperationTime(Date operationTime) {
        this.operationTime = operationTime;
    }
    public Date getOperationTime2() {
        return operationTime2;
    }
    public void setOperationTime2(Date operationTime2) {
        this.operationTime2 = operationTime2;
    }
    public String getTerminalIp() {
        return terminalIp;
    }
    public void setTerminalIp(String terminalIp) {
        this.terminalIp = terminalIp;
    }
    public String getOperationMsg() {
        return operationMsg;
    }
    public void setOperationMsg(String operationMsg) {
        this.operationMsg = operationMsg;
    }
    public String getOperationDetail() {
        return operationDetail;
    }
    public void setOperationDetail(String operationDetail) {
        this.operationDetail = operationDetail;
    }
}
src/main/java/com/whyc/service/UserLogService.java
New file
@@ -0,0 +1,47 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.constant.UserOperation;
import com.whyc.mapper.UserLogMapper;
import com.whyc.pojo.UserLog;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserLogService {
    @Resource
    private UserLogMapper mapper;
    public PageInfo<UserLog> getPage(int pageNum, int pageSize, UserLog userLog) {
        QueryWrapper<UserLog> wrapper = Wrappers.query();
        if(userLog.getUId()!=null){
            wrapper.eq("uId",userLog.getUId());
        }
        if(userLog.getOperationType()!=null){
            wrapper.eq("uOprateType",userLog.getOperationType());
        }
        wrapper.between("uOprateDay",userLog.getOperationTime(),userLog.getOperationTime2());
        PageHelper.startPage(pageNum,pageSize,true);
        List<UserLog> userLogList = mapper.selectList(wrapper);
        userLogList.stream().forEach(userLog1 -> {
            switch (userLog1.getOperationType()){
                case 1: userLog1.setOperationTypeStr(UserOperation.TYPE_LOGIN.getTypeName());break;
                case 2: userLog1.setOperationTypeStr(UserOperation.TYPE_LOGOUT.getTypeName());break;
                case 3: userLog1.setOperationTypeStr(UserOperation.TYPE_ADD.getTypeName());break;
                case 4: userLog1.setOperationTypeStr(UserOperation.TYPE_UPDATE.getTypeName());break;
                case 5: userLog1.setOperationTypeStr(UserOperation.TYPE_DELETE.getTypeName());break;
                default:userLog1.setOperationTypeStr(UserOperation.TYPE_UNRECOGNIZED.getTypeName());
            }
        });
        PageInfo<UserLog> pageInfo = new PageInfo<>(userLogList);
        return pageInfo;
    }
}