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.OperationLogEnum;
|
import com.whyc.dto.Response;
|
import com.whyc.mapper.OperationLogMapper;
|
import com.whyc.pojo.db_user.OperationLog;
|
import com.whyc.pojo.db_user.UserInf;
|
import com.whyc.util.HttpUtil;
|
import com.whyc.util.UserUtil;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
@Service
|
public class OperationLogService {
|
|
@Resource
|
private OperationLogMapper mapper;
|
|
|
public void record(Integer type1, Integer type2, String msg, String detail) {
|
OperationLog log = new OperationLog();
|
UserInf user = UserUtil.getUser();
|
log.setUserId(user.getUid());
|
log.setUserName(user.getUname());
|
log.setType1(type1);
|
log.setType2(type2);
|
log.setMsg(msg);
|
log.setDetail(detail);
|
log.setIp(HttpUtil.getRequest().getRemoteAddr());
|
log.setCreateTime(new Date());
|
mapper.insert(log);
|
}
|
|
public void record(Integer type1, Integer type2, String msg, String detail,String remoteIp) {
|
OperationLog log = new OperationLog();
|
UserInf user = UserUtil.getUser();
|
log.setUserId(user.getUid());
|
log.setUserName(user.getUname());
|
log.setType1(type1);
|
log.setType2(type2);
|
log.setMsg(msg);
|
log.setDetail(detail);
|
log.setIp(remoteIp);
|
log.setCreateTime(new Date());
|
mapper.insert(log);
|
}
|
|
|
public Response getEnumTypes() {
|
Map<OperationLog, List<OperationLog>> map = new HashMap<>();
|
OperationLogEnum[] instances = OperationLogEnum.values();
|
for (OperationLogEnum instance : instances) {
|
Set<OperationLog> type1Logs = map.keySet();
|
//两位数为一级,非两位数为二级
|
Integer type = instance.getType();
|
String name = instance.getName();
|
if(type.toString().length() == 2){ //一级
|
OperationLog log = new OperationLog();
|
log.setType1(type);
|
log.setType1Name(name);
|
map.put(log,new LinkedList<>());
|
}else{ //二级
|
for (OperationLog type1Log : type1Logs) {
|
if(type.toString().startsWith(type1Log.getType1().toString())){
|
List<OperationLog> type2Logs = map.get(type1Log);
|
OperationLog type2Log = new OperationLog();
|
type2Log.setType2(type);
|
type2Log.setType2Name(name);
|
type2Logs.add(type2Log);
|
}
|
}
|
}
|
}
|
return new Response().set(1,map);
|
}
|
|
public Response getPage(OperationLog param) {
|
Integer pageNum = param.getPageNum();
|
Integer pageSize = param.getPageSize();
|
PageHelper.startPage(pageNum,pageSize);
|
QueryWrapper<OperationLog> query = Wrappers.query();
|
if(param.getUserName() != null){
|
query.eq("user_name",param.getUserName());
|
}
|
if(param.getType1() != null){
|
query.eq("type1",param.getType1());
|
}
|
if(param.getType2() != null){
|
query.eq("type2",param.getType2());
|
}
|
if(param.getStartTime() != null) {
|
query.ge("create_time", param.getStartTime());
|
}
|
if(param.getEndTime() != null) {
|
query.le("create_time", param.getEndTime());
|
}
|
query.orderByDesc("id");
|
List<OperationLog> operationLogs = mapper.selectList(query);
|
injectTypeName(operationLogs);
|
PageInfo<OperationLog> pageInfo = new PageInfo<>(operationLogs);
|
return new Response().set(1,pageInfo);
|
}
|
|
/**注入type值对应的name*/
|
private void injectTypeName(List<OperationLog> operationLogs) {
|
for (OperationLog log : operationLogs) {
|
Integer type1 = log.getType1();
|
Integer type2 = log.getType2();
|
|
Map<OperationLog, List<OperationLog>> logConstantMap = (Map<OperationLog, List<OperationLog>>) getEnumTypes().getData();
|
Set<OperationLog> type1Set = logConstantMap.keySet();
|
|
for (OperationLog temp : type1Set) {
|
if(type1 == temp.getType1().intValue()){
|
//注入type1事件类型
|
log.setType1Name(temp.getType1Name());
|
//注入type2事件类型
|
List<OperationLog> type2List = logConstantMap.get(temp);
|
for (OperationLog temp2 : type2List) {
|
if(type2 == temp2.getType2().intValue()){
|
log.setType2Name(temp2.getType2Name());
|
break;
|
}
|
}
|
break;
|
}
|
}
|
}
|
}
|
}
|