From 50599487f894ed3bf0297a2906f172e91f3ffba2 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 17 九月 2021 14:48:36 +0800 Subject: [PATCH] update [重大改动] 将 framework 与 system 模块 解耦 --- ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java | 7 ruoyi-framework/pom.xml | 2 ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java | 2 ruoyi-admin/pom.xml | 5 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java | 7 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java | 65 ++++++++ ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java | 107 +++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java | 2 /dev/null | 97 ------------ ruoyi-common/src/main/java/com/ruoyi/common/core/service/OperLogService.java | 9 + ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java | 8 ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java | 11 ruoyi-common/src/main/java/com/ruoyi/common/core/service/TokenService.java | 69 ++++++++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 4 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java | 4 ruoyi-common/src/main/java/com/ruoyi/common/properties/TokenProperties.java | 2 ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java | 6 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java | 23 ++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java | 2 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java | 17 +- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java | 18 +- ruoyi-common/src/main/java/com/ruoyi/common/core/service/LogininforService.java | 9 + 24 files changed, 331 insertions(+), 149 deletions(-) diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index f3d9ca9..37cc33b 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -36,6 +36,11 @@ <artifactId>ruoyi-framework</artifactId> </dependency> + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-system</artifactId> + </dependency> + <!-- 瀹氭椂浠诲姟--> <dependency> <groupId>com.ruoyi</groupId> diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 76141b9..287d4c5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -6,8 +6,8 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.framework.web.service.SysLoginService; -import com.ruoyi.framework.web.service.SysPermissionService; +import com.ruoyi.system.service.SysLoginService; +import com.ruoyi.system.service.SysPermissionService; import com.ruoyi.system.service.ISysMenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java index 422355d..66dfd07 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java @@ -7,9 +7,9 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.service.ISysOssService; import com.ruoyi.system.service.ISysUserService; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java index 4c2cc7c..64904a0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java @@ -4,7 +4,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.RegisterBody; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.framework.web.service.SysRegisterService; +import com.ruoyi.system.service.SysRegisterService; import com.ruoyi.system.service.ISysConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java index b1cd263..e5f4032 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java @@ -9,13 +9,13 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.framework.web.service.SysPermissionService; -import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.SysPermissionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java new file mode 100644 index 0000000..f5132ef --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/dto/OperLogDTO.java @@ -0,0 +1,107 @@ +package com.ruoyi.common.core.domain.dto; + +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 鎿嶄綔鏃ュ織璁板綍琛� oper_log + * + * @author ruoyi + */ + +@Data +@NoArgsConstructor +@Accessors(chain = true) +public class OperLogDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 鏃ュ織涓婚敭 + */ + private Long operId; + + /** + * 鎿嶄綔妯″潡 + */ + private String title; + + /** + * 涓氬姟绫诲瀷锛�0鍏跺畠 1鏂板 2淇敼 3鍒犻櫎锛� + */ + private Integer businessType; + + /** + * 涓氬姟绫诲瀷鏁扮粍 + */ + private Integer[] businessTypes; + + /** + * 璇锋眰鏂规硶 + */ + private String method; + + /** + * 璇锋眰鏂瑰紡 + */ + private String requestMethod; + + /** + * 鎿嶄綔绫诲埆锛�0鍏跺畠 1鍚庡彴鐢ㄦ埛 2鎵嬫満绔敤鎴凤級 + */ + private Integer operatorType; + + /** + * 鎿嶄綔浜哄憳 + */ + private String operName; + + /** + * 閮ㄩ棬鍚嶇О + */ + private String deptName; + + /** + * 璇锋眰url + */ + private String operUrl; + + /** + * 鎿嶄綔鍦板潃 + */ + private String operIp; + + /** + * 鎿嶄綔鍦扮偣 + */ + private String operLocation; + + /** + * 璇锋眰鍙傛暟 + */ + private String operParam; + + /** + * 杩斿洖鍙傛暟 + */ + private String jsonResult; + + /** + * 鎿嶄綔鐘舵�侊紙0姝e父 1寮傚父锛� + */ + private Integer status; + + /** + * 閿欒娑堟伅 + */ + private String errorMsg; + + /** + * 鎿嶄綔鏃堕棿 + */ + private Date operTime; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/LogininforService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/LogininforService.java new file mode 100644 index 0000000..1bf34d5 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/LogininforService.java @@ -0,0 +1,9 @@ +package com.ruoyi.common.core.service; + +import javax.servlet.http.HttpServletRequest; + +public interface LogininforService { + + void recordLogininfor(String username, String status, String message, + HttpServletRequest request, Object... args); +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/OperLogService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/OperLogService.java new file mode 100644 index 0000000..71e5647 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/OperLogService.java @@ -0,0 +1,9 @@ +package com.ruoyi.common.core.service; + +import com.ruoyi.common.core.domain.dto.OperLogDTO; +import org.springframework.scheduling.annotation.Async; + +public interface OperLogService { + @Async + void recordOper(OperLogDTO operLogDTO); +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/TokenService.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/TokenService.java new file mode 100644 index 0000000..d9a9f0a --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/TokenService.java @@ -0,0 +1,69 @@ +package com.ruoyi.common.core.service; + +import com.ruoyi.common.core.domain.model.LoginUser; + +import javax.servlet.http.HttpServletRequest; + +/** + * token楠岃瘉澶勭悊 + * + * @author Lion Li + */ +public interface TokenService { + + /** + * 鑾峰彇鐢ㄦ埛韬唤淇℃伅 + * + * @return 鐢ㄦ埛淇℃伅 + */ + LoginUser getLoginUser(HttpServletRequest request); + + /** + * 璁剧疆鐢ㄦ埛韬唤淇℃伅 + */ + void setLoginUser(LoginUser loginUser); + + /** + * 鍒犻櫎鐢ㄦ埛韬唤淇℃伅 + */ + void delLoginUser(String token); + + /** + * 鍒涘缓浠ょ墝 + * + * @param loginUser 鐢ㄦ埛淇℃伅 + * @return 浠ょ墝 + */ + String createToken(LoginUser loginUser); + + /** + * 楠岃瘉浠ょ墝鏈夋晥鏈燂紝鐩稿樊涓嶈冻20鍒嗛挓锛岃嚜鍔ㄥ埛鏂扮紦瀛� + * + * @param loginUser + * @return 浠ょ墝 + */ + void verifyToken(LoginUser loginUser); + + /** + * 鍒锋柊浠ょ墝鏈夋晥鏈� + * + * @param loginUser 鐧诲綍淇℃伅 + */ + void refreshToken(LoginUser loginUser); + + /** + * 璁剧疆鐢ㄦ埛浠g悊淇℃伅 + * + * @param loginUser 鐧诲綍淇℃伅 + */ + void setUserAgent(LoginUser loginUser); + + /** + * 浠庝护鐗屼腑鑾峰彇鐢ㄦ埛鍚� + * + * @param token 浠ょ墝 + * @return 鐢ㄦ埛鍚� + */ + String getUsernameFromToken(String token); + +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/TokenProperties.java b/ruoyi-common/src/main/java/com/ruoyi/common/properties/TokenProperties.java similarity index 91% rename from ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/TokenProperties.java rename to ruoyi-common/src/main/java/com/ruoyi/common/properties/TokenProperties.java index f695c1c..927a941 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/TokenProperties.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/properties/TokenProperties.java @@ -1,4 +1,4 @@ -package com.ruoyi.framework.config.properties; +package com.ruoyi.common.properties; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml index 680e6ec..0a147a8 100644 --- a/ruoyi-framework/pom.xml +++ b/ruoyi-framework/pom.xml @@ -64,7 +64,7 @@ <!-- 绯荤粺妯″潡--> <dependency> <groupId>com.ruoyi</groupId> - <artifactId>ruoyi-system</artifactId> + <artifactId>ruoyi-common</artifactId> </dependency> </dependencies> diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java index 78a7b3a..246e428 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java @@ -4,13 +4,14 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.BusinessStatus; import com.ruoyi.common.enums.HttpMethod; +import com.ruoyi.common.core.service.OperLogService; +import com.ruoyi.common.core.domain.dto.OperLogDTO; import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; -import com.ruoyi.framework.web.service.AsyncService; -import com.ruoyi.system.domain.SysOperLog; +import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.AfterReturning; @@ -18,8 +19,6 @@ import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.validation.BindingResult; import org.springframework.web.multipart.MultipartFile; @@ -36,11 +35,11 @@ * * @author ruoyi */ +@Slf4j @Aspect @Component public class LogAspect { - private static final Logger log = LoggerFactory.getLogger(LogAspect.class); // 閰嶇疆缁囧叆鐐� @Pointcut("@annotation(com.ruoyi.common.annotation.Log)") @@ -86,7 +85,7 @@ LoginUser loginUser = SecurityUtils.getLoginUser(); // *========鏁版嵁搴撴棩蹇�=========*// - SysOperLog operLog = new SysOperLog(); + OperLogDTO operLog = new OperLogDTO(); operLog.setStatus(BusinessStatus.SUCCESS.ordinal()); // 璇锋眰鐨勫湴鍧� String ip = ServletUtils.getClientIP(); @@ -111,7 +110,7 @@ // 澶勭悊璁剧疆娉ㄨВ涓婄殑鍙傛暟 getControllerMethodDescription(joinPoint, controllerLog, operLog, jsonResult); // 淇濆瓨鏁版嵁搴� - SpringUtils.getBean(AsyncService.class).recordOper(operLog); + SpringUtils.getBean(OperLogService.class).recordOper(operLog); } catch (Exception exp) { @@ -129,7 +128,7 @@ * @param operLog 鎿嶄綔鏃ュ織 * @throws Exception */ - public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog, Object jsonResult) throws Exception + public void getControllerMethodDescription(JoinPoint joinPoint, Log log, OperLogDTO operLog, Object jsonResult) throws Exception { // 璁剧疆action鍔ㄤ綔 operLog.setBusinessType(log.businessType().ordinal()); @@ -156,7 +155,7 @@ * @param operLog 鎿嶄綔鏃ュ織 * @throws Exception 寮傚父 */ - private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog) throws Exception + private void setRequestValue(JoinPoint joinPoint, OperLogDTO operLog) throws Exception { String requestMethod = operLog.getRequestMethod(); if (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod)) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java index b2256c9..47b7fbb 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java @@ -9,7 +9,7 @@ import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.config.properties.RepeatSubmitProperties; -import com.ruoyi.framework.config.properties.TokenProperties; +import com.ruoyi.common.properties.TokenProperties; import com.ruoyi.framework.interceptor.RepeatSubmitInterceptor; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java index 188e24f..5439a97 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java @@ -1,9 +1,9 @@ package com.ruoyi.framework.security.filter; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.framework.web.service.TokenService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java index 371a661..857cbe3 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java @@ -4,11 +4,11 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.core.service.LogininforService; +import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.framework.web.service.AsyncService; -import com.ruoyi.framework.web.service.TokenService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.Authentication; @@ -31,7 +31,7 @@ private TokenService tokenService; @Autowired - private AsyncService asyncService; + private LogininforService asyncService; /** * 閫�鍑哄鐞� diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AsyncService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AsyncService.java deleted file mode 100644 index 3199cdd..0000000 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AsyncService.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.ruoyi.framework.web.service; - -import com.ruoyi.common.utils.StringUtils; -import cn.hutool.http.useragent.UserAgent; -import cn.hutool.http.useragent.UserAgentUtil; -import com.ruoyi.common.constant.Constants; -import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.common.utils.ip.AddressUtils; -import com.ruoyi.system.domain.SysLogininfor; -import com.ruoyi.system.domain.SysOperLog; -import com.ruoyi.system.service.ISysLogininforService; -import com.ruoyi.system.service.ISysOperLogService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; - -/** - * 寮傛宸ュ巶锛堜骇鐢熶换鍔$敤锛� - * - * @author Lion Li - */ -@Slf4j(topic = "sys-user") -@Async -@Component -public class AsyncService { - - @Autowired - private ISysLogininforService iSysLogininforService; - - @Autowired - private ISysOperLogService iSysOperLogService; - - /** - * 璁板綍鐧诲綍淇℃伅 - * - * @param username 鐢ㄦ埛鍚� - * @param status 鐘舵�� - * @param message 娑堟伅 - * @param args 鍒楄〃 - */ - public void recordLogininfor(final String username, final String status, final String message, - HttpServletRequest request, final Object... args) { - final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent")); - final String ip = ServletUtils.getClientIP(request); - - String address = AddressUtils.getRealAddressByIP(ip); - StringBuilder s = new StringBuilder(); - s.append(getBlock(ip)); - s.append(address); - s.append(getBlock(username)); - s.append(getBlock(status)); - s.append(getBlock(message)); - // 鎵撳嵃淇℃伅鍒版棩蹇� - log.info(s.toString(), args); - // 鑾峰彇瀹㈡埛绔搷浣滅郴缁� - String os = userAgent.getOs().getName(); - // 鑾峰彇瀹㈡埛绔祻瑙堝櫒 - String browser = userAgent.getBrowser().getName(); - // 灏佽瀵硅薄 - SysLogininfor logininfor = new SysLogininfor(); - logininfor.setUserName(username); - logininfor.setIpaddr(ip); - logininfor.setLoginLocation(address); - logininfor.setBrowser(browser); - logininfor.setOs(os); - logininfor.setMsg(message); - // 鏃ュ織鐘舵�� - if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) { - logininfor.setStatus(Constants.SUCCESS); - } else if (Constants.LOGIN_FAIL.equals(status)) { - logininfor.setStatus(Constants.FAIL); - } - // 鎻掑叆鏁版嵁 - iSysLogininforService.insertLogininfor(logininfor); - } - - /** - * 鎿嶄綔鏃ュ織璁板綍 - * - * @param operLog 鎿嶄綔鏃ュ織淇℃伅 - */ - public void recordOper(final SysOperLog operLog) { - // 杩滅▼鏌ヨ鎿嶄綔鍦扮偣 - operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp())); - iSysOperLogService.insertOperlog(operLog); - } - - private String getBlock(Object msg) { - if (msg == null) { - msg = ""; - } - return "[" + msg.toString() + "]"; - } -} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java similarity index 98% rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java rename to ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java index 080177f..fe735b0 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/PermissionService.java @@ -1,4 +1,4 @@ -package com.ruoyi.framework.web.service; +package com.ruoyi.system.service; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.model.LoginUser; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java similarity index 95% rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java rename to ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java index 7df8c26..886537f 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java @@ -1,8 +1,10 @@ -package com.ruoyi.framework.web.service; +package com.ruoyi.system.service; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.core.service.LogininforService; +import com.ruoyi.common.core.service.TokenService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaExpireException; @@ -11,8 +13,6 @@ import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.system.service.ISysConfigService; -import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -44,7 +44,7 @@ private ISysConfigService configService; @Autowired - private AsyncService asyncService; + private LogininforService asyncService; /** * 鐧诲綍楠岃瘉 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java similarity index 90% rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java rename to ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java index feb8038..d8c657b 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysPermissionService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysPermissionService.java @@ -1,12 +1,11 @@ -package com.ruoyi.framework.web.service; +package com.ruoyi.system.service; + +import com.ruoyi.common.core.domain.entity.SysUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import java.util.HashSet; import java.util.Set; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import com.ruoyi.common.core.domain.entity.SysUser; -import com.ruoyi.system.service.ISysMenuService; -import com.ruoyi.system.service.ISysRoleService; /** * 鐢ㄦ埛鏉冮檺澶勭悊 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java similarity index 94% rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java rename to ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java index 149392f..8171cb0 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java @@ -1,14 +1,13 @@ -package com.ruoyi.framework.web.service; +package com.ruoyi.system.service; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.RegisterBody; +import com.ruoyi.common.core.service.LogininforService; import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaExpireException; import com.ruoyi.common.utils.*; -import com.ruoyi.system.service.ISysConfigService; -import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -27,7 +26,7 @@ private ISysConfigService configService; @Autowired - private AsyncService asyncService; + private LogininforService asyncService; /** * 娉ㄥ唽 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java index 8b56619..ede2271 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java @@ -1,15 +1,24 @@ package com.ruoyi.system.service.impl; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.service.LogininforService; import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.system.domain.SysLogininfor; import com.ruoyi.system.mapper.SysLogininforMapper; import com.ruoyi.system.service.ISysLogininforService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -20,8 +29,62 @@ * * @author ruoyi */ +@Slf4j @Service -public class SysLogininforServiceImpl extends ServicePlusImpl<SysLogininforMapper, SysLogininfor, SysLogininfor> implements ISysLogininforService { +public class SysLogininforServiceImpl extends ServicePlusImpl<SysLogininforMapper, SysLogininfor, SysLogininfor> implements ISysLogininforService, LogininforService { + + /** + * 璁板綍鐧诲綍淇℃伅 + * + * @param username 鐢ㄦ埛鍚� + * @param status 鐘舵�� + * @param message 娑堟伅 + * @param args 鍒楄〃 + */ + @Async + @Override + public void recordLogininfor(final String username, final String status, final String message, + HttpServletRequest request, final Object... args) { + final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent")); + final String ip = ServletUtils.getClientIP(request); + + String address = AddressUtils.getRealAddressByIP(ip); + StringBuilder s = new StringBuilder(); + s.append(getBlock(ip)); + s.append(address); + s.append(getBlock(username)); + s.append(getBlock(status)); + s.append(getBlock(message)); + // 鎵撳嵃淇℃伅鍒版棩蹇� + log.info(s.toString(), args); + // 鑾峰彇瀹㈡埛绔搷浣滅郴缁� + String os = userAgent.getOs().getName(); + // 鑾峰彇瀹㈡埛绔祻瑙堝櫒 + String browser = userAgent.getBrowser().getName(); + // 灏佽瀵硅薄 + SysLogininfor logininfor = new SysLogininfor(); + logininfor.setUserName(username); + logininfor.setIpaddr(ip); + logininfor.setLoginLocation(address); + logininfor.setBrowser(browser); + logininfor.setOs(os); + logininfor.setMsg(message); + // 鏃ュ織鐘舵�� + if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) { + logininfor.setStatus(Constants.SUCCESS); + } else if (Constants.LOGIN_FAIL.equals(status)) { + logininfor.setStatus(Constants.FAIL); + } + // 鎻掑叆鏁版嵁 + insertLogininfor(logininfor); + } + + private String getBlock(Object msg) { + if (msg == null) { + msg = ""; + } + return "[" + msg.toString() + "]"; + } @Override public TableDataInfo<SysLogininfor> selectPageLogininforList(SysLogininfor logininfor) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java index ff518bd..f4c39f4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java @@ -1,14 +1,19 @@ package com.ruoyi.system.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ArrayUtil; -import com.ruoyi.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.service.OperLogService; +import com.ruoyi.common.core.domain.dto.OperLogDTO; import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.system.domain.SysOperLog; import com.ruoyi.system.mapper.SysOperLogMapper; import com.ruoyi.system.service.ISysOperLogService; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.Arrays; @@ -22,7 +27,21 @@ * @author ruoyi */ @Service -public class SysOperLogServiceImpl extends ServicePlusImpl<SysOperLogMapper, SysOperLog, SysOperLog> implements ISysOperLogService { +public class SysOperLogServiceImpl extends ServicePlusImpl<SysOperLogMapper, SysOperLog, SysOperLog> implements ISysOperLogService, OperLogService { + + /** + * 鎿嶄綔鏃ュ織璁板綍 + * + * @param operLogDTO 鎿嶄綔鏃ュ織淇℃伅 + */ + @Async + @Override + public void recordOper(final OperLogDTO operLogDTO) { + SysOperLog operLog = BeanUtil.toBean(operLogDTO, SysOperLog.class); + // 杩滅▼鏌ヨ鎿嶄綔鍦扮偣 + operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp())); + insertOperlog(operLog); + } @Override public TableDataInfo<SysOperLog> selectPageOperLogList(SysOperLog operLog) { diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java similarity index 95% rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java rename to ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java index cb8878e..ae95660 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TokenServiceImpl.java @@ -1,15 +1,16 @@ -package com.ruoyi.framework.web.service; +package com.ruoyi.system.service.impl; import cn.hutool.core.util.IdUtil; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.core.service.TokenService; +import com.ruoyi.common.properties.TokenProperties; import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.ip.AddressUtils; -import com.ruoyi.framework.config.properties.TokenProperties; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; @@ -27,7 +28,7 @@ * @author Lion Li */ @Component -public class TokenService { +public class TokenServiceImpl implements TokenService { protected static final long MILLIS_SECOND = 1000; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java similarity index 90% rename from ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java rename to ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java index c8b1c7b..5d104f6 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/UserDetailsServiceImpl.java @@ -1,28 +1,28 @@ -package com.ruoyi.framework.web.service; +package com.ruoyi.system.service.impl; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; -import org.springframework.security.core.userdetails.UsernameNotFoundException; -import org.springframework.stereotype.Service; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.UserStatus; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.SysPermissionService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; /** * 鐢ㄦ埛楠岃瘉澶勭悊 * * @author ruoyi */ +@Slf4j @Service public class UserDetailsServiceImpl implements UserDetailsService { - private static final Logger log = LoggerFactory.getLogger(UserDetailsServiceImpl.class); @Autowired private ISysUserService userService; -- Gitblit v1.9.3