tjf пре 8 месеци
родитељ
комит
db4dc6712b

+ 21 - 2
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java

@@ -33,6 +33,7 @@ import org.dromara.system.domain.school.vo.SysSchoolNameVo;
 import org.dromara.system.domain.vo.SysRoleVo;
 import org.dromara.system.domain.vo.SysTenantVo;
 import org.dromara.system.domain.vo.SysUserVo;
+import org.dromara.system.mapper.SysRoleMapper;
 import org.dromara.system.mapper.SysUserMapper;
 import org.dromara.system.service.*;
 import org.dromara.system.service.school.ISysSchoolNameService;
@@ -73,6 +74,7 @@ public class AuthController {
     private final ISysClientService clientService;
     private final ISysSchoolNameService sysSchoolNameService;
     private final SysUserMapper sysUserMapper;
+    private final SysRoleMapper sysRoleMapper;
 
     /**
      * 登录方法
@@ -94,9 +96,26 @@ public class AuthController {
         //去redis中查询当前账号登录租户id = loginBody.get
         Object tenantId = RedisUtils.getCacheObject(loginBody.getUsername() + ":login");
         if (ObjectUtil.isEmpty(tenantId)) {
+            tenantId = "000000";
             //如果是空,则去查询
-            SysUserVo sysUserVo = sysUserMapper.selectUserByUserName(loginBody.getUsername());
-            tenantId = sysUserVo.getTenantId();
+            List<SysUserVo> sysUserVo = sysUserMapper.selectUserByUserNameList(loginBody.getUsername());
+            if (sysUserVo != null && sysUserVo.size() > 0) {
+                boolean flag = true;
+                for (SysUserVo userVo : sysUserVo) {
+                    if (!"000000".equals(userVo.getTenantId()) && flag){
+                        tenantId = userVo.getTenantId();
+                    }
+                    Long userId = userVo.getUserId();
+                    List<SysRoleVo> sysRoleVo = sysRoleMapper.selectRolePermissionByUserId(userId);
+                    for (SysRoleVo roleVo : sysRoleVo) {
+                        if ("teacher".equals(roleVo.getRoleKey())) {
+                            tenantId = userVo.getTenantId();
+                            flag = false;
+                            break;
+                        }
+                    }
+                }
+            }
         }
         loginBody.setTenantId(tenantId.toString());
         // 校验租户

+ 20 - 0
ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java

@@ -25,6 +25,16 @@ public class SaPermissionImpl implements StpInterface {
         if (userType == UserType.SYS_USER) {
             return new ArrayList<>(loginUser.getMenuPermission());
         } else if (userType == UserType.APP_USER) {
+            return new ArrayList<>(loginUser.getMenuPermission());
+            // 其他端 自行根据业务编写
+        } else if (userType == UserType.REGISTER) {
+            return new ArrayList<>(loginUser.getMenuPermission());
+            // 其他端 自行根据业务编写
+        } else if (userType == UserType.APPLY) {
+            return new ArrayList<>(loginUser.getMenuPermission());
+            // 其他端 自行根据业务编写
+        } else if (userType == UserType.FORMAL) {
+            return new ArrayList<>(loginUser.getMenuPermission());
             // 其他端 自行根据业务编写
         }
         return new ArrayList<>();
@@ -40,6 +50,16 @@ public class SaPermissionImpl implements StpInterface {
         if (userType == UserType.SYS_USER) {
             return new ArrayList<>(loginUser.getRolePermission());
         } else if (userType == UserType.APP_USER) {
+            return new ArrayList<>(loginUser.getMenuPermission());
+            // 其他端 自行根据业务编写
+        } else if (userType == UserType.REGISTER) {
+            return new ArrayList<>(loginUser.getMenuPermission());
+            // 其他端 自行根据业务编写
+        } else if (userType == UserType.APPLY) {
+            return new ArrayList<>(loginUser.getMenuPermission());
+            // 其他端 自行根据业务编写
+        } else if (userType == UserType.FORMAL) {
+            return new ArrayList<>(loginUser.getMenuPermission());
             // 其他端 自行根据业务编写
         }
         return new ArrayList<>();

+ 8 - 9
ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/listener/UserActionListener.java

@@ -5,16 +5,15 @@ import cn.dev33.satoken.listener.SaTokenListener;
 import cn.dev33.satoken.stp.SaLoginModel;
 import cn.hutool.http.useragent.UserAgent;
 import cn.hutool.http.useragent.UserAgentUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.constant.CacheConstants;
 import org.dromara.common.core.domain.dto.UserOnlineDTO;
 import org.dromara.common.core.domain.model.LoginUser;
-import org.dromara.common.core.enums.UserType;
+import org.dromara.common.core.utils.ServletUtils;
+import org.dromara.common.core.utils.ip.AddressUtils;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.common.core.utils.ip.AddressUtils;
-import org.dromara.common.core.utils.ServletUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
 import java.time.Duration;
@@ -36,8 +35,8 @@ public class UserActionListener implements SaTokenListener {
      */
     @Override
     public void doLogin(String loginType, Object loginId, String tokenValue, SaLoginModel loginModel) {
-        UserType userType = UserType.getUserType(loginId.toString());
-        if (userType == UserType.SYS_USER) {
+        /*UserType userType = UserType.getUserType(loginId.toString());
+        if (userType == UserType.SYS_USER) {*/
             UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
             String ip = ServletUtils.getClientIP();
             LoginUser user = LoginHelper.getLoginUser();
@@ -56,9 +55,9 @@ public class UserActionListener implements SaTokenListener {
                 RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto, Duration.ofSeconds(tokenConfig.getTimeout()));
             }
             log.info("user doLogin, userId:{}, token:{}", loginId, tokenValue);
-        } else if (userType == UserType.APP_USER) {
+/*        } else if (userType == UserType.APP_USER) {
             // app端 自行根据业务编写
-        }
+        }*/
     }
 
     /**

+ 3 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/common/RegisterCommonController.java

@@ -26,17 +26,16 @@ import static org.dromara.system.constent.Constants.ONE;
 @RequestMapping("/register")
 public class RegisterCommonController extends BaseController {
     private final ISysUserService userService;
+
     /**
      * 新增用户
      */
     @PostMapping("/common")
     public R<Void> add(@Validated @RequestBody SysUserBo user) {
-        if (!userService.checkUserNameUnique(user)) {
-            return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
-        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
+        if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
             return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
-        else if (ONE.equals(userService.checkStrongPwd(user))) {
+       else if (ONE.equals(userService.checkStrongPwd(user))) {
             return R.fail("密码必须包含数字、大小写字母、特殊符号且大于8位");
         }
         user.setPassword(BCrypt.hashpw(user.getPassword()));

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java

@@ -71,4 +71,5 @@ public interface SysRoleMapper extends BaseMapperPlus<SysRole, SysRoleVo> {
 
     @InterceptorIgnore(tenantLine = "1")
     Long selectRoleIdBytenantId(@Param("tenantId") String tenantId,@Param("roleKey")String roleKey);
+    List<SysRoleVo> selectByTenantId(@Param("tenantId") String tenantId);
 }

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java

@@ -69,6 +69,7 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
      * @return 用户对象信息
      */
     SysUserVo selectUserByUserName(String userName);
+    List<SysUserVo> selectUserByUserNameList(String userName);
 
     /**
      * 通过手机号查询用户

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -248,6 +248,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
     public boolean checkPhoneUnique(SysUserBo user) {
         boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>()
             .eq(SysUser::getPhonenumber, user.getPhonenumber())
+            .eq(SysUser::getTenantId, "000000")
             .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()));
         return !exist;
     }

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/ZhxyShyjServiceImpl.java

@@ -194,6 +194,7 @@ public class ZhxyShyjServiceImpl implements IZhxyShyjService {
                     use.setPhonenumber(registerSchool.getUserPhone());
                     use.setPassword(BCrypt.hashpw("1qaz!QAZ"));
                     use.setCreateTime(DateUtils.getNowDate());
+                    use.setUserType("formal");
                     use.setTenantId(sysTenant.getTenantId());
                     SysUser sysUser = MapstructUtils.convert(use, SysUser.class);
                     userMapper.insert(sysUser);
@@ -260,6 +261,7 @@ public class ZhxyShyjServiceImpl implements IZhxyShyjService {
                     use.setPhonenumber(registerTeacher.getUserPhone());
                     use.setPassword(BCrypt.hashpw("1qaz!QAZ"));
                     use.setCreateTime(DateUtils.getNowDate());
+                    use.setUserType("formal");
                     use.setTenantId(registerTeacher.getTenantId());
                     SysUser sysUser = MapstructUtils.convert(use, SysUser.class);
                     userMapper.insert(sysUser);
@@ -340,6 +342,7 @@ public class ZhxyShyjServiceImpl implements IZhxyShyjService {
                     sysUser.setPhonenumber(registerParents.getUserPhone());
                     sysUser.setPassword(BCrypt.hashpw("1qaz!QAZ"));
                     sysUser.setCreateTime(DateUtils.getNowDate());
+                    sysUser.setUserType("formal");
                     SysUser use = MapstructUtils.convert(sysUser, SysUser.class);
                     userMapper.insert(use);
                     sysUser.setUserId(use.getUserId());

+ 4 - 1
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -66,5 +66,8 @@
     <select id="selectRoleIdBytenantId" resultType="java.lang.Long">
         select role_id from sys_role where tenant_id = #{tenantId} and del_flag = 0 and role_key = #{roleKey}
     </select>
-
+    <select id="selectByTenantId"  resultMap="SysRoleResult">
+        select role_key from sys_role
+        where tenant_id = #{tenantId} and del_flag = 0
+    </select>
 </mapper>

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -152,6 +152,10 @@
         <include refid="selectUserVo"/>
         where u.del_flag = '0' and u.user_name = #{userName}
     </select>
+    <select id="selectUserByUserNameList" parameterType="String" resultMap="SysUserResult">
+        <include refid="selectUserVo"/>
+        where u.del_flag = '0' and u.user_name = #{userName}
+    </select>
 
 
 </mapper>