Kaynağa Gözat

调整代码支持同一个业务员在不同租户下被邀请

lipf 4 ay önce
ebeveyn
işleme
52c1e41c78

+ 10 - 9
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -248,22 +248,23 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
             }
 
             if(system.equals(SystemConstants.SYSTEM_JZG_APP.getCode())){
-                SysUserJzgApp jzgUserApp = sysUserJzgAppMapper.selectOne(new LambdaQueryWrapper<SysUserJzgApp>()
+                List<SysUserJzgApp> jzgUserApps = sysUserJzgAppMapper.selectList(new LambdaQueryWrapper<SysUserJzgApp>()
                         .eq(SysUserJzgApp::getUserId, weblogUser.getId())
                         .eq(SysUserJzgApp::getIsDelete,0));
                 // 如果用户存在,app信息为空,则创建app信息
-                if(Objects.isNull(jzgUserApp)){
-                    jzgUserApp = new SysUserJzgApp();
+                if(Objects.isNull(jzgUserApps)){
+                    SysUserJzgApp jzgUserApp = new SysUserJzgApp();
                     jzgUserApp.setUserId(weblogUser.getId());
                     jzgUserApp.setSystemCode("APP");
                     sysUserJzgAppMapper.insert(jzgUserApp);
                 }
-                if(Objects.isNull(jzgUserApp.getLastLoginTime())){
-                    isFirst = true;
-                }
-                //更新用户登录时间
-                jzgUserApp.setLastLoginTime(LocalDateTime.now());
-                sysUserJzgAppMapper.updateById(jzgUserApp);
+                // modify by lipf 2026年6月4日16:01:27 当用户属于多个租户的时候,在app端登录的时候,是不知道是哪个租户登录的。
+//                if(Objects.isNull(jzgUserApp.getLastLoginTime())){
+//                    isFirst = true;
+//                }
+//                //更新用户登录时间
+//                jzgUserApp.setLastLoginTime(LocalDateTime.now());
+//                sysUserJzgAppMapper.updateById(jzgUserApp);
             }else if(!system.equals(SystemConstants.SYSTEM_PLATFORM.getCode())){
                 SysUserJzgVo jzgUserInfo = sysUserService.getJzgUserInfo(weblogUser.getId(),system);
                 log.info("租户[{}]下用户[{}]不存在",system,weblogUser.getId());

+ 4 - 0
commons/src/main/java/com/jzg/commons/exception/SystemException.java

@@ -1,8 +1,12 @@
 package com.jzg.commons.exception;
 
 
+import java.io.Serial;
+
 public class SystemException extends RuntimeException {
 
+    @Serial
+    private static final long serialVersionUID = 2382723461161144457L;
     private final String code;
 
     public SystemException(String message) {

+ 3 - 2
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserJzgAppMapper.java

@@ -22,10 +22,11 @@ public interface SysUserJzgAppMapper extends BaseMapper<SysUserJzgApp> {
 
     /**
      * 个人信息查询
-     * @param userName
+     * @param userName 用户名
+     * @param systemCode 租户代码
      * @return
      */
-    UserInfoVo userInfoGet(@Param("userName") String userName);
+    UserInfoVo userInfoGet(@Param("userName") String userName, @Param("systemCode") String systemCode);
 
     /**
      * 所在企业列表查询

+ 14 - 8
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgAppServiceImpl.java

@@ -93,7 +93,9 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
 
     @Override
     public UserInfoVo userInfoGet(String userName) {
-        UserInfoVo infoVo = sysUserJzgAppMapper.userInfoGet(userName);
+        String systemCode = baseController.getSystemCode();
+        log.info("获取用户信息:systemCode=[{}],userName=[{}]", systemCode, userName);
+        UserInfoVo infoVo = sysUserJzgAppMapper.userInfoGet(userName,systemCode);
         infoVo.setHeadSculpture(MinioUtils.getPresignedObjectUrl("jzg", infoVo.getHeadSculpture()));
         // 获取身份信息
         LambdaQueryWrapper<SysUserJzgInfo> queryWrapper = new LambdaQueryWrapper<>();
@@ -218,7 +220,8 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
     @Override
     @Transactional(rollbackFor = Exception.class)
     public InvitationVo invitationRegister(InvitationAddParam param) {
-        log.info("邀请码注册:param=[{}]", JSONUtil.toJsonStr(param));
+        String systemCode = baseController.getSystemCode();
+        log.info("邀请码注册:systemCode=[{}],param=[{}]", systemCode, JSONUtil.toJsonStr(param));
         try {
             InvitationVo invitationVo = new InvitationVo();
             // 获取邀请人信息
@@ -231,10 +234,10 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
                 throw new SystemException("邀请人数据异常!");
             }
             SysDept dept = sysDeptMapper.selectById(yqirInfo.getDeptId());
-            AssertionUtils.isFail(Objects.isNull(yqrAppUser), "邀请人不存在");
+            AssertionUtils.isFail(Objects.isNull(dept), "邀请人所在部门不存在");
             invitationVo.setDeptName(dept.getName());
             invitationVo.setMobile(param.getMobile());
-            invitationVo.setSystemCode(yqrAppUser.getSystemCode());
+            invitationVo.setSystemCode(systemCode);
             LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(SysUser::getMobile, param.getMobile())
                     .eq(SysUser::getIsDelete, 0);
@@ -251,7 +254,7 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
                 // 创建app用户
                 SysUserJzgApp sysUserJzgApp = new SysUserJzgApp(sysUser);
                 sysUserJzgApp.setDeptId(yqrAppUser.getDeptId());
-                sysUserJzgApp.setSystemCode(yqrAppUser.getSystemCode());
+                sysUserJzgApp.setSystemCode(systemCode);
                 sysUserJzgApp.setReferrerId(yqrAppUser.getId());
                 sysUserJzgAppMapper.insert(sysUserJzgApp);
 
@@ -267,12 +270,12 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
                 wrapper.eq(SysUserJzgApp::getUserId, user.getId())
                         .eq(SysUserJzgApp::getIsDelete, 0)
                         .eq(SysUserJzgApp::getIsEnable, 0)
-                        .eq(SysUserJzgApp::getSystemCode, yqrAppUser.getSystemCode());
+                        .eq(SysUserJzgApp::getSystemCode, systemCode);
                 SysUserJzgApp appUser = sysUserJzgAppMapper.selectOne(wrapper);
                 if (Objects.isNull(appUser)) {
                     SysUserJzgApp sysUserJzgApp = new SysUserJzgApp(user);
                     sysUserJzgApp.setDeptId(yqrAppUser.getDeptId());
-                    sysUserJzgApp.setSystemCode(yqrAppUser.getSystemCode());
+                    sysUserJzgApp.setSystemCode(systemCode);
                     sysUserJzgApp.setReferrerId(yqrAppUser.getId());
                     sysUserJzgAppMapper.insert(sysUserJzgApp);
                     // 增加推荐人关系
@@ -280,8 +283,11 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
                     SysUserJzgInfo userInfo = new SysUserJzgInfo(yqirInfo, user);
                     sysUserJzgInfoService.save(userInfo);
                     userId = userInfo.getId();
+                    log.info("被邀请人在sys_user_jzg_app表中的序号是[{}]",userId);
                 } else {
-                    if (!Objects.equals(appUser.getReferrerId(),yqrAppUser.getId())) {
+                    if (appUser.getReferrerId() !=null && !Objects.equals(appUser.getReferrerId(),yqrAppUser.getId())) {
+                        log.info("用户已被邀请注册.appUser.getReferrerId()=[{}],yqrAppUser.getId()=[{}].appUser=[{}],yqrAppUser=[{}]",
+                                appUser.getReferrerId(), yqrAppUser.getId(),JSONUtil.toJsonStr(appUser), JSONUtil.toJsonStr(yqrAppUser));
                         throw new SystemException("该用户已被邀请注册");
                     }
                     invitationVo.setIsJoined(1);

+ 3 - 0
tenant/organization/src/main/resources/mapper/SysUserJzgAppMapper.xml

@@ -29,6 +29,9 @@
         LEFT JOIN sys_user sur on sur.id = suja.user_id
         <where>
             sujz.is_delete = 0 and sujz.is_enable = 0
+            <if test="systemCode != null and systemCode != ''">
+                and sujz.system_code = #{systemCode}
+            </if>
             <if test="userName != null and userName != ''">
                 and su.mobile = #{userName}
             </if>