Ver código fonte

區分是前端用戶還是後台用戶

王苗苗 7 meses atrás
pai
commit
cf1cdc26be

+ 1 - 1
slibra-admin/src/main/java/com/slibra/web/controller/system/SysLoginController.java

@@ -46,7 +46,7 @@ public class SysLoginController
         AjaxResult ajax = AjaxResult.success();
         // 生成令牌
         String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
-                loginBody.getUuid());
+                loginBody.getUuid(), loginBody.getType());
         ajax.put(Constants.TOKEN, token);
         return ajax;
     }

+ 5 - 1
slibra-admin/src/main/java/com/slibra/web/controller/system/SysRoleController.java

@@ -31,6 +31,8 @@ import com.slibra.system.service.ISysDeptService;
 import com.slibra.system.service.ISysRoleService;
 import com.slibra.system.service.ISysUserService;
 
+import static com.slibra.common.constant.MyConstants.LOGIN_TYPE_APPEND;
+
 /**
  * 角色信息
  * 
@@ -133,7 +135,9 @@ public class SysRoleController extends BaseController
             if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin())
             {
                 loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
-                loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));
+//                loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));
+                //做了多环境区分 目前只能在sql层处理了
+                loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName() + LOGIN_TYPE_APPEND + loginUser.getUser().getType()));
                 tokenService.setLoginUser(loginUser);
             }
             return success();

+ 2 - 0
slibra-common/src/main/java/com/slibra/common/constant/MyConstants.java

@@ -137,6 +137,8 @@ public class MyConstants {
     public static final String ZAIXIANYIBIAO = "在线仪表";
     public static final String CHUSHUI = "出水";
 
+    public static final String LOGIN_TYPE_APPEND = "-";
+
     //简报的prompt
     public static final String JIAN_BAO_PROMPT = "作为一个工艺分析师,请生成一份#{0}分析报告,根据我提供的详细数据,输出一份详细的分析报告。报告需数据准确、分析深入,建议具体可行,以便为水务管理和决策提供支持。报告分为三部分: 1、水质数据指标超标情况分析,不用列出数值,只写是否有超标情况,并分析 2、对于超标的数据推送解决方案,没有超标情况的话,对比前一日数据,计算数据环比的增减具体比值,并分析每项指标的具体情况 3、提出针对性的改善建议,包括优化处理工艺点,每项调整点不要太概括,一定要给出具体调整数据 4、所有小数均保留两位小数。 以下是需要分析的数据:\n" +
             "#{0}进出水质数据:\n" +

+ 12 - 0
slibra-common/src/main/java/com/slibra/common/core/domain/entity/SysUser.java

@@ -99,6 +99,18 @@ public class SysUser extends BaseEntity
     //微信号
     private String weChat;
 
+    //2024年08月08日18:27:52 新增字段
+    //用户类型【前后台隔离】: 0前端  1后端  2小程序
+    private Integer type = 0;//默认是前台用户
+
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
 
     public String getEmergencyPhone() {
         return emergencyPhone;

+ 12 - 0
slibra-common/src/main/java/com/slibra/common/core/domain/model/LoginBody.java

@@ -33,6 +33,10 @@ public class LoginBody
     //2023年10月30日11:37:50 新增验证码
     private String smsCode;
 
+    //2024年08月08日18:27:52 新增字段
+    //用户类型【前后台隔离】: 0前端  1后端  2小程序
+    private Integer type = 0;//默认是前台用户
+
     public String getUsername()
     {
         return username;
@@ -88,4 +92,12 @@ public class LoginBody
     public void setSmsCode(String smsCode) {
         this.smsCode = smsCode;
     }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
 }

+ 31 - 0
slibra-common/src/main/java/com/slibra/common/enums/BusinessEnum.java

@@ -3,6 +3,37 @@ package com.slibra.common.enums;
 public class BusinessEnum {
 
 
+    /**
+     * 登录的用户类型【前后台隔离】: 0后端  1前端  2小程序
+     */
+    public enum LoginUserTypeEnum
+    {
+        front(0, "前端"),
+        background(1, "后端"),
+        applet(2, "小程序"),
+        ;
+
+        private final int code;
+        private final String msg;
+
+        LoginUserTypeEnum(int code, String msg)
+        {
+            this.code = code;
+            this.msg = msg;
+        }
+
+        public int getCode()
+        {
+            return code;
+        }
+
+        public String getMsg()
+        {
+            return msg;
+        }
+    }
+
+
     /**
      * 告警类型枚举
      */

+ 13 - 3
slibra-framework/src/main/java/com/slibra/framework/web/service/SysLoginService.java

@@ -4,6 +4,7 @@ import javax.annotation.Resource;
 
 import com.slibra.common.config.ApplicationProperties;
 import com.slibra.common.core.domain.model.LoginBody;
+import com.slibra.common.enums.BusinessEnum;
 import com.slibra.common.enums.UserStatus;
 import com.slibra.common.utils.third.AliSMSUtil;
 import com.slibra.common.utils.third.NumUtil;
@@ -42,6 +43,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
+import static com.slibra.common.constant.MyConstants.LOGIN_TYPE_APPEND;
+
 /**
  * 登录校验方法
  * 
@@ -78,13 +81,18 @@ public class SysLoginService
      * @param uuid 唯一标识
      * @return 结果
      */
