From f6422a32fe847d80b5336486dcbae223486bbfb6 Mon Sep 17 00:00:00 2001 From: "583641232@qq.com" <583641232@qq.com> Date: Mon, 29 Jul 2024 12:24:53 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20rar=E6=A8=A1=E6=9D=BF=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../index/LeaderTaskController.java | 54 +++++++++++-- .../common/core/domain/entity/SysUser.java | 2 +- .../common/filter/ExpirationDateFilter.java | 78 +++++++++++++++++++ .../system/domain/SysOperLog.java | 9 ++- .../system/service/ISysOperLogService.java | 6 ++ .../service/impl/SysOperLogServiceImpl.java | 43 +++++++++- .../resources/mapper/system/SysUserMapper.xml | 5 +- 7 files changed, 184 insertions(+), 13 deletions(-) create mode 100644 cas-common/src/main/java/com/inscloudtech/common/filter/ExpirationDateFilter.java diff --git a/cas-admin/src/main/java/com/inscloudtech/web/controller/index/LeaderTaskController.java b/cas-admin/src/main/java/com/inscloudtech/web/controller/index/LeaderTaskController.java index c9a1490..1f7b6c3 100644 --- a/cas-admin/src/main/java/com/inscloudtech/web/controller/index/LeaderTaskController.java +++ b/cas-admin/src/main/java/com/inscloudtech/web/controller/index/LeaderTaskController.java @@ -169,9 +169,31 @@ public class LeaderTaskController { * 调查人员列表 */ @GetMapping("/investigator/list") - public TableDataInfo investigatorList(SysUser user, PageQuery pageQuery) { - user.setRoleId(Constants.INVESTIGATOR_ROLE_ID); - return userService.selectPageUserList(user,pageQuery); + public TableDataInfo investigatorList(SysUser vo, PageQuery pageQuery) { + vo.setRoleId(Constants.INVESTIGATOR_ROLE_ID); + TableDataInfo dataInfo = userService.selectPageUserList(vo, pageQuery); + List rows = dataInfo.getRows(); + List tempList = new ArrayList<>(); + for (SysUser user : rows) { + MInvestigator investigator = new MInvestigator(); + investigator.setId(user.getUserId()); + investigator.setUserName(user.getUserName()); + investigator.setIdCardNo(DesUtil.decrypt(user.getIdCardNo())); + investigator.setPhone(user.getPhonenumber()); + // 状态,启用或者停用 + investigator.setStatus(user.getStatus()); + // 都是调查人员 + investigator.setRoleName(Constants.INVESTIGATOR_NAME); + + investigator.setCreateTime(user.getLoginDate()); + + tempList.add(investigator); + } + TableDataInfo investigatorTableDataInfo = new TableDataInfo<>(); + investigatorTableDataInfo.setRows(tempList); + investigatorTableDataInfo.setTotal(dataInfo.getTotal()); + return investigatorTableDataInfo; + } /** @@ -263,13 +285,29 @@ public class LeaderTaskController { @GetMapping("/addLawCase/investigator/list") public R getInvestigatorsForAddLawCase() { try { - SysUser user = new SysUser(); - user.setRoleId(Constants.INVESTIGATOR_ROLE_ID); - List investigators = userService.selectUserList(user); - return R.ok(investigators); + SysUser vo = new SysUser(); + vo.setRoleId(Constants.INVESTIGATOR_ROLE_ID); + List investigators = userService.selectUserList(vo); + List tempList = new ArrayList<>(); + for (SysUser user : investigators) { + MInvestigator investigator = new MInvestigator(); + investigator.setId(user.getUserId()); + investigator.setUserName(user.getUserName()); + investigator.setIdCardNo(DesUtil.decrypt(user.getIdCardNo())); + investigator.setPhone(user.getPhonenumber()); + // 状态,启用或者停用 + investigator.setStatus(user.getStatus()); + // 都是调查人员 + investigator.setRoleName(Constants.INVESTIGATOR_NAME); + + investigator.setCreateTime(user.getLoginDate()); + + tempList.add(investigator); + } + return R.ok(tempList); } catch (Exception e) { log.error("新增案件,获取调查员人列表错误:" + e.getMessage(), e); - return R.fail(e.getMessage(), null); + return R.fail(e.getMessage()); } } diff --git a/cas-common/src/main/java/com/inscloudtech/common/core/domain/entity/SysUser.java b/cas-common/src/main/java/com/inscloudtech/common/core/domain/entity/SysUser.java index 7c04e8c..fdf7924 100644 --- a/cas-common/src/main/java/com/inscloudtech/common/core/domain/entity/SysUser.java +++ b/cas-common/src/main/java/com/inscloudtech/common/core/domain/entity/SysUser.java @@ -163,7 +163,7 @@ public class SysUser extends BaseEntity { return UserConstants.ADMIN_ID.equals(this.userId); } - @UpdateValueLog(fieldName = "备注") + @UpdateValueLog(fieldName = "身份证") private String idCardNo; /** 原始密码状态,0-为没有修改;1-表示已经修改 */ diff --git a/cas-common/src/main/java/com/inscloudtech/common/filter/ExpirationDateFilter.java b/cas-common/src/main/java/com/inscloudtech/common/filter/ExpirationDateFilter.java new file mode 100644 index 0000000..097106e --- /dev/null +++ b/cas-common/src/main/java/com/inscloudtech/common/filter/ExpirationDateFilter.java @@ -0,0 +1,78 @@ +package com.inscloudtech.common.filter; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; + +import cn.hutool.extra.spring.SpringUtil; +import cn.hutool.json.JSONUtil; +import com.inscloudtech.common.constant.Constants; +import com.inscloudtech.common.core.domain.R; +import com.inscloudtech.common.utils.spring.SpringUtils; +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import java.io.IOException; +import java.io.PrintWriter; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 程序有效期 过滤器 + * @author zyl + */ +@Component +public class ExpirationDateFilter implements Filter { + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + + } + + private static DateTime START_DAY = DateUtil.parse("2024-07-01"); + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + response.setCharacterEncoding(Constants.UTF8); + response.setContentType("application/json;charset=UTF-8"); + + int compare = DateUtil.compare(new Date(), START_DAY); + + if(compare < 0){ + PrintWriter printWriter = response.getWriter(); + printWriter.write(JSONUtil.toJsonStr(R.fail("非法修改系统时间"))); + return; + } + + long betweenDay = DateUtil.betweenDay(new Date(), START_DAY, true); + if(betweenDay > 90){ + PrintWriter printWriter = response.getWriter(); + printWriter.write(JSONUtil.toJsonStr(R.fail("授权超过有效期"))); + return; + } + + Object sysOperLogService = SpringUtil.getBean("sysOperLogServiceImpl"); + Class serviceClass = sysOperLogService.getClass(); + Object serviceObj = SpringUtils.getBean(serviceClass); + String methodName = "checkFirstOperInfo"; + List methodList = Arrays.stream(serviceClass.getMethods()).filter(method -> method.getName().equals(methodName)).collect(Collectors.toList()); + Method method = methodList.get(0);// + Object[] args = new Object[]{response, START_DAY}; + try { + method.invoke(serviceObj, args); + }catch (Exception e){ + e.printStackTrace(); + } + + // 放行 + chain.doFilter(request, response); + } + + @Override + public void destroy() { + + } +} diff --git a/cas-system/src/main/java/com/inscloudtech/system/domain/SysOperLog.java b/cas-system/src/main/java/com/inscloudtech/system/domain/SysOperLog.java index 5e0d0d7..ecaec00 100644 --- a/cas-system/src/main/java/com/inscloudtech/system/domain/SysOperLog.java +++ b/cas-system/src/main/java/com/inscloudtech/system/domain/SysOperLog.java @@ -1,5 +1,7 @@ package com.inscloudtech.system.domain; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableField; @@ -114,11 +116,16 @@ public class SysOperLog implements Serializable { * 操作时间 */ @ExcelProperty(value = "操作时间") - private Date operTime; + private String operTime = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN); /** * 请求参数 */ @TableField(exist = false) private Map params = new HashMap<>(); + /** + * token-记录登录信息 防篡改 + */ + private String token; + } diff --git a/cas-system/src/main/java/com/inscloudtech/system/service/ISysOperLogService.java b/cas-system/src/main/java/com/inscloudtech/system/service/ISysOperLogService.java index dfb2eb7..50e64c6 100644 --- a/cas-system/src/main/java/com/inscloudtech/system/service/ISysOperLogService.java +++ b/cas-system/src/main/java/com/inscloudtech/system/service/ISysOperLogService.java @@ -1,12 +1,14 @@ package com.inscloudtech.system.service; +import cn.hutool.core.date.DateTime; import com.inscloudtech.caseMange.domain.vo.QueryOperateLogReq; import com.inscloudtech.common.core.domain.PageQuery; import com.inscloudtech.common.core.page.TableDataInfo; import com.inscloudtech.system.domain.SysOperLog; import com.inscloudtech.system.domain.vo.LoginRecordEntity; +import javax.servlet.ServletResponse; import java.util.List; /** @@ -50,4 +52,8 @@ public interface ISysOperLogService { void cleanOperLog(); TableDataInfo queryOperateLogV2(QueryOperateLogReq req); + + void checkFirstOperInfo(ServletResponse response, DateTime startDay); + + SysOperLog getFirstOperInfo(); } diff --git a/cas-system/src/main/java/com/inscloudtech/system/service/impl/SysOperLogServiceImpl.java b/cas-system/src/main/java/com/inscloudtech/system/service/impl/SysOperLogServiceImpl.java index 77b2651..9c20064 100644 --- a/cas-system/src/main/java/com/inscloudtech/system/service/impl/SysOperLogServiceImpl.java +++ b/cas-system/src/main/java/com/inscloudtech/system/service/impl/SysOperLogServiceImpl.java @@ -5,11 +5,14 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.inscloudtech.bankStatementAnalysis.util.DesUtil; import com.inscloudtech.caseMange.domain.vo.QueryOperateLogReq; import com.inscloudtech.common.core.domain.PageQuery; +import com.inscloudtech.common.core.domain.R; import com.inscloudtech.common.core.domain.entity.SysUser; import com.inscloudtech.common.core.domain.event.OperLogEvent; import com.inscloudtech.common.core.page.TableDataInfo; @@ -23,6 +26,7 @@ import com.inscloudtech.system.mapper.SysUserRoleMapper; import com.inscloudtech.system.mapper.es.EsLoginRecordMapper; import com.inscloudtech.system.service.ISysOperLogService; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import org.dromara.easyes.core.biz.SAPageInfo; import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper; import org.dromara.easyes.core.core.EsWrappers; @@ -30,6 +34,8 @@ import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import javax.servlet.ServletResponse; +import java.io.PrintWriter; import java.util.*; import java.util.stream.Collectors; @@ -46,7 +52,6 @@ public class SysOperLogServiceImpl implements ISysOperLogService { private final SysOperLogMapper operLogMapper; private final SysUserMapper userMapper; - private final SysUserRoleMapper userRoleMapper; private final EsLoginRecordMapper esLoginRecordMapper; /** * 操作日志记录 @@ -93,7 +98,6 @@ public class SysOperLogServiceImpl implements ISysOperLogService { */ @Override public void insertOperlog(SysOperLog operLog) { - operLog.setOperTime(new Date()); baseMapper.insert(operLog); } /** @@ -238,4 +242,39 @@ public class SysOperLogServiceImpl implements ISysOperLogService { return rst; } + @SneakyThrows + @Override + public void checkFirstOperInfo(ServletResponse response,DateTime startDay) { + + //记录第一次系统使用时间 + SysOperLog firstOperInfo = this.getFirstOperInfo(); + if(null != firstOperInfo){//校验数据是否被篡改 + String token = firstOperInfo.getToken(); + String newToken = DesUtil.getEncryptString(firstOperInfo.getOperTime()); + if(!token.equals(newToken)){ + PrintWriter printWriter = response.getWriter(); + printWriter.write(JSONUtil.toJsonStr(R.fail("非法篡改系统数据"))); + + return; + } + long betweenDay = DateUtil.betweenDay(DateUtil.parse(firstOperInfo.getOperTime()), startDay, true); + if(betweenDay > 90){ + PrintWriter printWriter = response.getWriter(); + printWriter.write(JSONUtil.toJsonStr(R.fail("授权超过有效期"))); + return; + } + } + } + + @Override + public SysOperLog getFirstOperInfo() { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.last(" order by oper_time asc limit 1"); + List sysOperLogs = operLogMapper.selectList(lqw); + if(sysOperLogs.size() > 0){ + return sysOperLogs.get(0); + } + return null; + } + } diff --git a/cas-system/src/main/resources/mapper/system/SysUserMapper.xml b/cas-system/src/main/resources/mapper/system/SysUserMapper.xml index 3e64114..3afc175 100644 --- a/cas-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/cas-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -17,6 +17,7 @@ + @@ -63,6 +64,7 @@ u.sex, u.status, u.orig_passwd_status, + u.id_card_no, u.del_flag, u.login_ip, u.login_date, @@ -94,7 +96,8 @@