فهرست منبع

fix 后台登录时返回用户的身份信息

liub 3 هفته پیش
والد
کامیت
28a37dfc54

+ 1 - 1
authentication/src/main/java/com/jzg/config/SecurityConfig.java

@@ -76,7 +76,7 @@ public class SecurityConfig {
 
     @Bean
     public JzgAuthenticationSuccessHandler authenticationSuccessHandler() {
-        return new JzgAuthenticationSuccessHandler(tokenService);
+        return new JzgAuthenticationSuccessHandler(tokenService, sysUserJzgInfoMapper);
     }
 
 

+ 1 - 1
authentication/src/main/java/com/jzg/controller/AppAuthController.java

@@ -124,7 +124,7 @@ public class AppAuthController extends BaseController {
         JzgUsernamePasswordAuthenticationToken authentication = new JzgUsernamePasswordAuthenticationToken(loginFormVo);
         Authentication authenticate = authenticationManager.authenticate(authentication);
         SecurityContextHolder.getContext().setAuthentication(authenticate);
-        JzgAuthenticationSuccessHandler successHandler = new JzgAuthenticationSuccessHandler(tokenStore);
+        JzgAuthenticationSuccessHandler successHandler = new JzgAuthenticationSuccessHandler(tokenStore, sysUserJzgInfoMapper);
         successHandler.onAuthenticationSuccess(request, response, authenticate);
     }
 

+ 14 - 8
authentication/src/main/java/com/jzg/controller/AuthController.java

@@ -10,26 +10,27 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.annotation.IgnoreTenant;
 import com.jzg.commons.constants.EncryptionConstants;
+import com.jzg.commons.constants.RedisKeyConstants;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.po.SysUserJzgApp;
+import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.request.RequestSingleParam;
 import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.ImageUtil;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.PasswordUtils;
 import com.jzg.config.JzgTokenService;
 import com.jzg.config.JzgUsernamePasswordAuthenticationToken;
-import com.jzg.commons.constants.RedisKeyConstants;
-import com.jzg.commons.core.base.BaseController;
-import com.jzg.commons.core.page.HttpResult;
 import com.jzg.entity.RedisToken;
 import com.jzg.entity.SysUploadFiles;
 import com.jzg.entity.SysUser;
 import com.jzg.entity.vo.*;
-import com.jzg.commons.exception.SystemException;
 import com.jzg.handler.JzgAuthenticationSuccessHandler;
 import com.jzg.mapper.SysUploadFilesMapper;
 import com.jzg.mapper.SysUserJzgAppMapper;
+import com.jzg.mapper.SysUserJzgInfoMapper;
 import com.jzg.service.SysUserService;
-import com.jzg.commons.util.ImageUtil;
 import com.wf.captcha.SpecCaptcha;
 import com.wf.captcha.base.Captcha;
 import io.swagger.v3.oas.annotations.Operation;
@@ -56,7 +57,9 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 import javax.imageio.ImageIO;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
-import java.security.*;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -102,6 +105,9 @@ public class AuthController extends BaseController {
     @Autowired
     private SysUserJzgAppMapper sysUserJzgAppMapper;
 
+    @Autowired
+    private SysUserJzgInfoMapper sysUserJzgInfoMapper;
+
     /**
      * 登录接口
      *
@@ -132,7 +138,7 @@ public class AuthController extends BaseController {
         JzgUsernamePasswordAuthenticationToken authentication = new JzgUsernamePasswordAuthenticationToken(loginFormVo);
         Authentication authenticate = authenticationManager.authenticate(authentication);
         SecurityContextHolder.getContext().setAuthentication(authenticate);
-        JzgAuthenticationSuccessHandler successHandler = new JzgAuthenticationSuccessHandler(tokenStore);
+        JzgAuthenticationSuccessHandler successHandler = new JzgAuthenticationSuccessHandler(tokenStore, sysUserJzgInfoMapper);
         successHandler.onAuthenticationSuccess(request, response, authenticate);
     }
 
@@ -421,7 +427,7 @@ public class AuthController extends BaseController {
         SM2 sm2 = SmUtil.sm2();
         String sm2PrivateKeyHex = HexUtil.encodeHexStr(BCUtil.encodeECPrivateKey(sm2.getPrivateKey()));
         if (sm2PrivateKeyHex.length() > 64) {
-            sm2PrivateKeyHex = sm2PrivateKeyHex.substring(2, sm2PrivateKeyHex.length());
+            sm2PrivateKeyHex = sm2PrivateKeyHex.substring(2);
         }
         String sm2PublicKeyHex = HexUtil.encodeHexStr(((BCECPublicKey) sm2.getPublicKey()).getQ().getEncoded(false));
         jsonObject.put("javaSm2PrivateKey", sm2PrivateKeyHex);

+ 3 - 0
authentication/src/main/java/com/jzg/entity/RedisToken.java

@@ -42,4 +42,7 @@ public class RedisToken {
 
     @Schema(description = "省份")
     private String province;
+
+    @Schema(description = "用户身份(sys_user_jzg_info_salesman.type_attr)")
+    private String typeAttr;
 }

+ 15 - 2
authentication/src/main/java/com/jzg/handler/JzgAuthenticationSuccessHandler.java

@@ -5,6 +5,7 @@ import com.jzg.commons.entity.vo.SysRoleDataScopeVo;
 import com.jzg.config.JzgGrantedAuthority;
 import com.jzg.config.JzgTokenService;
 import com.jzg.entity.RedisToken;
+import com.jzg.mapper.SysUserJzgInfoMapper;
 import jakarta.servlet.ServletException;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
@@ -23,10 +24,13 @@ public class JzgAuthenticationSuccessHandler implements AuthenticationSuccessHan
 
     Logger logger = Logger.getLogger(JzgAuthenticationSuccessHandler.class.getName());
 
-    private JzgTokenService tokenService;
+    private final JzgTokenService tokenService;
 
-    public JzgAuthenticationSuccessHandler(JzgTokenService tokenService) {
+    private final SysUserJzgInfoMapper sysUserJzgInfoMapper;
+
+    public JzgAuthenticationSuccessHandler(JzgTokenService tokenService, SysUserJzgInfoMapper sysUserJzgInfoMapper) {
         this.tokenService = tokenService;
+        this.sysUserJzgInfoMapper = sysUserJzgInfoMapper;
     }
 
     @Override
@@ -52,6 +56,14 @@ public class JzgAuthenticationSuccessHandler implements AuthenticationSuccessHan
                 .map(authority -> (JzgGrantedAuthority) authority)
                 .collect(Collectors.toList());
 
+        // 根据用户id(sys_user_jzg_info.user_id)联 sys_user_jzg_info_salesman 表查询用户身份
+        String typeAttr = null;
+        try {
+            typeAttr = sysUserJzgInfoMapper.selectTypeAttrByUserId(id);
+        } catch (Exception e) {
+            logger.warning("查询用户身份失败:" + e.getMessage());
+        }
+        redisToken.setTypeAttr(typeAttr);
         redisToken.setUserId(id);
         redisToken.setAuths(jzgGrantedAuthorities);
         redisToken.setUsername(username);
@@ -72,6 +84,7 @@ public class JzgAuthenticationSuccessHandler implements AuthenticationSuccessHan
         JSONObject data = new JSONObject();
         data.put("token",token);
         data.put("isFirst",isFirst);
+        data.put("typeAttr", typeAttr);
         json.put("code",200);
         json.put("msg","login success");
         json.put("data",data);

+ 13 - 0
authentication/src/main/java/com/jzg/mapper/SysUserJzgInfoMapper.java

@@ -14,6 +14,19 @@ public interface SysUserJzgInfoMapper extends BaseMapper<SysUserJzgInfo> {
     @Select("SELECT IF(partner_status = 3, true, false) AS is_partner_status FROM sys_user_jzg_info_salesman WHERE sys_user_jzg_info_id = #{id} AND type_attr = 3")
     boolean selectTypeAttr(String id);
 
+    /**
+     * 根据用户id(sys_user_jzg_info.user_id)联 sys_user_jzg_info_salesman 表查询用户身份(type_attr),
+     * 一个用户可能存在多个身份,用逗号分隔返回
+     *
+     * @param userId sys_user_jzg_info 表中的 userid(即 sys_user.id)
+     * @author lipf
+     * @date 2026/8/29
+     */
+    @Select("SELECT GROUP_CONCAT(DISTINCT s.type_attr SEPARATOR ',') FROM sys_user_jzg_info_salesman s " +
+            "INNER JOIN sys_user_jzg_info i ON i.id = s.sys_user_jzg_info_id " +
+            "WHERE i.user_id = #{userId} AND i.is_delete = 0 AND s.is_delete = 0")
+    String selectTypeAttrByUserId(@Param("userId") String userId);
+
     /**
      * 根据用户序号查询租户下的用户信息
      *