-    public String login(String username, String password, String code, String uuid)
+    public String login(String username, String password, String code, String uuid, Integer type)
     {
         // 验证码校验
 //        validateCaptcha(username, code, uuid);
+        //做了多环境区分 目前只能在sql层处理了
+        return authUserByNamePwdAndGenToken(username + LOGIN_TYPE_APPEND + type, password);
+    }
+
+    public String authUserByNamePwdAndGenToken(String username, String password) {
         // 登录前置校验
         loginPreCheck(username, password);
-        // 用户验证
+        //
         Authentication authentication = null;
         try
         {
@@ -201,7 +209,9 @@ public class SysLoginService
         // 手机号码
         phoneNumber = phoneNumber.trim();
         // 校验手机号
-        SysUser user = userService.selectUserByPhonenumber(phoneNumber);
+//        SysUser user = userService.selectUserByPhonenumber(phoneNumber);
+        //多环境区分,目前这些只涉及到前端接口,所以目前在此写死
+        SysUser user = userService.selectUserByPhonenumber(phoneNumber  + LOGIN_TYPE_APPEND + BusinessEnum.LoginUserTypeEnum.front.getCode());
         if (StringUtils.isNull(user)) {
             throw new ServiceException("登录用户:" + phoneNumber+ " 不存在");
         }else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {

+ 4 - 2
slibra-framework/src/main/java/com/slibra/framework/web/service/UserDetailsByPhonenumberServiceImpl.java

@@ -14,6 +14,8 @@ import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
 
+import static com.slibra.common.constant.MyConstants.LOGIN_TYPE_APPEND;
+
 /**
  * 用户验证处理
  *
@@ -34,8 +36,8 @@ public class UserDetailsByPhonenumberServiceImpl implements UserDetailsService {
     public UserDetails loadUserByUsername(String phoneNumber) throws UsernameNotFoundException {
         SysUser user = userService.selectUserByPhonenumber(phoneNumber);
         if (StringUtils.isNull(user)) {
-            log.info("登录用户:{} 不存在.", phoneNumber);
-            throw new ServiceException("登录用户:" + phoneNumber+ " 不存在");
+            log.info("登录用户:{} 不存在.", phoneNumber.split(LOGIN_TYPE_APPEND)[0]);
+            throw new ServiceException("登录用户:" + phoneNumber.split(LOGIN_TYPE_APPEND)[0]+ " 不存在");
         } else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
             log.info("登录用户:{} 已被删除.", phoneNumber);
             throw new ServiceException("对不起,您的账号:" + phoneNumber+ " 已被删除");

+ 4 - 2
slibra-framework/src/main/java/com/slibra/framework/web/service/UserDetailsServiceImpl.java

@@ -15,6 +15,8 @@ import com.slibra.common.utils.MessageUtils;
 import com.slibra.common.utils.StringUtils;
 import com.slibra.system.service.ISysUserService;
 
+import static com.slibra.common.constant.MyConstants.LOGIN_TYPE_APPEND;
+
 /**
  * 用户验证处理
  *
@@ -40,8 +42,8 @@ public class UserDetailsServiceImpl implements UserDetailsService
         SysUser user = userService.selectUserByUserName(username);
         if (StringUtils.isNull(user))
         {
-            log.info("登录用户:{} 不存在.", username);
-            throw new ServiceException(MessageUtils.message("user.not.exists"));
+            log.info("登录用户:{} 不存在.", username.split(LOGIN_TYPE_APPEND)[0]);
+            throw new ServiceException("登录用户:" + username.split(LOGIN_TYPE_APPEND)[0]+ " 不存在");
         }
         else if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
         {

+ 4 - 1
slibra-system/src/main/java/com/slibra/system/service/impl/SysUserServiceImpl.java

@@ -30,6 +30,8 @@ import com.slibra.system.mapper.SysUserRoleMapper;
 import com.slibra.system.service.ISysConfigService;
 import com.slibra.system.service.ISysUserService;
 
+import static com.slibra.common.constant.MyConstants.LOGIN_TYPE_APPEND;
+
 /**
  * 用户 业务层处理
  * 
@@ -495,7 +497,8 @@ public class SysUserServiceImpl implements ISysUserService
             try
             {
                 // 验证是否存在这个用户
-                SysUser u = userMapper.selectUserByUserName(user.getUserName());
+                //做了多环境区分 目前只能在sql层处理了
+                SysUser u = userMapper.selectUserByUserName(user.getUserName() + LOGIN_TYPE_APPEND + user.getType());
                 if (StringUtils.isNull(u))
                 {
                     BeanValidators.validateWithException(validator, user);

+ 4 - 2
slibra-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -125,12 +125,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	
 	<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
 	    <include refid="selectUserVo"/>
-		where u.user_name = #{userName} and u.del_flag = '0'
+		/*where u.user_name = #{userName} and u.del_flag = '0'*/
+		where (concat(u.user_name, '-', u.type) = #{userName}  and u.del_flag = '0'
 	</select>
 
 	<select id="selectUserByPhonenumber" parameterType="String" resultMap="SysUserResult">
 		<include refid="selectUserVo"/>
-		where u.phonenumber = #{phoneNumber} and u.del_flag = '0'
+		/*where u.phonenumber = #{phoneNumber} and u.del_flag = '0'*/
+		where concat(u.phonenumber, '-', u.type) = #{phoneNumber} and u.del_flag = '0'
 	</select>
 	
 	<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">