diff --git a/jeecg-boot/jeecg-boot-base-core/pom.xml b/jeecg-boot/jeecg-boot-base-core/pom.xml
index c4cf11c3bbeb98b2a29e61c834a4c79eda0e8d30..32f37eaa20f7b384e4df63d9f5dfd976a99849bc 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-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 0000000000000000000000000000000000000000..97f648462524f0b019f2138cdd52afa0514f4f9a
--- /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 e07c9d45e58f9d57cbfcff835f5518769891bda8..354eca4312a8e93790f10b1f98f40e362f271914 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 ed28ecad616fc1c689ec207a8ced7f7dfa5db41b..5d9129818a3794c9ff266df060e6bff106a1b56f 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-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 59bef2e15a65f33baae1a1f5532f9ea6244f1f8d..79b600facb3c18d6f945a0c24a651483be53832e 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");
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 0000000000000000000000000000000000000000..88a5f57a70a14db36386fecf7803fe9739df4729
--- /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 0000000000000000000000000000000000000000..54559a3fb304aa0399700fd61beac632d9f6b5f1
--- /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 0000000000000000000000000000000000000000..427f30e0b531e547a7c737dfb64217dd5d9f64c2
--- /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 0000000000000000000000000000000000000000..288297f1a0f1ee87033dbf7ccfcf171e497bd3e6
--- /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 33223b43e32c90230acfb81ae93ef0fb597b27c3..8b0d8236d1a52b112d7f328eceeabdb006697c05 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 13c03c67894a78d33b8c9609ebe5bef31ea75595..f81e2adebeeed03213f9c59bfad924741186a73a 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 0000000000000000000000000000000000000000..d074b14ed39273653abb5a87aabd5db068655a05
--- /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/CommonController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java
index a90f8b6a06c2c48a07309999ce9cb2e83be42c3c..8e24cd0cab587c1504a498542e4558f054b017a5 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);
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 8d47b01dd730acba24879acd8afa38a3c066dda5..4ec43527023c77af056364b419021670f049817d 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 219be7feb2307f5be50c3de75328d13635412892..81fd17e8d860195cd5d56e966bada2edd0dc285b 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 24d9722e72bed2a5026fcd1e92cd1101fb164e12..5605d47177146cd872157aa6874c1d4b74ffd3ec 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 228171d31738cc7b01a83f4e7f44bc41ffae48cf..364e30da766a159da264e2ca5c1792da0244c33c 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;
@@ -40,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.*;
@@ -91,7 +90,7 @@ public class SysUserController {
private String upLoadPath;
@Autowired
- private BaseCommonService baseCommonService;
+ private ISysLogService sysLogService;
@Autowired
private ISysUserAgentService sysUserAgentService;
@@ -158,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);
@@ -171,7 +174,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 +189,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 +224,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 +235,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("批量删除用户成功");
}
@@ -341,10 +344,14 @@ 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();
- 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);
}
@@ -615,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) {
@@ -622,7 +633,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 +1154,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 +1304,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");
@@ -1829,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();
+ }
}
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 e6aed753134a509071a072be38345c6fb2a4048a..9183e442c7d78f09aef24f8cab5ab9e8289f4370 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 d4c9143f1e3cf7bd0db7c19fffe3bf1052e17a5c..7064afa7eecbe3c6ed214e3f65fb7e75eb3a9477 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 f84d124bd14ba0bdfd4e2c7515287b8b29066381..15b084e1ed1de9660f6891934165123823b0da92 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