From 911867d5a589d010c698261a6b04b0f59cb6150b Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期一, 17 一月 2022 17:09:27 +0800
Subject: [PATCH] update 数据库更改 对接多用户体系

---
 ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java             |    8 ++
 ruoyi-ui/src/views/register.vue                                                 |    4 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java     |    8 ++
 ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java        |   51 ++++++++++------
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                 |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java     |    6 ++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java |   36 +++++++----
 ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java                 |    7 +-
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java    |    6 +
 script/sql/ry_20210908.sql                                                      |    6 +-
 script/sql/test.sql                                                             |    6 +-
 11 files changed, 93 insertions(+), 47 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 09b82e9..bc3170d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -65,6 +65,12 @@
     private String nickName;
 
     /**
+     * 鐢ㄦ埛绫诲瀷锛坰ys_user绯荤粺鐢ㄦ埛锛�
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷")
+    private String userType;
+
+    /**
      * 鐢ㄦ埛閭
      */
     @Sensitive(strategy = SensitiveStrategy.EMAIL)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
index 215eb57..c93bd1c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java
@@ -1,5 +1,6 @@
 package com.ruoyi.common.core.domain.model;
 
+import com.ruoyi.common.helper.LoginHelper;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
@@ -85,8 +86,11 @@
      */
     private String username;
 
