1.审计管理修改
2.数据中心bug修改
This commit is contained in:
@@ -77,4 +77,9 @@ public interface OssPath {
|
|||||||
* 资源文件
|
* 资源文件
|
||||||
*/
|
*/
|
||||||
String RESOURCEDATA = "resourceData/";
|
String RESOURCEDATA = "resourceData/";
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 日志文件
|
||||||
|
*/
|
||||||
|
String LOGBAK = "logbak/";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -230,5 +230,16 @@ public class RedisUtil {
|
|||||||
redisTemplate.boundListOps(key).set(index, newObj);
|
redisTemplate.boundListOps(key).set(index, newObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据某个key模糊查询,并取出value
|
||||||
|
* @param key
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<?> getLikeListAllValues(String key) {
|
||||||
|
List<Object> info=new ArrayList<>();
|
||||||
|
for (String s : redisTemplate.keys(key + "*")) {
|
||||||
|
info.add(redisTemplate.opsForValue().get(s));
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,6 +72,9 @@ public class RunManageParam extends BaseParam implements Serializable {
|
|||||||
@ApiModelProperty(name = "runFlag", value = "终端状态")
|
@ApiModelProperty(name = "runFlag", value = "终端状态")
|
||||||
private List<Integer> runFlag;
|
private List<Integer> runFlag;
|
||||||
|
|
||||||
@ApiModelProperty(name = "searchValue", value = "篩選數據")
|
@ApiModelProperty(name = "searchValue", value = "筛选数据")
|
||||||
private String searchValue;
|
private String searchValue;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "evaluate", value = "评价")
|
||||||
|
private String evaluate;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public class RunManageServiceImpl implements RunManageService {
|
|||||||
if (!CollectionUtils.isEmpty(lineIndexes)) {
|
if (!CollectionUtils.isEmpty(lineIndexes)) {
|
||||||
return deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(),runManageParam.getSearchValue());
|
return deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(),runManageParam.getSearchValue());
|
||||||
} else {
|
} else {
|
||||||
throw new BusinessException(CommonResponseEnum.FAIL);
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,11 +113,44 @@ public class RunManageServiceImpl implements RunManageService {
|
|||||||
// InfluxDBResultMapper inCn = new InfluxDBResultMapper();
|
// InfluxDBResultMapper inCn = new InfluxDBResultMapper();
|
||||||
// List<LineInfluxDbOnlineVO> lineInfluxDbOnlineVOList = inCn.toPOJO(queryResult,LineInfluxDbOnlineVO.class);
|
// List<LineInfluxDbOnlineVO> lineInfluxDbOnlineVOList = inCn.toPOJO(queryResult,LineInfluxDbOnlineVO.class);
|
||||||
runManageDevList = runManageDevList.stream().peek(item-> lineInfluxDbOnlineVOList.stream().filter(it-> Objects.equals(item.getId(),it.getDevIndex())).findFirst().ifPresent(i->item.setOnlineEvaluate(i.getOnlineRate()))).collect(Collectors.toList());
|
runManageDevList = runManageDevList.stream().peek(item-> lineInfluxDbOnlineVOList.stream().filter(it-> Objects.equals(item.getId(),it.getDevIndex())).findFirst().ifPresent(i->item.setOnlineEvaluate(i.getOnlineRate()))).collect(Collectors.toList());
|
||||||
|
String evaluate = runManageParam.getEvaluate();
|
||||||
|
if(StrUtil.isNotBlank(evaluate)){
|
||||||
|
runManageDevList=runManageDevList.stream().filter(x->filterOnlineEvaluate(evaluate,x.getOnlineEvaluate())).collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return runManageDevList;
|
return runManageDevList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 评价筛选
|
||||||
|
* @param evaluate
|
||||||
|
* @param onlineEvaluate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean filterOnlineEvaluate(String evaluate, Double onlineEvaluate) {
|
||||||
|
if(onlineEvaluate!=null){
|
||||||
|
onlineEvaluate=onlineEvaluate*100;
|
||||||
|
switch (evaluate){
|
||||||
|
case "优":
|
||||||
|
if(onlineEvaluate>90){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case "良":
|
||||||
|
if(60<onlineEvaluate&&onlineEvaluate<=90){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
case "差":
|
||||||
|
if(onlineEvaluate<=60){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TerminalLedgerVO> getTerminalLedger(DeviceInfoParam deviceInfoParam) {
|
public List<TerminalLedgerVO> getTerminalLedger(DeviceInfoParam deviceInfoParam) {
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.njcn.system.pojo.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wr
|
||||||
|
* @description
|
||||||
|
* @date 2023/5/29 11:04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class OnlineUsersVO {
|
||||||
|
|
||||||
|
@ApiModelProperty("昵称")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiModelProperty("登录名称")
|
||||||
|
private String loginName;
|
||||||
|
|
||||||
|
@ApiModelProperty("手机号")
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
@ApiModelProperty("登录过期时间")
|
||||||
|
private String time;
|
||||||
|
|
||||||
|
@ApiModelProperty("内容")
|
||||||
|
private String content;
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@ import com.njcn.system.pojo.param.AuditParam;
|
|||||||
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
||||||
import com.njcn.system.pojo.vo.AuditLogVO;
|
import com.njcn.system.pojo.vo.AuditLogVO;
|
||||||
import com.njcn.system.pojo.vo.LogParamVO;
|
import com.njcn.system.pojo.vo.LogParamVO;
|
||||||
|
import com.njcn.system.pojo.vo.OnlineUsersVO;
|
||||||
import com.njcn.system.service.AuditService;
|
import com.njcn.system.service.AuditService;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@@ -23,6 +24,9 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @author: chenchao
|
* @author: chenchao
|
||||||
@@ -103,4 +107,12 @@ public class AuditController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, memoInfo, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, memoInfo, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
|
||||||
|
@PostMapping("/getOnlineUsers")
|
||||||
|
@ApiOperation("获取在线用户")
|
||||||
|
public HttpResult<List<OnlineUsersVO>> getOnlineUsers() throws ParseException {
|
||||||
|
String methodDescribe = getMethodDescribe("getOnlineUsers");
|
||||||
|
List<OnlineUsersVO> onlineUsers = auditService.getOnlineUsers();
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, onlineUsers, methodDescribe);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ import com.njcn.system.pojo.po.UserLog;
|
|||||||
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
||||||
import com.njcn.system.pojo.vo.AuditLogVO;
|
import com.njcn.system.pojo.vo.AuditLogVO;
|
||||||
import com.njcn.system.pojo.vo.LogParamVO;
|
import com.njcn.system.pojo.vo.LogParamVO;
|
||||||
|
import com.njcn.system.pojo.vo.OnlineUsersVO;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
@@ -51,4 +55,6 @@ public interface AuditService extends IService<UserLog> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Float getMemoInfo();
|
Float getMemoInfo();
|
||||||
|
|
||||||
|
List<OnlineUsersVO> getOnlineUsers() throws ParseException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,12 @@ package com.njcn.system.service.impl;
|
|||||||
import cn.afterturn.easypoi.exception.excel.ExcelImportException;
|
import cn.afterturn.easypoi.exception.excel.ExcelImportException;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
import com.alibaba.excel.ExcelWriter;
|
import com.alibaba.excel.ExcelWriter;
|
||||||
import com.alibaba.excel.support.ExcelTypeEnum;
|
import com.alibaba.excel.support.ExcelTypeEnum;
|
||||||
@@ -16,8 +18,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.nimbusds.jose.JWSObject;
|
||||||
import com.njcn.common.config.GeneralInfo;
|
import com.njcn.common.config.GeneralInfo;
|
||||||
|
import com.njcn.common.pojo.constant.SecurityConstants;
|
||||||
|
import com.njcn.common.pojo.dto.UserTokenInfo;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
|
import com.njcn.oss.constant.OssPath;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
import com.njcn.redis.utils.RedisUtil;
|
||||||
import com.njcn.system.enums.AuditLogEnum;
|
import com.njcn.system.enums.AuditLogEnum;
|
||||||
import com.njcn.system.excel.DataListener;
|
import com.njcn.system.excel.DataListener;
|
||||||
@@ -26,11 +32,10 @@ import com.njcn.system.mapper.AuditMapper;
|
|||||||
import com.njcn.system.mapper.UserLogMapper;
|
import com.njcn.system.mapper.UserLogMapper;
|
||||||
import com.njcn.system.pojo.param.AuditParam;
|
import com.njcn.system.pojo.param.AuditParam;
|
||||||
import com.njcn.system.pojo.po.UserLog;
|
import com.njcn.system.pojo.po.UserLog;
|
||||||
import com.njcn.system.pojo.vo.AuditLogCusVO;
|
import com.njcn.system.pojo.vo.*;
|
||||||
import com.njcn.system.pojo.vo.AuditLogVO;
|
|
||||||
import com.njcn.system.pojo.vo.LogParamVO;
|
|
||||||
import com.njcn.system.pojo.vo.ValuePO;
|
|
||||||
import com.njcn.system.service.AuditService;
|
import com.njcn.system.service.AuditService;
|
||||||
|
import com.njcn.user.api.UserFeignClient;
|
||||||
|
import com.njcn.user.pojo.po.User;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.compress.utils.IOUtils;
|
import org.apache.commons.compress.utils.IOUtils;
|
||||||
import org.apache.commons.fileupload.FileItem;
|
import org.apache.commons.fileupload.FileItem;
|
||||||
@@ -42,6 +47,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import org.springframework.web.multipart.commons.CommonsMultipartFile;
|
import org.springframework.web.multipart.commons.CommonsMultipartFile;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.text.ParseException;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
@@ -65,16 +71,42 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
private final GeneralInfo generalInfo;
|
private final GeneralInfo generalInfo;
|
||||||
|
|
||||||
private final RedisUtil redisUtil;
|
private final RedisUtil redisUtil;
|
||||||
|
private final UserFeignClient userFeignClient;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<AuditLogVO> getAuditLog(AuditParam auditParam) {
|
public Page<AuditLogVO> getAuditLog(AuditParam auditParam) {
|
||||||
List<AuditLogVO> auditLogVOS = new ArrayList<>();
|
List<AuditLogVO> auditLogVOS = new ArrayList<>();
|
||||||
|
|
||||||
Page<UserLog> info = this.page(new Page<>(auditParam.getPageNum(), auditParam.getPageSize()), new LambdaQueryWrapper<UserLog>()
|
Page<UserLog> info = this.page(new Page<>(auditParam.getPageNum(), auditParam.getPageSize()), new LambdaQueryWrapper<UserLog>()
|
||||||
.eq(StrUtil.isNotBlank(auditParam.getLoginName()), UserLog::getLoginName, auditParam.getLoginName())
|
.like(StrUtil.isNotBlank(auditParam.getLoginName()), UserLog::getLoginName, auditParam.getLoginName())
|
||||||
|
.ne(UserLog::getLoginName,"unknown user")
|
||||||
|
.ne(UserLog::getLoginName,"")
|
||||||
|
.ne(UserLog::getOperate,"unknown user")
|
||||||
.eq(auditParam.getType() != null, UserLog::getType, auditParam.getType())
|
.eq(auditParam.getType() != null, UserLog::getType, auditParam.getType())
|
||||||
.eq(StrUtil.isNotBlank(auditParam.getOperateType()), UserLog::getOperateType, auditParam.getOperateType())
|
.eq(StrUtil.isNotBlank(auditParam.getOperateType()), UserLog::getOperateType, auditParam.getOperateType())
|
||||||
.ge(StrUtil.isNotBlank(auditParam.getSearchBeginTime()), UserLog::getCreateTime, DateUtil.beginOfDay(DateUtil.parse(auditParam.getSearchBeginTime())))
|
.ge(StrUtil.isNotBlank(auditParam.getSearchBeginTime()), UserLog::getCreateTime, DateUtil.beginOfDay(DateUtil.parse(auditParam.getSearchBeginTime())))
|
||||||
.le(StrUtil.isNotBlank(auditParam.getSearchEndTime()), UserLog::getCreateTime, DateUtil.endOfDay(DateUtil.parse(auditParam.getSearchEndTime())))
|
.le(StrUtil.isNotBlank(auditParam.getSearchEndTime()), UserLog::getCreateTime, DateUtil.endOfDay(DateUtil.parse(auditParam.getSearchEndTime())))
|
||||||
|
.or(StrUtil.isNotBlank(auditParam.getLoginName()),qw ->
|
||||||
|
qw.like(StrUtil.isNotBlank(auditParam.getLoginName()), UserLog::getIp, auditParam.getLoginName())
|
||||||
|
.ne(UserLog::getLoginName,"unknown user")
|
||||||
|
.ne(UserLog::getLoginName,"")
|
||||||
|
.ne(UserLog::getOperate,"unknown user")
|
||||||
|
.eq(auditParam.getType() != null, UserLog::getType, auditParam.getType())
|
||||||
|
.eq(StrUtil.isNotBlank(auditParam.getOperateType()), UserLog::getOperateType, auditParam.getOperateType())
|
||||||
|
.ge(StrUtil.isNotBlank(auditParam.getSearchBeginTime()), UserLog::getCreateTime, DateUtil.beginOfDay(DateUtil.parse(auditParam.getSearchBeginTime())))
|
||||||
|
.le(StrUtil.isNotBlank(auditParam.getSearchEndTime()), UserLog::getCreateTime, DateUtil.endOfDay(DateUtil.parse(auditParam.getSearchEndTime())))
|
||||||
|
)
|
||||||
|
.or(StrUtil.isNotBlank(auditParam.getLoginName()),qw ->
|
||||||
|
qw.like(StrUtil.isNotBlank(auditParam.getLoginName()), UserLog::getCreateTime, auditParam.getLoginName())
|
||||||
|
.ne(UserLog::getLoginName,"unknown user")
|
||||||
|
.ne(UserLog::getLoginName,"")
|
||||||
|
.ne(UserLog::getOperate,"unknown user")
|
||||||
|
.eq(auditParam.getType() != null, UserLog::getType, auditParam.getType())
|
||||||
|
.eq(StrUtil.isNotBlank(auditParam.getOperateType()), UserLog::getOperateType, auditParam.getOperateType())
|
||||||
|
.ge(StrUtil.isNotBlank(auditParam.getSearchBeginTime()), UserLog::getCreateTime, DateUtil.beginOfDay(DateUtil.parse(auditParam.getSearchBeginTime())))
|
||||||
|
.le(StrUtil.isNotBlank(auditParam.getSearchEndTime()), UserLog::getCreateTime, DateUtil.endOfDay(DateUtil.parse(auditParam.getSearchEndTime())))
|
||||||
|
)
|
||||||
|
.orderByDesc( UserLog::getCreateTime)
|
||||||
);
|
);
|
||||||
Page<AuditLogVO> page = BeanUtil.copyProperties(info, Page.class);
|
Page<AuditLogVO> page = BeanUtil.copyProperties(info, Page.class);
|
||||||
if (CollUtil.isNotEmpty(info.getRecords())) {
|
if (CollUtil.isNotEmpty(info.getRecords())) {
|
||||||
@@ -82,11 +114,7 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
AuditLogVO auditLogVO = new AuditLogVO();
|
AuditLogVO auditLogVO = new AuditLogVO();
|
||||||
String updateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(userLog.getUpdateTime());
|
String updateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(userLog.getUpdateTime());
|
||||||
auditLogVO.setTime(updateTime);
|
auditLogVO.setTime(updateTime);
|
||||||
if (userLog.getUserName() == null || userLog.getUserName().equals("")) {
|
|
||||||
auditLogVO.setUserName(userLog.getLoginName());
|
auditLogVO.setUserName(userLog.getLoginName());
|
||||||
} else {
|
|
||||||
auditLogVO.setUserName(userLog.getUserName());
|
|
||||||
}
|
|
||||||
auditLogVO.setOperate(userLog.getOperate());
|
auditLogVO.setOperate(userLog.getOperate());
|
||||||
StringBuilder describe = new StringBuilder();
|
StringBuilder describe = new StringBuilder();
|
||||||
describe.append(auditLogVO.getUserName()).append("在").append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(userLog.getUpdateTime())).append("在").append(userLog.getIp()).append("执行了").append(userLog.getOperate()).append(",结果为");
|
describe.append(auditLogVO.getUserName()).append("在").append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(userLog.getUpdateTime())).append("在").append(userLog.getIp()).append("执行了").append(userLog.getOperate()).append(",结果为");
|
||||||
@@ -121,10 +149,10 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
public void logFileWriter() {
|
public void logFileWriter() {
|
||||||
//限制多次点击
|
//限制多次点击
|
||||||
String logFileWriter = redisUtil.getStringByKey("logFileWriter");
|
String logFileWriter = redisUtil.getStringByKey("logFileWriter");
|
||||||
if(StrUtil.isNotBlank(logFileWriter)|| ObjectUtil.equals(logFileWriter,"1")){
|
if (StrUtil.isNotBlank(logFileWriter) || ObjectUtil.equals(logFileWriter, "1")) {
|
||||||
throw new BusinessException(AuditLogEnum.MULTIPLE_CLICKS_LOGFILEWRITER);
|
throw new BusinessException(AuditLogEnum.MULTIPLE_CLICKS_LOGFILEWRITER);
|
||||||
}
|
}
|
||||||
redisUtil.saveByKey("logFileWriter","1");
|
redisUtil.saveByKey("logFileWriter", "1");
|
||||||
LocalDateTime nowDate = LocalDateTime.now();
|
LocalDateTime nowDate = LocalDateTime.now();
|
||||||
LocalDateTime agoDate = nowDate.minusMonths(6).with(TemporalAdjusters.firstDayOfMonth());
|
LocalDateTime agoDate = nowDate.minusMonths(6).with(TemporalAdjusters.firstDayOfMonth());
|
||||||
String date = agoDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
String date = agoDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
||||||
@@ -136,8 +164,12 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
aa.ge("sys_user_log.update_time", date);
|
aa.ge("sys_user_log.update_time", date);
|
||||||
aa.le("sys_user_log.update_time", endTime);
|
aa.le("sys_user_log.update_time", endTime);
|
||||||
String nowTime = date + "至" + endTime;
|
String nowTime = date + "至" + endTime;
|
||||||
|
File file=new File(generalInfo.getBusinessTempPath() + "/" + OssPath.LOGBAK);
|
||||||
|
if(!file.exists() && !file .isDirectory()){
|
||||||
|
file.mkdir();
|
||||||
|
}
|
||||||
//必须放到循环外,否则会刷新流
|
//必须放到循环外,否则会刷新流
|
||||||
ExcelWriter excelWriter = EasyExcel.write(generalInfo.getBusinessTempPath() + "//" + nowTime + ExcelTypeEnum.XLSX.getValue(), UserLogExcel.class)
|
ExcelWriter excelWriter = EasyExcel.write(generalInfo.getBusinessTempPath() + "/"+ OssPath.LOGBAK + nowTime + ExcelTypeEnum.XLSX.getValue(), UserLogExcel.class)
|
||||||
// .excelType(ExcelTypeEnum.CSV)
|
// .excelType(ExcelTypeEnum.CSV)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
@@ -175,7 +207,6 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
excelWriter.write(list, writeSheet);
|
excelWriter.write(list, writeSheet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
redisUtil.delete("recoverLogFile");
|
redisUtil.delete("recoverLogFile");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -204,10 +235,10 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
@Override
|
@Override
|
||||||
public void recoverLogFile() {
|
public void recoverLogFile() {
|
||||||
String logFileWriter = redisUtil.getStringByKey("recoverLogFile");
|
String logFileWriter = redisUtil.getStringByKey("recoverLogFile");
|
||||||
if(StrUtil.isNotBlank(logFileWriter)|| ObjectUtil.equals(logFileWriter,"1")){
|
if (StrUtil.isNotBlank(logFileWriter) || ObjectUtil.equals(logFileWriter, "1")) {
|
||||||
throw new BusinessException(AuditLogEnum.MULTIPLE_CLICKS_LOGFILEWRITER);
|
throw new BusinessException(AuditLogEnum.MULTIPLE_CLICKS_LOGFILEWRITER);
|
||||||
}
|
}
|
||||||
redisUtil.saveByKey("recoverLogFile","1");
|
redisUtil.saveByKey("recoverLogFile", "1");
|
||||||
File newFile = getLastFile();
|
File newFile = getLastFile();
|
||||||
if (FileUtil.isEmpty(newFile)) {
|
if (FileUtil.isEmpty(newFile)) {
|
||||||
throw new BusinessException(AuditLogEnum.NOT_FIND_FILE);
|
throw new BusinessException(AuditLogEnum.NOT_FIND_FILE);
|
||||||
@@ -264,6 +295,33 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
return this.baseMapper.getMemoInfo(schema);
|
return this.baseMapper.getMemoInfo(schema);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OnlineUsersVO> getOnlineUsers() throws ParseException {
|
||||||
|
List<OnlineUsersVO> info = new ArrayList<>();
|
||||||
|
List<String> ids = new ArrayList<>();
|
||||||
|
Map<String, Long> time = new HashMap<>();
|
||||||
|
List<UserTokenInfo> listAllValues = (List<UserTokenInfo>) redisUtil.getLikeListAllValues(SecurityConstants.TOKEN_ONLINE_PREFIX);
|
||||||
|
for (UserTokenInfo listAllValue : listAllValues) {
|
||||||
|
String payload = StrUtil.toString(JWSObject.parse(listAllValue.getRefreshToken()).getPayload());
|
||||||
|
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(payload);
|
||||||
|
time.put(jsonObject.getStr(SecurityConstants.USER_INDEX_KEY), Long.valueOf(jsonObject.getStr("exp")));
|
||||||
|
ids.add(jsonObject.getStr(SecurityConstants.USER_INDEX_KEY));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<User> data = userFeignClient.getUserByIdList(ids).getData();
|
||||||
|
OnlineUsersVO vo;
|
||||||
|
if (CollUtil.isNotEmpty(data)) {
|
||||||
|
for (User datum : data) {
|
||||||
|
vo = BeanUtil.copyProperties(datum, OnlineUsersVO.class);
|
||||||
|
Long integer = time.get(datum.getId());
|
||||||
|
DateTime date = DateUtil.date(integer*1000);
|
||||||
|
vo.setTime(date.toDateStr());
|
||||||
|
info.add(vo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LogParamVO saveLogParam() {
|
public LogParamVO saveLogParam() {
|
||||||
LogParamVO logParamVO = new LogParamVO();
|
LogParamVO logParamVO = new LogParamVO();
|
||||||
@@ -292,7 +350,7 @@ public class AuditServiceImpl extends ServiceImpl<UserLogMapper, UserLog> implem
|
|||||||
* 返回一个最新修改日期的文件
|
* 返回一个最新修改日期的文件
|
||||||
*/
|
*/
|
||||||
public File getLastFile() {
|
public File getLastFile() {
|
||||||
File parentFile = new File(generalInfo.getBusinessTempPath());
|
File parentFile = new File(generalInfo.getBusinessTempPath()+"/"+ OssPath.LOGBAK);
|
||||||
|
|
||||||
//文件夹下的所有子文件数组
|
//文件夹下的所有子文件数组
|
||||||
File[] files = parentFile.listFiles();
|
File[] files = parentFile.listFiles();
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
package com.njcn.user.api;
|
package com.njcn.user.api;
|
||||||
|
|
||||||
|
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||||
import com.njcn.common.pojo.constant.ServerInfo;
|
import com.njcn.common.pojo.constant.ServerInfo;
|
||||||
|
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
import com.njcn.user.api.fallback.UserFeignClientFallbackFactory;
|
import com.njcn.user.api.fallback.UserFeignClientFallbackFactory;
|
||||||
import com.njcn.user.pojo.dto.UserDTO;
|
import com.njcn.user.pojo.dto.UserDTO;
|
||||||
|
import com.njcn.user.pojo.po.User;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author hongawen
|
* @author hongawen
|
||||||
@@ -42,4 +47,12 @@ public interface UserFeignClient {
|
|||||||
*/
|
*/
|
||||||
@PutMapping("/updateUserLoginErrorTimes/{loginName}")
|
@PutMapping("/updateUserLoginErrorTimes/{loginName}")
|
||||||
HttpResult<String> updateUserLoginErrorTimes(@PathVariable("loginName") String loginName);
|
HttpResult<String> updateUserLoginErrorTimes(@PathVariable("loginName") String loginName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户id集合查询用户信息
|
||||||
|
* @param ids
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/userByIdList")
|
||||||
|
HttpResult<List<User>> getUserByIdList(@RequestBody List<String> ids);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,11 +5,14 @@ import com.njcn.common.pojo.exception.BusinessException;
|
|||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
import com.njcn.user.api.UserFeignClient;
|
import com.njcn.user.api.UserFeignClient;
|
||||||
import com.njcn.user.pojo.dto.UserDTO;
|
import com.njcn.user.pojo.dto.UserDTO;
|
||||||
|
import com.njcn.user.pojo.po.User;
|
||||||
import com.njcn.user.utils.UserEnumUtil;
|
import com.njcn.user.utils.UserEnumUtil;
|
||||||
import feign.hystrix.FallbackFactory;
|
import feign.hystrix.FallbackFactory;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author hongawen
|
* @author hongawen
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
@@ -52,6 +55,12 @@ public class UserFeignClientFallbackFactory implements FallbackFactory<UserFeign
|
|||||||
throw new BusinessException(finalExceptionEnum);
|
throw new BusinessException(finalExceptionEnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HttpResult<List<User>> getUserByIdList(List<String> ids) {
|
||||||
|
log.error("{}异常,降级处理,异常为:{}","根据用户id集合查询用户信息",cause.toString());
|
||||||
|
throw new BusinessException(finalExceptionEnum);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.njcn.user.enums.UserResponseEnum;
|
|||||||
import com.njcn.user.pojo.dto.UserDTO;
|
import com.njcn.user.pojo.dto.UserDTO;
|
||||||
import com.njcn.user.pojo.param.UserParam;
|
import com.njcn.user.pojo.param.UserParam;
|
||||||
import com.njcn.user.pojo.param.UserPasswordParam;
|
import com.njcn.user.pojo.param.UserPasswordParam;
|
||||||
|
import com.njcn.user.pojo.po.User;
|
||||||
import com.njcn.user.pojo.vo.UserVO;
|
import com.njcn.user.pojo.vo.UserVO;
|
||||||
import com.njcn.user.service.IUserService;
|
import com.njcn.user.service.IUserService;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
@@ -353,5 +354,14 @@ public class UserController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
|
||||||
|
@PostMapping("/userByIdList")
|
||||||
|
@ApiOperation("根据用户id集合查询用户信息")
|
||||||
|
@ApiImplicitParam(name = "ids", value = "用户id集合", required = true)
|
||||||
|
public HttpResult<List<User>> getUserByIdList(@RequestBody List<String> ids) {
|
||||||
|
String methodDescribe = getMethodDescribe("getUserByIdList");
|
||||||
|
List<User> users = userService.listByIds(ids);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, users, methodDescribe);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user