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