From 616d9d24a4bfad206699245c391f0d0104581f13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=AB=E5=9C=B0=E5=B0=8F=E5=83=A7?= <4066402@qq.com> Date: Tue, 16 Jul 2024 19:09:27 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=B0=86log=E6=94=B9=E4=B8=BA=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=80=9A=E8=BF=87=E5=BE=AE=E6=9C=8D=E5=8A=A1=E8=B0=83?= =?UTF-8?q?=E7=94=A8=EF=BC=8Csystem=E8=BF=98=E6=98=AF=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E8=B0=83=E7=94=A8=E7=9A=84=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=EF=BC=8C=E7=94=B1=E4=BA=8Ehibernate-re=E4=B8=AD=E5=BC=95?= =?UTF-8?q?=E7=94=A8=E4=BA=86BaseCommonService=EF=BC=8C=E6=89=80=E4=BB=A5?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E8=BF=98=E4=BF=9D=E7=95=99base-core=E4=B8=AD?= =?UTF-8?q?=E7=9A=84modules.base=EF=BC=8C=E5=BB=BA=E8=AE=AEhibernate-re?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E4=BD=BF=E7=94=A8LogAPI=EF=BC=8C=E5=90=8E?= =?UTF-8?q?=E7=BB=AD=E5=B0=B1=E5=8F=AF=E4=BB=A5=E7=9B=B4=E6=8E=A5=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=8E=89base-core=E4=B8=AD=E7=9A=84modules.base?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jeecg/common/api/LogAPI.java | 22 ++++++ .../jeecg/common/aspect/AutoLogAspect.java | 8 +- .../exception/JeecgBootExceptionHandler.java | 8 +- .../jeecg/common/system/api/ISysLogAPI.java | 38 +++++++++ .../api/factory/SysLogAPIFallbackFactory.java | 17 ++++ .../api/fallback/SysLogAPIFallback.java | 23 ++++++ .../jeecg/common/system/api/ISysLogAPI.java | 17 ++++ .../JimuDragExternalServiceImpl.java | 8 +- .../modules/aop/TenantPackUserLogAspect.java | 6 +- .../api/controller/SysLogApiController.java | 38 +++++++++ .../system/controller/LoginController.java | 13 ++-- .../SysDepartPermissionController.java | 12 +-- .../controller/SysDepartRoleController.java | 7 +- .../controller/SysPermissionController.java | 5 +- .../system/controller/SysRoleController.java | 14 ++-- .../controller/SysTenantController.java | 13 +--- .../system/controller/SysUserController.java | 20 +++-- .../controller/SysUserOnlineController.java | 6 +- .../controller/ThirdLoginController.java | 10 +-- .../modules/system/mapper/SysLogMapper.java | 9 +++ .../system/mapper/xml/SysLogMapper.xml | 23 ++++++ .../system/service/ISysLogService.java | 3 +- .../service/impl/SysLogServiceImpl.java | 77 ++++++++++++++++++- .../service/impl/SysUserServiceImpl.java | 12 ++- 24 files changed, 323 insertions(+), 86 deletions(-) create mode 100644 jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/LogAPI.java create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysLogAPI.java create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/factory/SysLogAPIFallbackFactory.java create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysLogAPIFallback.java create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysLogAPI.java create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/SysLogApiController.java diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/LogAPI.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/LogAPI.java new file mode 100644 index 000000000..97f648462 --- /dev/null +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/LogAPI.java @@ -0,0 +1,22 @@ +package org.jeecg.common.api; + +import org.jeecg.common.api.dto.LogDTO; + +public interface LogAPI { + + /** + * 保存日志 + * @param logDTO + */ + void addLog(LogDTO logDTO); + + + /** + * 保存日志 + * @param logContent + * @param logType + * @param operateType + */ + void addLog(String logContent, Integer logType, Integer operateType); + +} diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java index e07c9d45e..354eca431 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java @@ -9,17 +9,18 @@ import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; +import org.jeecg.common.api.LogAPI; import org.jeecg.common.api.dto.LogDTO; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.enums.ModuleType; import org.jeecg.common.constant.enums.OperateTypeEnum; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.IpUtils; import org.jeecg.common.util.SpringContextUtils; import org.jeecg.common.util.oConvertUtils; +import org.springframework.context.annotation.Lazy; import org.springframework.core.LocalVariableTableParameterNameDiscoverer; import org.springframework.stereotype.Component; import org.springframework.validation.BindingResult; @@ -43,8 +44,9 @@ import java.util.Date; @Component public class AutoLogAspect { + @Lazy @Resource - private BaseCommonService baseCommonService; + private LogAPI logAPI; @Pointcut("@annotation(org.jeecg.common.aspect.annotation.AutoLog)") public void logPointCut() { @@ -110,7 +112,7 @@ public class AutoLogAspect { dto.setCostTime(time); dto.setCreateTime(new Date()); //保存系统日志 - baseCommonService.addLog(dto); + logAPI.addLog(dto); } diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java index ed28ecad6..5d9129818 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java @@ -6,6 +6,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.AuthorizationException; import org.apache.shiro.authz.UnauthorizedException; +import org.jeecg.common.api.LogAPI; import org.jeecg.common.api.dto.LogDTO; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; @@ -16,8 +17,8 @@ import org.jeecg.common.util.BrowserUtils; import org.jeecg.common.util.IpUtils; import org.jeecg.common.util.SpringContextUtils; import org.jeecg.common.util.oConvertUtils; -import org.jeecg.modules.base.service.BaseCommonService; import org.springframework.beans.BeansException; +import org.springframework.context.annotation.Lazy; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DuplicateKeyException; import org.springframework.data.redis.connection.PoolException; @@ -44,8 +45,9 @@ import java.util.Map; @Slf4j public class JeecgBootExceptionHandler { + @Lazy @Resource - BaseCommonService baseCommonService; + private LogAPI logAPI; /** * 处理自定义异常 @@ -237,7 +239,7 @@ public class JeecgBootExceptionHandler { } - baseCommonService.addLog(log); + logAPI.addLog(log); } //update-end---author:chenrui ---date:20240423 for:[QQYUN-8732]把错误的日志都抓取了 方便后续处理,单独弄个日志类型------------ diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysLogAPI.java b/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysLogAPI.java new file mode 100644 index 000000000..88a5f57a7 --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysLogAPI.java @@ -0,0 +1,38 @@ +package org.jeecg.common.system.api; + +import org.jeecg.common.api.LogAPI; +import org.jeecg.common.api.dto.LogDTO; +import org.jeecg.common.constant.ServiceNameConstants; +import org.jeecg.common.system.api.factory.SysLogAPIFallbackFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +@Component +@FeignClient(contextId = "sysLogRemoteApi", value = ServiceNameConstants.SERVICE_SYSTEM, fallbackFactory = SysLogAPIFallbackFactory.class) +@ConditionalOnMissingClass("org.jeecg.modules.system.service.impl.SysLogServiceImpl") +public interface ISysLogAPI extends LogAPI { + + /** + * 保存日志 + * @param logDTO + */ + @Override + @PostMapping("/sys/log/api/addLog") + void addLog(@RequestBody LogDTO logDTO); + + /** + * 保存日志 + * @param logContent + * @param logType + * @param operateType + */ + @Override + @GetMapping("/sys/log/api/addLog") + void addLog(@RequestParam("logContent") String logContent,@RequestParam("logType") Integer logType,@RequestParam("operateType") Integer operateType); + +} diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/factory/SysLogAPIFallbackFactory.java b/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/factory/SysLogAPIFallbackFactory.java new file mode 100644 index 000000000..54559a3fb --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/factory/SysLogAPIFallbackFactory.java @@ -0,0 +1,17 @@ +package org.jeecg.common.system.api.factory; + +import org.jeecg.common.system.api.ISysLogAPI; +import org.jeecg.common.system.api.fallback.SysLogAPIFallback; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +@Component +public class SysLogAPIFallbackFactory implements FallbackFactory { + + @Override + public ISysLogAPI create(Throwable throwable) { + SysLogAPIFallback fallback = new SysLogAPIFallback(); + fallback.setCause(throwable); + return fallback; + } +} diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysLogAPIFallback.java b/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysLogAPIFallback.java new file mode 100644 index 000000000..427f30e0b --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysLogAPIFallback.java @@ -0,0 +1,23 @@ +package org.jeecg.common.system.api.fallback; + +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.dto.LogDTO; +import org.jeecg.common.system.api.ISysLogAPI; + +@Slf4j +public class SysLogAPIFallback implements ISysLogAPI { + + @Setter + private Throwable cause; + + @Override + public void addLog(LogDTO logDTO) { + log.error("保存日志信息失败 {}", cause); + } + + @Override + public void addLog(String logContent, Integer logType, Integer operateType) { + log.error("保存日志信息失败 {}", cause); + } +} diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysLogAPI.java b/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysLogAPI.java new file mode 100644 index 000000000..288297f1a --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysLogAPI.java @@ -0,0 +1,17 @@ +package org.jeecg.common.system.api; + +import org.jeecg.common.api.LogAPI; +import org.jeecg.common.system.vo.LoginUser; + +public interface ISysLogAPI extends LogAPI { + + /** + * 保存日志 + * @param logContent + * @param logType + * @param operateType + * @param user + */ + void addLog(String logContent, Integer logType, Integer operateType, LoginUser user); + +} diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuDragExternalServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuDragExternalServiceImpl.java index 33223b43e..8b0d8236d 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuDragExternalServiceImpl.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuDragExternalServiceImpl.java @@ -5,10 +5,10 @@ import org.jeecg.common.api.dto.LogDTO; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.util.oConvertUtils; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.drag.service.IOnlDragExternalService; import org.jeecg.modules.drag.vo.DragDictModel; import org.jeecg.modules.drag.vo.DragLogDTO; +import org.jeecg.modules.system.service.ISysLogService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -31,7 +31,7 @@ public class JimuDragExternalServiceImpl implements IOnlDragExternalService { @Autowired @Lazy - private BaseCommonService baseCommonService; + private ISysLogService sysLogService; @Autowired @Lazy @@ -85,7 +85,7 @@ public class JimuDragExternalServiceImpl implements IOnlDragExternalService { if(oConvertUtils.isNotEmpty(dragLogDTO)){ LogDTO dto = new LogDTO(); BeanUtils.copyProperties(dragLogDTO,dto); - baseCommonService.addLog(dto); + sysLogService.addLog(dto); } } @@ -97,6 +97,6 @@ public class JimuDragExternalServiceImpl implements IOnlDragExternalService { */ @Override public void addLog(String logMsg, int logType, int operateType) { - baseCommonService.addLog(logMsg,logType,operateType); + sysLogService.addLog(logMsg,logType,operateType); } } \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/aop/TenantPackUserLogAspect.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/aop/TenantPackUserLogAspect.java index 13c03c678..f81e2adeb 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/aop/TenantPackUserLogAspect.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/aop/TenantPackUserLogAspect.java @@ -10,9 +10,9 @@ import org.aspectj.lang.reflect.MethodSignature; import org.jeecg.common.api.dto.LogDTO; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.SysTenantPack; import org.jeecg.modules.system.entity.SysTenantPackUser; +import org.jeecg.modules.system.service.ISysLogService; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -28,7 +28,7 @@ import java.util.Date; public class TenantPackUserLogAspect { @Resource - private BaseCommonService baseCommonService; + private ISysLogService sysLogService; @Pointcut("@annotation(org.jeecg.modules.aop.TenantLog)") public void tenantLogPointCut() { @@ -87,7 +87,7 @@ public class TenantPackUserLogAspect { } dto.setCreateTime(new Date()); //保存系统日志 - baseCommonService.addLog(dto); + sysLogService.addLog(dto); } } return joinPoint.proceed(); diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/SysLogApiController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/SysLogApiController.java new file mode 100644 index 000000000..d074b14ed --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/SysLogApiController.java @@ -0,0 +1,38 @@ +package org.jeecg.modules.api.controller; + +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.dto.LogDTO; +import org.jeecg.modules.system.service.ISysLogService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@Slf4j +@RestController +@RequestMapping("/sys/log/api") +public class SysLogApiController { + + @Resource + private ISysLogService sysLogService; + + /** + * 保存日志 + * @param logDTO + */ + @PostMapping("/addLog") + public void addLog(@RequestBody LogDTO logDTO) { + sysLogService.addLog(logDTO); + } + + /** + * 保存日志 + * @param logContent + * @param logType + * @param operateType + */ + @GetMapping("/sys/log/api/addLog") + public void addLog(@RequestParam("logContent") String logContent,@RequestParam("logType") Integer logType,@RequestParam("operateType") Integer operateType) { + sysLogService.addLog(logContent,logType,operateType); + } + +} diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java index 8d47b01dd..4ec435270 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java @@ -20,7 +20,6 @@ import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.*; import org.jeecg.common.util.encryption.EncryptedString; import org.jeecg.config.JeecgBaseConfig; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.entity.SysRoleIndex; import org.jeecg.modules.system.entity.SysTenant; @@ -63,8 +62,6 @@ public class LoginController { private ISysDepartService sysDepartService; @Autowired private ISysDictService sysDictService; - @Resource - private BaseCommonService baseCommonService; @Autowired private JeecgBaseConfig jeecgBaseConfig; @@ -128,7 +125,7 @@ public class LoginController { // step.6 记录用户登录日志 LoginUser loginUser = new LoginUser(); BeanUtils.copyProperties(sysUser, loginUser); - baseCommonService.addLog("用户名: " + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null,loginUser); + logService.addLog("用户名: " + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null,loginUser); return result; } @@ -191,7 +188,7 @@ public class LoginController { LoginUser sysUser = sysBaseApi.getUserByName(username); if(sysUser!=null) { //update-begin--Author:wangshuai Date:20200714 for:登出日志没有记录人员 - baseCommonService.addLog("用户名: "+sysUser.getRealname()+",退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); + logService.addLog("用户名: "+sysUser.getRealname()+",退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); //update-end--Author:wangshuai Date:20200714 for:登出日志没有记录人员 log.info(" 用户名: "+sysUser.getRealname()+",退出成功! "); //清空用户登录Token缓存 @@ -342,7 +339,7 @@ public class LoginController { SysUser sysUser = sysUserService.getUserByPhone(mobile); if(sysUser!=null) { result.error500(" 手机号已经注册,请直接登录!"); - baseCommonService.addLog("手机号已经注册,请直接登录!", CommonConstant.LOG_TYPE_1, null); + logService.addLog("手机号已经注册,请直接登录!", CommonConstant.LOG_TYPE_1, null); return result; } b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.REGISTER_TEMPLATE_CODE); @@ -435,7 +432,7 @@ public class LoginController { //用户信息 userInfo(sysUser, result, request); //添加日志 - baseCommonService.addLog("用户名: " + sysUser.getUsername() + ",登录成功!", CommonConstant.LOG_TYPE_1, null); + logService.addLog("用户名: " + sysUser.getUsername() + ",登录成功!", CommonConstant.LOG_TYPE_1, null); return result; } @@ -637,7 +634,7 @@ public class LoginController { result.setResult(obj); result.setSuccess(true); result.setCode(200); - baseCommonService.addLog("用户名: " + username + ",登录成功[移动端]!", CommonConstant.LOG_TYPE_1, null); + logService.addLog("用户名: " + username + ",登录成功[移动端]!", CommonConstant.LOG_TYPE_1, null); return result; } diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java index 219be7feb..81fd17e8d 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java @@ -2,7 +2,6 @@ package org.jeecg.modules.system.controller; import java.util.*; import java.util.stream.Collectors; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -12,24 +11,19 @@ import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.SysDepartPermission; import org.jeecg.modules.system.entity.SysDepartRolePermission; import org.jeecg.modules.system.entity.SysPermission; import org.jeecg.modules.system.entity.SysPermissionDataRule; import org.jeecg.modules.system.model.TreeModel; -import org.jeecg.modules.system.service.ISysDepartPermissionService; +import org.jeecg.modules.system.service.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.modules.system.service.ISysDepartRolePermissionService; -import org.jeecg.modules.system.service.ISysPermissionDataRuleService; -import org.jeecg.modules.system.service.ISysPermissionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -61,7 +55,7 @@ public class SysDepartPermissionController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - baseCommonService.addLog("删除角色操作,角色ids:" + ids, CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_4); + sysLogService.addLog("删除角色操作,角色ids:" + ids, CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_4); Result result = new Result(); if(oConvertUtils.isEmpty(ids)) { result.error500("未选中角色!"); @@ -257,7 +253,7 @@ public class SysRoleController { Long getRoleCount = sysRoleService.getRoleCountByTenantId(id, tenantId); //如果存在角色id为0,即不存在,则删除角色 if(getRoleCount == 0 && !username.equals(sysUser.getUsername()) ){ - baseCommonService.addLog("未经授权,删除非本租户下的角色ID:" + id + ",操作人:" + sysUser.getUsername(), CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_4); + sysLogService.addLog("未经授权,删除非本租户下的角色ID:" + id + ",操作人:" + sysUser.getUsername(), CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_4); return Result.error("批量删除角色失败,存在角色不在此租户中,禁止批量删除"); } } diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java index 24d9722e7..5605d4717 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java @@ -21,13 +21,8 @@ import org.jeecg.common.util.PasswordUtil; import org.jeecg.common.util.TokenUtils; import org.jeecg.common.util.oConvertUtils; import org.jeecg.config.mybatis.MybatisPlusSaasConfig; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.*; -import org.jeecg.modules.system.service.ISysTenantPackService; -import org.jeecg.modules.system.service.ISysTenantService; -import org.jeecg.modules.system.service.ISysUserService; -import org.jeecg.modules.system.service.ISysUserTenantService; -import org.jeecg.modules.system.service.ISysDepartService; +import org.jeecg.modules.system.service.*; import org.jeecg.modules.system.vo.SysUserTenantVo; import org.jeecg.modules.system.vo.tenant.TenantDepartAuthInfo; import org.jeecg.modules.system.vo.tenant.TenantPackModel; @@ -61,7 +56,7 @@ public class SysTenantController { private ISysTenantPackService sysTenantPackService; @Autowired - private BaseCommonService baseCommonService; + private ISysLogService sysLogService; @Autowired private ISysDepartService sysDepartService; @@ -189,7 +184,7 @@ public class SysTenantController { String username = "admin"; String createdBy = sysUser.getUsername(); if (!sysTenant.getCreateBy().equals(createdBy) && !username.equals(createdBy)) { - baseCommonService.addLog("未经授权,不能删除非自己创建的租户,租户ID:" + id + ",操作人:" + sysUser.getUsername(), CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_3); + sysLogService.addLog("未经授权,不能删除非自己创建的租户,租户ID:" + id + ",操作人:" + sysUser.getUsername(), CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_3); return Result.error("删除租户失败,当前操作人不是租户的创建人!"); } } @@ -225,7 +220,7 @@ public class SysTenantController { String username = "admin"; String createdBy = sysUser.getUsername(); if (!sysTenant.getCreateBy().equals(createdBy) && !username.equals(createdBy)) { - baseCommonService.addLog("未经授权,不能删除非自己创建的租户,租户ID:" + id + ",操作人:" + sysUser.getUsername(), CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_3); + sysLogService.addLog("未经授权,不能删除非自己创建的租户,租户ID:" + id + ",操作人:" + sysUser.getUsername(), CommonConstant.LOG_TYPE_2, CommonConstant.OPERATE_TYPE_3); return Result.error("删除租户失败,当前操作人不是租户的创建人!"); } } diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index 228171d31..6196efb63 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -16,7 +16,6 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresRoles; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.PermissionData; -import org.jeecg.common.base.BaseMap; import org.jeecg.common.config.TenantContext; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.SymbolConstant; @@ -26,7 +25,6 @@ import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.*; import org.jeecg.config.mybatis.MybatisPlusSaasConfig; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.model.DepartIdModel; import org.jeecg.modules.system.model.SysUserSysDepartModel; @@ -91,7 +89,7 @@ public class SysUserController { private String upLoadPath; @Autowired - private BaseCommonService baseCommonService; + private ISysLogService sysLogService; @Autowired private ISysUserAgentService sysUserAgentService; @@ -171,7 +169,7 @@ public class SysUserController { //获取租户ids String relTenantIds = jsonObject.getString("relTenantIds"); sysUserService.saveUser(user, selectedRoles, selectedDeparts, relTenantIds); - baseCommonService.addLog("添加用户,username: " +user.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + sysLogService.addLog("添加用户,username: " +user.getUsername() ,CommonConstant.LOG_TYPE_2, 2); result.success("添加成功!"); } catch (Exception e) { log.error(e.getMessage(), e); @@ -186,7 +184,7 @@ public class SysUserController { Result result = new Result(); try { SysUser sysUser = sysUserService.getById(jsonObject.getString("id")); - baseCommonService.addLog("编辑用户,username: " +sysUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + sysLogService.addLog("编辑用户,username: " +sysUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); if(sysUser==null) { result.error500("未找到对应实体"); }else { @@ -221,7 +219,7 @@ public class SysUserController { @RequiresPermissions("system:user:delete") @RequestMapping(value = "/delete", method = RequestMethod.DELETE) public Result delete(@RequestParam(name="id",required=true) String id) { - baseCommonService.addLog("删除用户,id: " +id ,CommonConstant.LOG_TYPE_2, 3); + sysLogService.addLog("删除用户,id: " +id ,CommonConstant.LOG_TYPE_2, 3); this.sysUserService.deleteUser(id); return Result.ok("删除用户成功"); } @@ -232,7 +230,7 @@ public class SysUserController { @RequiresPermissions("system:user:deleteBatch") @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { - baseCommonService.addLog("批量删除用户, ids: " +ids ,CommonConstant.LOG_TYPE_2, 3); + sysLogService.addLog("批量删除用户, ids: " +ids ,CommonConstant.LOG_TYPE_2, 3); this.sysUserService.deleteBatchUsers(ids); return Result.ok("批量删除用户成功"); } @@ -344,7 +342,7 @@ public class SysUserController { sysUser.setId(u.getId()); //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - baseCommonService.addLog("修改用户 "+sysUser.getUsername()+" 的密码,操作人: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + sysLogService.addLog("修改用户 "+sysUser.getUsername()+" 的密码,操作人: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ return sysUserService.changePassword(sysUser); } @@ -622,7 +620,7 @@ public class SysUserController { } //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - baseCommonService.addLog("修改密码,username: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + sysLogService.addLog("修改密码,username: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ return sysUserService.resetPassword(username,oldpassword,password,confirmpassword); } @@ -1143,7 +1141,7 @@ public class SysUserController { sysUser.setPassword(passwordEncode); this.sysUserService.updateById(sysUser); //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]密码重置添加敏感日志------------ - baseCommonService.addLog("重置 "+username+" 的密码,操作人: " +sysUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); + sysLogService.addLog("重置 "+username+" 的密码,操作人: " +sysUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2); //update-end---author:wangshuai ---date:20220316 for:[VUEN-234]密码重置添加敏感日志------------ result.setSuccess(true); result.setMessage("密码重置完成!"); @@ -1293,7 +1291,7 @@ public class SysUserController { try { String username = JwtUtil.getUserNameByToken(request); SysUser sysUser = sysUserService.getUserByName(username); - baseCommonService.addLog("移动端编辑用户,id: " +jsonObject.getString("id") ,CommonConstant.LOG_TYPE_2, 2); + sysLogService.addLog("移动端编辑用户,id: " +jsonObject.getString("id") ,CommonConstant.LOG_TYPE_2, 2); String realname=jsonObject.getString("realname"); String avatar=jsonObject.getString("avatar"); String sex=jsonObject.getString("sex"); diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java index e6aed7531..9183e442c 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java @@ -11,7 +11,7 @@ import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.RedisUtil; import org.jeecg.common.util.oConvertUtils; -import org.jeecg.modules.base.service.BaseCommonService; +import org.jeecg.modules.system.service.ISysLogService; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.service.impl.SysBaseApiImpl; import org.jeecg.modules.system.vo.SysUserOnlineVO; @@ -47,7 +47,7 @@ public class SysUserOnlineController { private SysBaseApiImpl sysBaseApi; @Resource - private BaseCommonService baseCommonService; + private ISysLogService sysLogService; @RequestMapping(value = "/list", method = RequestMethod.GET) public Result> list(@RequestParam(name="username", required=false) String username, @@ -112,7 +112,7 @@ public class SysUserOnlineController { String username = JwtUtil.getUsername(online.getToken()); LoginUser sysUser = sysBaseApi.getUserByName(username); if(sysUser!=null) { - baseCommonService.addLog("强制: "+sysUser.getRealname()+"退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); + sysLogService.addLog("强制: "+sysUser.getRealname()+"退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); log.info(" 强制 "+sysUser.getRealname()+"退出成功! "); //清空用户登录Token缓存 redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + online.getToken()); diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java index d4c9143f1..7064afa7e 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java @@ -16,15 +16,11 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.enums.MessageTypeEnum; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.util.*; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.SysThirdAccount; import org.jeecg.modules.system.entity.SysThirdAppConfig; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.model.ThirdLoginModel; -import org.jeecg.modules.system.service.ISysDictService; -import org.jeecg.modules.system.service.ISysThirdAccountService; -import org.jeecg.modules.system.service.ISysThirdAppConfigService; -import org.jeecg.modules.system.service.ISysUserService; +import org.jeecg.modules.system.service.*; import org.jeecg.modules.system.service.impl.ThirdAppDingtalkServiceImpl; import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -55,7 +51,7 @@ public class ThirdLoginController { @Autowired private ISysDictService sysDictService; @Autowired - private BaseCommonService baseCommonService; + private ISysLogService sysLogService; @Autowired private RedisUtil redisUtil; @Autowired @@ -261,7 +257,7 @@ public class ThirdLoginController { result.setResult(obj); result.setSuccess(true); result.setCode(200); - baseCommonService.addLog("用户名: " + username + ",登录成功[第三方用户]!", CommonConstant.LOG_TYPE_1, null); + sysLogService.addLog("用户名: " + username + ",登录成功[第三方用户]!", CommonConstant.LOG_TYPE_1, null); return result; } /** diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java index f84d124bd..15b084e1e 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java @@ -4,7 +4,9 @@ import java.util.Date; import java.util.List; import java.util.Map; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import org.apache.ibatis.annotations.Param; +import org.jeecg.common.api.dto.LogDTO; import org.jeecg.modules.system.entity.SysLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -57,4 +59,11 @@ public interface SysLogMapper extends BaseMapper { * @return */ List> findVisitCount(@Param("dayStart") Date dayStart, @Param("dayEnd") Date dayEnd, @Param("dbType") String dbType); + + /** + * 保存日志 + * @param dto + */ + @InterceptorIgnore(illegalSql = "true", tenantLine = "true") + void saveLog(@Param("dto") LogDTO dto); } diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysLogMapper.xml b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysLogMapper.xml index e853dcc1c..6f9023574 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysLogMapper.xml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysLogMapper.xml @@ -66,4 +66,27 @@ + + + insert into sys_log (id, log_type, log_content, method, operate_type, request_url, request_type, request_param, ip, userid, username, cost_time, create_time,create_by, tenant_id, client_type) + values( + #{dto.id,jdbcType=VARCHAR}, + #{dto.logType,jdbcType=INTEGER}, + #{dto.logContent,jdbcType=VARCHAR}, + #{dto.method,jdbcType=VARCHAR}, + #{dto.operateType,jdbcType=INTEGER}, + #{dto.requestUrl,jdbcType=VARCHAR}, + #{dto.requestType,jdbcType=VARCHAR}, + #{dto.requestParam,jdbcType=VARCHAR}, + #{dto.ip,jdbcType=VARCHAR}, + #{dto.userid,jdbcType=VARCHAR}, + #{dto.username,jdbcType=VARCHAR}, + #{dto.costTime,jdbcType=BIGINT}, + #{dto.createTime,jdbcType=TIMESTAMP}, + #{dto.createBy,jdbcType=VARCHAR}, + #{dto.tenantId,jdbcType=INTEGER}, + #{dto.clientType,jdbcType=VARCHAR} + ) + + diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysLogService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysLogService.java index 2d7238db3..0124ecbc6 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysLogService.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysLogService.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import org.jeecg.common.system.api.ISysLogAPI; import org.jeecg.modules.system.entity.SysLog; import com.baomidou.mybatisplus.extension.service.IService; @@ -16,7 +17,7 @@ import com.baomidou.mybatisplus.extension.service.IService; * @Author zhangweijian * @since 2018-12-26 */ -public interface ISysLogService extends IService { +public interface ISysLogService extends ISysLogAPI,IService { /** * 清空所有日志记录 diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java index e226c3cbd..7dc72ec12 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java @@ -6,10 +6,16 @@ import java.util.List; import java.util.Map; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.dto.LogDTO; +import org.jeecg.common.constant.enums.ClientTerminalTypeEnum; import org.jeecg.common.system.api.ISysBaseAPI; -import org.jeecg.common.util.CommonUtils; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.*; import org.jeecg.modules.system.entity.SysLog; import org.jeecg.modules.system.mapper.SysLogMapper; import org.jeecg.modules.system.service.ISysLogService; @@ -62,4 +68,73 @@ public class SysLogServiceImpl extends ServiceImpl impleme DbType dbType = CommonUtils.getDatabaseTypeEnum(); return sysLogMapper.findVisitCount(dayStart, dayEnd,dbType.getDb()); } + + @Override + public void addLog(String logContent, Integer logType, Integer operateType, LoginUser user) { + LogDTO sysLog = new LogDTO(); + sysLog.setId(String.valueOf(IdWorker.getId())); + //注解上的描述,操作日志内容 + sysLog.setLogContent(logContent); + sysLog.setLogType(logType); + sysLog.setOperateType(operateType); + try { + //获取request + HttpServletRequest request = SpringContextUtils.getHttpServletRequest(); + //设置IP地址 + sysLog.setIp(IpUtils.getIpAddr(request)); + + try { + //设置客户端 + if(BrowserUtils.isDesktop(request)){ + sysLog.setClientType(ClientTerminalTypeEnum.PC.getKey()); + }else{ + sysLog.setClientType(ClientTerminalTypeEnum.APP.getKey()); + } + } catch (Exception e) { + //e.printStackTrace(); + } + } catch (Exception e) { + sysLog.setIp("127.0.0.1"); + } + //获取登录用户信息 + if(user==null){ + try { + user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + } catch (Exception e) { + //e.printStackTrace(); + } + } + if(user!=null){ + sysLog.setUserid(user.getUsername()); + sysLog.setUsername(user.getRealname()); + } + sysLog.setCreateTime(new Date()); + //保存日志(异常捕获处理,防止数据太大存储失败,导致业务失败)JT-238 + try { + sysLogMapper.saveLog(sysLog); + } catch (Exception e) { + log.warn(" LogContent length : "+sysLog.getLogContent().length()); + log.warn(e.getMessage()); + } + } + + @Override + public void addLog(LogDTO logDTO) { + if(oConvertUtils.isEmpty(logDTO.getId())){ + logDTO.setId(String.valueOf(IdWorker.getId())); + } + //保存日志(异常捕获处理,防止数据太大存储失败,导致业务失败)JT-238 + try { + logDTO.setCreateTime(new Date()); + sysLogMapper.saveLog(logDTO); + } catch (Exception e) { + log.warn(" LogContent length : "+logDTO.getLogContent().length()); + log.warn(e.getMessage()); + } + } + + @Override + public void addLog(String logContent, Integer logType, Integer operateType) { + addLog(logContent, logType, operateType, null); + } } diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 9a3f4234c..82129e894 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -33,11 +33,11 @@ import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.SysUserCacheInfo; import org.jeecg.common.util.*; import org.jeecg.config.mybatis.MybatisPlusSaasConfig; -import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.message.handle.impl.SystemSendMsgHandle; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.mapper.*; import org.jeecg.modules.system.model.SysUserSysDepartModel; +import org.jeecg.modules.system.service.ISysLogService; import org.jeecg.modules.system.service.ISysRoleIndexService; import org.jeecg.modules.system.service.ISysThirdAccountService; import org.jeecg.modules.system.service.ISysUserService; @@ -55,11 +55,9 @@ import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jetbrains.annotations.Nullable; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -101,7 +99,7 @@ public class SysUserServiceImpl extends ServiceImpl impl @Autowired private SysDepartRoleMapper sysDepartRoleMapper; @Resource - private BaseCommonService baseCommonService; + private ISysLogService sysLogService; @Autowired private SysThirdAccountMapper sysThirdAccountMapper; @Autowired @@ -650,20 +648,20 @@ public class SysUserServiceImpl extends ServiceImpl impl //情况1:根据用户信息查询,该用户不存在 if (sysUser == null) { result.error500("该用户不存在,请注册"); - baseCommonService.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null); + sysLogService.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null); return result; } //情况2:根据用户信息查询,该用户已注销 //update-begin---author:王帅 Date:20200601 for:if条件永远为falsebug------------ if (CommonConstant.DEL_FLAG_1.equals(sysUser.getDelFlag())) { //update-end---author:王帅 Date:20200601 for:if条件永远为falsebug------------ - baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null); + sysLogService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null); result.error500("该用户已注销"); return result; } //情况3:根据用户信息查询,该用户已冻结 if (CommonConstant.USER_FREEZE.equals(sysUser.getStatus())) { - baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已冻结!", CommonConstant.LOG_TYPE_1, null); + sysLogService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已冻结!", CommonConstant.LOG_TYPE_1, null); result.error500("该用户已冻结"); return result; } -- Gitee From 614cb1564898b26c583103dbbbcbde7f05764980 Mon Sep 17 00:00:00 2001 From: zzg <4066402@qq.com> Date: Fri, 21 Nov 2025 15:25:56 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=9E=9A=E4=B8=BE=E6=BC=8F=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/service/impl/SysUserServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 82129e894..0ccc1bf33 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -647,7 +647,8 @@ public class SysUserServiceImpl extends ServiceImpl impl Result result = new Result(); //情况1:根据用户信息查询,该用户不存在 if (sysUser == null) { - result.error500("该用户不存在,请注册"); +// result.error500("该用户不存在,请注册"); + result.error500("用户名或密码错误"); sysLogService.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null); return result; } @@ -656,7 +657,8 @@ public class SysUserServiceImpl extends ServiceImpl impl if (CommonConstant.DEL_FLAG_1.equals(sysUser.getDelFlag())) { //update-end---author:王帅 Date:20200601 for:if条件永远为falsebug------------ sysLogService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null); - result.error500("该用户已注销"); +// result.error500("该用户已注销"); + result.error500("用户名或密码错误"); return result; } //情况3:根据用户信息查询,该用户已冻结 -- Gitee From 448b13eb7a745edc8dfbe0b4af6d20f1694e9b74 Mon Sep 17 00:00:00 2001 From: zzg <4066402@qq.com> Date: Fri, 21 Nov 2025 16:31:26 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=BC=BA=E5=BC=B1=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jeecg-boot/jeecg-boot-base-core/pom.xml | 8 +++- .../system/controller/SysUserController.java | 37 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/jeecg-boot/jeecg-boot-base-core/pom.xml b/jeecg-boot/jeecg-boot-base-core/pom.xml index c4cf11c3b..32f37eaa2 100644 --- a/jeecg-boot/jeecg-boot-base-core/pom.xml +++ b/jeecg-boot/jeecg-boot-base-core/pom.xml @@ -294,5 +294,11 @@ org.jeecgframework.boot jeecg-boot-starter-chatgpt + + + org.passay + passay + 1.6.4 + - \ No newline at end of file + diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index 6196efb63..364e30da7 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -38,6 +38,7 @@ import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.passay.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; @@ -156,6 +157,10 @@ public class SysUserController { String selectedDeparts = jsonObject.getString("selecteddeparts"); try { SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); + boolean flag = checkPassword(user.getPassword()); + if(!flag){ + return Result.error("密码至少包含一个大写字母、一个小写字母、一个数字及一个特殊字符且不低于8位"); + } user.setCreateTime(new Date());//设置创建时间 String salt = oConvertUtils.randomGen(8); user.setSalt(salt); @@ -339,6 +344,10 @@ public class SysUserController { if (u == null) { return Result.error("用户不存在!"); } + boolean flag = checkPassword(sysUser.getPassword()); + if(!flag){ + return Result.error("密码至少包含一个大写字母、一个小写字母、一个数字及一个特殊字符且不低于8位"); + } sysUser.setId(u.getId()); //update-begin---author:wangshuai ---date:20220316 for:[VUEN-234]修改密码添加敏感日志------------ LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -613,6 +622,10 @@ public class SysUserController { LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); if(!sysUser.getUsername().equals(username)){ return Result.error("只允许修改自己的密码!"); + } + boolean flag = checkPassword(password); + if(!flag){ + return Result.error("密码至少包含一个大写字母、一个小写字母、一个数字及一个特殊字符且不低于8位"); } SysUser user = this.sysUserService.getOne(new LambdaQueryWrapper().eq(SysUser::getUsername, username)); if(user==null) { @@ -1827,4 +1840,28 @@ public class SysUserController { public Result importAppUser(HttpServletRequest request, HttpServletResponse response)throws IOException { return sysUserService.importAppUser(request); } + + private boolean checkPassword(String password) { + // 定义密码策略 + PasswordValidator validator = new PasswordValidator(Arrays.asList( + // 长度8-128 + new LengthRule(8, 64), + // 至少一个大写字母 + new CharacterRule(EnglishCharacterData.UpperCase, 1), + // 至少一个小写字母 + new CharacterRule(EnglishCharacterData.LowerCase, 1), + // 至少一个数字 + new CharacterRule(EnglishCharacterData.Digit, 1), + // 至少一个特殊字符 + new CharacterRule(EnglishCharacterData.Special, 1), + // 不允许连续3个相同字符 + new RepeatCharacterRegexRule(3), + // 不允许用户名出现在密码中 + new UsernameRule(), + // 不允许空白字符 + new WhitespaceRule() + )); + RuleResult result = validator.validate(new PasswordData(password)); + return result.isValid(); + } } -- Gitee From 4de54a7a21b34c077657121e725cf8d634a04c14 Mon Sep 17 00:00:00 2001 From: zzg <4066402@qq.com> Date: Fri, 21 Nov 2025 16:42:36 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/modules/system/controller/CommonController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java index a90f8b6a0..8e24cd0ca 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java @@ -87,9 +87,9 @@ public class CommonController { bizPath = ""; } } + SsrfFileTypeFilter.checkUploadFileType(file); if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){ //update-begin-author:liusq date:20221102 for: 过滤上传文件类型 - SsrfFileTypeFilter.checkUploadFileType(file); //update-end-author:liusq date:20221102 for: 过滤上传文件类型 //update-begin-author:lvdandan date:20200928 for:修改JEditor编辑器本地上传 savePath = this.uploadLocal(file,bizPath); -- Gitee From a27b17613173f6f4dbb1603ddf5e616a0aa2f631 Mon Sep 17 00:00:00 2001 From: zzg <4066402@qq.com> Date: Mon, 24 Nov 2025 08:22:23 +0800 Subject: [PATCH 5/6] =?UTF-8?q?swagger=E6=9C=AA=E6=8E=88=E6=9D=83=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/jeecg/config/shiro/ShiroConfig.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 59bef2e15..79b600fac 100644 --- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -130,10 +130,10 @@ public class ShiroConfig { //update-end--Author:scott Date:20221116 for:排除静态资源后缀 filterChainDefinitionMap.put("/druid/**", "anon"); - filterChainDefinitionMap.put("/swagger-ui.html", "anon"); - filterChainDefinitionMap.put("/swagger**/**", "anon"); - filterChainDefinitionMap.put("/webjars/**", "anon"); - filterChainDefinitionMap.put("/v2/**", "anon"); +// filterChainDefinitionMap.put("/swagger-ui.html", "anon"); +// filterChainDefinitionMap.put("/swagger**/**", "anon"); +// filterChainDefinitionMap.put("/webjars/**", "anon"); +// filterChainDefinitionMap.put("/v2/**", "anon"); // update-begin--Author:sunjianlei Date:20210510 for:排除消息通告查看详情页面(用于第三方APP) filterChainDefinitionMap.put("/sys/annountCement/show/**", "anon"); -- Gitee From 4bcdbe7cd5f453a078b440eff20e62979eb897b9 Mon Sep 17 00:00:00 2001 From: zzg <4066402@qq.com> Date: Tue, 25 Nov 2025 10:45:52 +0800 Subject: [PATCH 6/6] =?UTF-8?q?swagger=E6=9C=AA=E6=8E=88=E6=9D=83=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg-server-cloud/jeecg-cloud-nacos/pom.xml | 9 +++++++++ jeecg-boot/pom.xml | 14 +++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos/pom.xml b/jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos/pom.xml index d933c7e2d..3ec8b74d4 100644 --- a/jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos/pom.xml +++ b/jeecg-boot/jeecg-server-cloud/jeecg-cloud-nacos/pom.xml @@ -91,4 +91,13 @@ + + + + zhihe.com.cn-2025-three_river + zhihe.com.cn-2025-three_river + https://maven.cnb.cool/zhihe.com.cn-2025/three_river/-/packages/ + + + diff --git a/jeecg-boot/pom.xml b/jeecg-boot/pom.xml index 8438ddcbe..a4659fff8 100644 --- a/jeecg-boot/pom.xml +++ b/jeecg-boot/pom.xml @@ -466,15 +466,11 @@ - jeecg - jeecg Repository - http://maven.jeecg.com:8090/nexus/content/repositories/jeecg + + zhihe.com.cn-2025-three_river + zhihe.com.cn-2025-three_river + https://maven.cnb.cool/zhihe.com.cn-2025/three_river/-/packages/ - - jeecg-snapshots - jeecg Snapshot Repository - http://maven.jeecg.com:8090/nexus/content/repositories/snapshots/ - @@ -558,4 +554,4 @@ - \ No newline at end of file + -- Gitee