+    /**
+     * 鑾峰彇鐧诲綍id
+     */
     public String getLoginId() {
-        return userType + userId;
+        return userType + LoginHelper.JOIN_CODE + userId;
     }
 
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
index ce6c385..b034dc1 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
@@ -1,13 +1,23 @@
-package com.ruoyi.common.core.domain.model;
-
-import io.swagger.annotations.ApiModel;
-
-/**
- * 鐢ㄦ埛娉ㄥ唽瀵硅薄
- *
- * @author Lion Li
- */
-@ApiModel("鐢ㄦ埛娉ㄥ唽瀵硅薄")
-public class RegisterBody extends LoginBody {
-
-}
+package com.ruoyi.common.core.domain.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 鐢ㄦ埛娉ㄥ唽瀵硅薄
+ *
+ * @author Lion Li
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ApiModel("鐢ㄦ埛娉ㄥ唽瀵硅薄")
+public class RegisterBody extends LoginBody {
+
+    @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷")
+    private String userType;
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java
index a5f12f0..ec6510d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/UserType.java
@@ -1,13 +1,12 @@
 package com.ruoyi.common.enums;
 
-import com.ruoyi.common.exception.UtilException;
 import com.ruoyi.common.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
 /**
  * 璁惧绫诲瀷
- * 閽堝涓ゅ 鐢ㄦ埛浣撶郴
+ * 閽堝澶氬 鐢ㄦ埛浣撶郴
  *
  * @author Lion Li
  */
@@ -18,12 +17,12 @@
     /**
      * pc绔�
      */
-    SYS_USER("sys_user:"),
+    SYS_USER("sys_user"),
 
     /**
      * app绔�
      */
-    APP_USER("app_user:");
+    APP_USER("app_user");
 
     private final String userType;
 
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java b/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java
index ddd5018..66b5854 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/helper/LoginHelper.java
@@ -19,7 +19,9 @@
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class LoginHelper {
 
-    private static final String LOGIN_USER_KEY = "loginUser";
+    public static final String JOIN_CODE = ":";
+    public static final String LOGIN_USER_KEY = "loginUser";
+
     private static final ThreadLocal<LoginUser> LOGIN_CACHE = new ThreadLocal<>();
 
     /**
@@ -80,7 +82,9 @@
             String userId = null;
             for (UserType value : UserType.values()) {
                 if (StringUtils.contains(loginId, value.getUserType())) {
-                    userId = StringUtils.replace(loginId, value.getUserType(), StringUtils.EMPTY);
+                    String[] strs = StringUtils.split(loginId, JOIN_CODE);
+                    // 鐢ㄦ埛id鍦ㄦ�绘槸鍦ㄦ渶鍚�
+                    userId = strs[strs.length - 1];
                 }
             }
             if (StringUtils.isBlank(userId)) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
index 1c7babf..cd2b019 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
@@ -8,7 +8,6 @@
 import com.ruoyi.common.core.service.LogininforService;
 import com.ruoyi.common.enums.DeviceType;
 import com.ruoyi.common.enums.UserStatus;
-import com.ruoyi.common.enums.UserType;
 import com.ruoyi.common.exception.user.CaptchaException;
 import com.ruoyi.common.exception.user.CaptchaExpireException;
 import com.ruoyi.common.exception.user.UserException;
@@ -61,17 +60,8 @@
             throw new UserException("user.password.retry.limit.exceed", Constants.LOGIN_ERROR_LIMIT_TIME);
         }
 
-        SysUser user = userService.selectUserByUserName(username);
-        if (StringUtils.isNull(user)) {
-            log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", username);
-            throw new UserException("user.not.exists", username);
-        } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
-            log.info("鐧诲綍鐢ㄦ埛锛歿} 宸茶鍒犻櫎.", username);
-            throw new UserException("user.password.delete", username);
-        } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
-            log.info("鐧诲綍鐢ㄦ埛锛歿} 宸茶鍋滅敤.", username);
-            throw new UserException("user.blocked", username);
-        }
+        SysUser user = loadUserByUsername(username);
+
         if (!SecurityUtils.matchesPassword(password, user.getPassword())) {
             // 鏄惁绗竴娆�
             errorNumber = ObjectUtil.isNull(errorNumber) ? 1 : errorNumber + 1;
@@ -93,13 +83,7 @@
         asyncService.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"), request);
         recordLoginInfo(user.getUserId(), username);
 
-        LoginUser loginUser = new LoginUser();
-        loginUser.setUserId(user.getUserId());
-        loginUser.setDeptId(user.getDeptId());
-        loginUser.setUsername(user.getUserName());
-        loginUser.setUserType(UserType.SYS_USER.getUserType());
-        loginUser.setMenuPermission(permissionService.getMenuPermission(user));
-        loginUser.setRolePermission(permissionService.getRolePermission(user));
+        LoginUser loginUser = buildLoginUser(user);
 
         // 鐢熸垚token
         LoginHelper.loginByDevice(loginUser, DeviceType.PC);
@@ -127,6 +111,35 @@
         }
     }
 
+    private SysUser loadUserByUsername(String username) {
+        SysUser user = userService.selectUserByUserName(username);
+        if (StringUtils.isNull(user)) {
+            log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", username);
+            throw new UserException("user.not.exists", username);
+        } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
+            log.info("鐧诲綍鐢ㄦ埛锛歿} 宸茶鍒犻櫎.", username);
+            throw new UserException("user.password.delete", username);
+        } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
+            log.info("鐧诲綍鐢ㄦ埛锛歿} 宸茶鍋滅敤.", username);
+            throw new UserException("user.blocked", username);
+        }
+        return user;
+    }
+
+    /**
+     * 鏋勫缓鐧诲綍鐢ㄦ埛
+     */
+    private LoginUser buildLoginUser(SysUser user) {
+        LoginUser loginUser = new LoginUser();
+        loginUser.setUserId(user.getUserId());
+        loginUser.setDeptId(user.getDeptId());
+        loginUser.setUsername(user.getUserName());
+        loginUser.setUserType(user.getUserType());
+        loginUser.setMenuPermission(permissionService.getMenuPermission(user));
+        loginUser.setRolePermission(permissionService.getRolePermission(user));
+        return loginUser;
+    }
+
     /**
      * 璁板綍鐧诲綍淇℃伅
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java
index 415a72b..8c5cfff 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysRegisterService.java
@@ -5,6 +5,7 @@
 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.enums.UserType;
 import com.ruoyi.common.exception.user.CaptchaException;
 import com.ruoyi.common.exception.user.CaptchaExpireException;
 import com.ruoyi.common.utils.MessageUtils;
@@ -32,7 +33,11 @@
      * 娉ㄥ唽
      */
     public String register(RegisterBody registerBody) {
-        String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword();
+        String msg = "";
+        String username = registerBody.getUsername();
+        String password = registerBody.getPassword();
+        // 鏍¢獙鐢ㄦ埛绫诲瀷鏄惁瀛樺湪
+        String userType = UserType.getUserType(registerBody.getUserType()).getUserType();
 
         boolean captchaOnOff = configService.selectCaptchaOnOff();
         // 楠岃瘉鐮佸紑鍏�
@@ -57,6 +62,7 @@
             sysUser.setUserName(username);
             sysUser.setNickName(username);
             sysUser.setPassword(SecurityUtils.encryptPassword(registerBody.getPassword()));
+            sysUser.setUserType(userType);
             boolean regFlag = userService.registerUser(sysUser);
             if (!regFlag) {
                 msg = "娉ㄥ唽澶辫触,璇疯仈绯荤郴缁熺鐞嗕汉鍛�";
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 8c2437e..7f12db7 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -9,6 +9,7 @@
         <result property="deptId" column="dept_id"/>
         <result property="userName" column="user_name"/>
         <result property="nickName" column="nick_name"/>
+        <result property="userType" column="user_type"/>
         <result property="email" column="email"/>
         <result property="phonenumber" column="phonenumber"/>
         <result property="sex" column="sex"/>
@@ -50,6 +51,7 @@
                u.dept_id,
                u.user_name,
                u.nick_name,
+               u.user_type,
                u.email,
                u.avatar,
                u.phonenumber,
diff --git a/ruoyi-ui/src/views/register.vue b/ruoyi-ui/src/views/register.vue
index 4fc9b9c..c9f1efb 100644
--- a/ruoyi-ui/src/views/register.vue
+++ b/ruoyi-ui/src/views/register.vue
@@ -124,7 +124,9 @@
       this.$refs.registerForm.validate(valid => {
         if (valid) {
           this.loading = true;
-          register(this.registerForm).then(res => {
+          let registerForm = this.registerForm;
+          registerForm.userType = "sys_user"
+          register(registerForm).then(res => {
             const username = this.registerForm.username;
             this.$alert("<font color='red'>鎭枩浣狅紝鎮ㄧ殑璐﹀彿 " + username + " 娉ㄥ唽鎴愬姛锛�</font>", '绯荤粺鎻愮ず', {
               dangerouslyUseHTMLString: true,
diff --git a/script/sql/ry_20210908.sql b/script/sql/ry_20210908.sql
index e7012e7..fd78de9 100644
--- a/script/sql/ry_20210908.sql
+++ b/script/sql/ry_20210908.sql
@@ -44,7 +44,7 @@
   dept_id           bigint(20)      default null               comment '閮ㄩ棬ID',
   user_name         varchar(30)     not null                   comment '鐢ㄦ埛璐﹀彿',
   nick_name         varchar(30)     not null                   comment '鐢ㄦ埛鏄电О',
-  user_type         varchar(2)      default '00'               comment '鐢ㄦ埛绫诲瀷锛�00绯荤粺鐢ㄦ埛锛�',
+  user_type         varchar(10)     default 'sys_user'         comment '鐢ㄦ埛绫诲瀷锛坰ys_user绯荤粺鐢ㄦ埛锛�',
   email             varchar(50)     default ''                 comment '鐢ㄦ埛閭',
   phonenumber       varchar(11)     default ''                 comment '鎵嬫満鍙风爜',
   sex               char(1)         default '0'                comment '鐢ㄦ埛鎬у埆锛�0鐢� 1濂� 2鏈煡锛�',
@@ -65,8 +65,8 @@
 -- ----------------------------
 -- 鍒濆鍖�-鐢ㄦ埛淇℃伅琛ㄦ暟鎹�
 -- ----------------------------
-insert into sys_user values(1,  103, 'admin', '鑻ヤ緷', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '绠$悊鍛�');
-insert into sys_user values(2,  105, 'ry',    '鑻ヤ緷', '00', 'ry@qq.com',  '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '娴嬭瘯鍛�');
+insert into sys_user values(1,  103, 'admin', '鐤媯鐨勭嫯瀛怢i', 'sys_user', 'crazyLionLi@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '绠$悊鍛�');
+insert into sys_user values(2,  105, 'lionli', '鐤媯鐨勭嫯瀛怢i', 'sys_user', 'crazyLionLi@163.com',  '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '娴嬭瘯鍛�');
 
 
 -- ----------------------------
diff --git a/script/sql/test.sql b/script/sql/test.sql
index 601360a..41ed7ee 100644
--- a/script/sql/test.sql
+++ b/script/sql/test.sql
@@ -33,6 +33,9 @@
     PRIMARY KEY (id) USING BTREE
 ) ENGINE = InnoDB COMMENT = '娴嬭瘯鏍戣〃';
 
+INSERT INTO sys_user(user_id, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) VALUES (3, 108, 'test', '鏈儴闂ㄥ強浠ヤ笅 瀵嗙爜666', 'sys_user', '', '', '0', '', '$2a$10$M6tZRpUZbWKq11O/z6YISePQc./Jhru8E18mmVJTr9aV8whzfjacC', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), 'test', sysdate(), NULL);
+INSERT INTO sys_user(user_id, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) VALUES (4, 102, 'test1', '浠呮湰浜� 瀵嗙爜666', 'sys_user', '', '', '0', '', '$2a$10$yBSXp5Ba1m402cxXTPSy4eXUO8CXCGvXfquNVP/XMWwZ8nf9GaoMy', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), 'test1', sysdate(), NULL);
+
 INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES (5, '娴嬭瘯鑿滃崟', 0, 5, 'demo', NULL, 1, 0, 'M', '0', '0', NULL, 'star', 'admin', '2021-05-30 00:34:26', NULL, NULL, '');
 
 INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES (1500, '娴嬭瘯鍗曡〃', 5, 1, 'demo', 'demo/demo/index', 1, 0, 'C', '0', '0', 'demo:demo:list', '#', 'admin', '2021-05-30 00:39:23', '', NULL, '娴嬭瘯鍗曡〃鑿滃崟');
@@ -135,9 +138,6 @@
 INSERT INTO sys_role_menu(role_id, menu_id) VALUES (4, 1509);
 INSERT INTO sys_role_menu(role_id, menu_id) VALUES (4, 1510);
 INSERT INTO sys_role_menu(role_id, menu_id) VALUES (4, 1511);
-
-INSERT INTO sys_user(user_id, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) VALUES (3, 108, 'test', '鏈儴闂ㄥ強浠ヤ笅 瀵嗙爜666', '00', '', '', '0', '', '$2a$10$M6tZRpUZbWKq11O/z6YISePQc./Jhru8E18mmVJTr9aV8whzfjacC', '0', '0', '127.0.0.1', '2021-05-30 02:00:37', 'admin', '2021-04-22 09:50:41', 'test', '2021-05-30 02:00:37', NULL);
-INSERT INTO sys_user(user_id, dept_id, user_name, nick_name, user_type, email, phonenumber, sex, avatar, password, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) VALUES (4, 102, 'test1', '浠呮湰浜� 瀵嗙爜666', '00', '', '', '0', '', '$2a$10$yBSXp5Ba1m402cxXTPSy4eXUO8CXCGvXfquNVP/XMWwZ8nf9GaoMy', '0', '0', '127.0.0.1', '2021-05-30 01:48:03', 'admin', '2021-05-30 01:16:02', 'test1', '2021-05-30 01:48:03', NULL);
 
 INSERT INTO sys_user_role(user_id, role_id) VALUES (3, 3);
 INSERT INTO sys_user_role(user_id, role_id) VALUES (4, 4);

--
Gitblit v1.9.3