Browse Source

租户与用户绑定改造

hanzhengyi 6 months ago
parent
commit
3b437d45ca
16 changed files with 267 additions and 104 deletions
  1. 5 5
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/MybatisGeneratorUtils.java
  2. 2 2
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysUserController.java
  3. 61 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysUserTenantController.java
  4. 9 7
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/domain/SysUserTenant.java
  5. 35 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysUserTenantMapper.java
  6. 1 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/ISysUserService.java
  7. 37 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysUserTenantService.java
  8. 7 3
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysUserServiceImpl.java
  9. 86 0
      base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysUserTenantServiceImpl.java
  10. 5 2
      base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserMapper.xml
  11. 19 0
      base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserTenantMapper.xml
  12. 0 21
      service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysTenantPlatformController.java
  13. 0 16
      service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysTenantPlatformMapper.java
  14. 0 16
      service-system/service-system-biz/src/main/java/com/usky/system/service/SysTenantPlatformService.java
  15. 0 20
      service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysTenantPlatformServiceImpl.java
  16. 0 12
      service-system/service-system-biz/src/main/resources/mapper/system/SysTenantPlatformMapper.xml

+ 5 - 5
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/MybatisGeneratorUtils.java

@@ -17,7 +17,7 @@ import java.util.List;
 public class MybatisGeneratorUtils {
     public static void main(String[] args) {
 
-        shell("service-system", "service-system-biz");
+        shell("base-modules/service-system", "service-system-biz");
     }
 
     private static void shell(String parentName, String model) {
@@ -42,10 +42,10 @@ public class MybatisGeneratorUtils {
         //2、数据源配置
         //修改数据源
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://172.16.120.165:3306/usky-cloud?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setUrl("jdbc:mysql://usky-cloud-mysql:3306/usky-cloud?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
-        dsc.setUsername("usky");
-        dsc.setPassword("Yt#75Usky");
+        dsc.setUsername("root");
+        dsc.setPassword("yt123456");
         mpg.setDataSource(dsc);
 
         // 3、包配置
@@ -70,7 +70,7 @@ public class MybatisGeneratorUtils {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude("sys_mobile_banner");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude("sys_user_tenant");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 2 - 2
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysUserController.java

@@ -228,8 +228,8 @@ public class SysUserController extends BaseController
     /**
      * 根据用户编号获取授权角色
      */
-    @GetMapping("/getUserInfo")
-    public ApiResult getUserInfo(@RequestParam(value = "phonenumber", required = false) String phonenumber,
+    @GetMapping("/selectUserOne")
+    public ApiResult selectUserOne(@RequestParam(value = "phonenumber", required = false) String phonenumber,
                                  @RequestParam(value = "userName", required = false) String userName,
                                  @RequestParam(value = "email", required = false) String email)
     {

+ 61 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysUserTenantController.java

@@ -0,0 +1,61 @@
+package com.usky.system.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.log.annotation.Log;
+import com.usky.common.log.enums.BusinessType;
+import com.usky.system.domain.SysTenant;
+import com.usky.system.domain.SysUserTenant;
+import com.usky.system.service.SysUserTenantService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2024-09-11
+ */
+@RestController
+@RequestMapping("/sysUserTenant")
+public class SysUserTenantController extends BaseController {
+
+    @Autowired
+    private SysUserTenantService sysUserTenantService;
+
+    /**
+     * 企业邀请用户
+     */
+    @Log(title = "绑定用户", businessType = BusinessType.INSERT)
+    @PostMapping("/inviteUser")
+    public ApiResult<Void> insertInviteUser(@RequestBody SysUserTenant sysUserTenant)
+    {
+        sysUserTenantService.insertInviteUser(sysUserTenant);
+        return ApiResult.success();
+    }
+
+    /**
+     * 解除用户绑定
+     */
+    @Log(title = "解除用户绑定", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{tenantId}/{userId}")
+    public ApiResult<Void> remove(@PathVariable Integer tenantId,@PathVariable Long userId)
+    {
+        sysUserTenantService.deleteUserTenant(tenantId,userId);
+        return ApiResult.success();
+    }
+
+    /**
+     * 根据用户查询企业下拉框
+     */
+    @GetMapping("/getTenantByUser/{userId}")
+    public ApiResult<List<SysTenant>> getTenantByUser(@PathVariable("userId") Long userId)
+    {
+        return ApiResult.success(sysUserTenantService.getTenantByUser(userId));
+    }
+}
+

+ 9 - 7
service-system/service-system-biz/src/main/java/com/usky/system/domain/SysTenantPlatform.java → base-modules/service-system/service-system-biz/src/main/java/com/usky/system/domain/SysUserTenant.java

@@ -1,32 +1,34 @@
 package com.usky.system.domain;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 /**
  * <p>
- * 租户和应用关联表
+ * 
  * </p>
  *
  * @author han
- * @since 2024-08-14
+ * @since 2024-09-11
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-public class SysTenantPlatform implements Serializable {
+public class SysUserTenant implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
     /**
-     * 户ID
+     * 户ID
      */
-    private Integer tenantId;
+    private Long userId;
 
     /**
-     * 应用ID
+     * 租户ID
      */
-    private Integer platformId;
+    private Integer tenantId;
 
     /**
      * 是否为默认应用(默认0; 0:否,1:是)

+ 35 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysUserTenantMapper.java

@@ -0,0 +1,35 @@
+package com.usky.system.mapper;
+
+import com.usky.system.domain.SysUserTenant;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2024-09-11
+ */
+@Repository
+public interface SysUserTenantMapper extends CrudMapper<SysUserTenant> {
+    /**
+     * 校验用户是否已绑定
+     *
+     * @param userId 用户ID
+     * @param tenantId 租户ID
+     * @return 结果
+     */
+    public int checkUserIdUnique(@Param("tenantId") Integer tenantId, @Param("userId") Long userId);
+
+    /**
+     * 解除用户租户绑定
+     *
+     * @param userId 用户ID
+     * @param tenantId 租户ID
+     * @return 结果
+     */
+    public int deleteUserTenant(@Param("tenantId") Integer tenantId, @Param("userId") Long userId);
+}

+ 1 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/ISysUserService.java

@@ -269,4 +269,5 @@ public interface ISysUserService extends CrudService<SysUser> {
      * @return 用户列表
      */
     List<SysUser> selectUserOne(String phonenumber,String userName,String email);
+
 }

+ 37 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysUserTenantService.java

@@ -0,0 +1,37 @@
+package com.usky.system.service;
+
+import com.usky.system.domain.SysTenant;
+import com.usky.system.domain.SysUserTenant;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author han
+ * @since 2024-09-11
+ */
+public interface SysUserTenantService extends CrudService<SysUserTenant> {
+    /**
+     * 企业邀请用户
+     *
+     * @param sysUserTenant
+     */
+    public void insertInviteUser(SysUserTenant sysUserTenant);
+
+    /**
+     * 企业解绑用户
+     *
+     * @param tenantId 租户ID
+     * @param userId 用户ID
+     */
+    public void deleteUserTenant(Integer tenantId,Long userId);
+
+    /**
+     * 根据用户查询企业下拉框
+     */
+    public List<SysTenant> getTenantByUser(Long userId);
+}

+ 7 - 3
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysUserServiceImpl.java

@@ -3,7 +3,6 @@ package com.usky.system.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ruoyi.common.datascope.annotation.DataScope;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
@@ -69,6 +68,7 @@ public class SysUserServiceImpl extends AbstractCrudService<SysUserMapper, SysUs
      */
     @Override
     public List<SysUser> selectUserList(SysUser user) {
+
         user.setTenantId(SecurityUtils.getTenantId());
         user.setUserType("00");
         return userMapper.selectUserList(user);
@@ -313,6 +313,8 @@ public class SysUserServiceImpl extends AbstractCrudService<SysUserMapper, SysUs
     public int insertUser(SysUser user) {
         // 新增用户信息
         int rows = userMapper.insertUser(user);
+        this.save(user);
+
         // 新增用户岗位关联
         insertUserPost(user);
         // 新增用户与角色管理
@@ -689,9 +691,11 @@ public class SysUserServiceImpl extends AbstractCrudService<SysUserMapper, SysUs
 
     public List<SysUser> selectUserOne(String phonenumber,String userName,String email) {
         LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(StringUtils.isNotBlank(phonenumber),SysUser::getPhonenumber,phonenumber)
+        queryWrapper.select(SysUser::getUserName,SysUser::getUserId,SysUser::getNickName,SysUser::getPhonenumber,SysUser::getEmail)
+                .eq(StringUtils.isNotBlank(phonenumber),SysUser::getPhonenumber,phonenumber)
                 .eq(StringUtils.isNotBlank(userName),SysUser::getUserName,userName)
-                .eq(StringUtils.isNotBlank(email),SysUser::getEmail,email);
+                .eq(StringUtils.isNotBlank(email),SysUser::getEmail,email)
+                .eq(SysUser::getDelFlag,0);
         return this.list(queryWrapper);
     }
 }

+ 86 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysUserTenantServiceImpl.java

@@ -0,0 +1,86 @@
+package com.usky.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.system.RemoteDeptService;
+import com.usky.system.domain.SysTenant;
+import com.usky.system.domain.SysUserTenant;
+import com.usky.system.mapper.SysUserTenantMapper;
+import com.usky.system.service.SysTenantService;
+import com.usky.system.service.SysUserTenantService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2024-09-11
+ */
+@Service
+public class SysUserTenantServiceImpl extends AbstractCrudService<SysUserTenantMapper, SysUserTenant> implements SysUserTenantService {
+
+    @Autowired
+    private SysTenantService sysTenantService;
+
+    /**
+     * 企业邀请用户
+     *
+     * @param sysUserTenant
+     */
+    @Override
+    @Transactional
+    public void insertInviteUser(SysUserTenant sysUserTenant) {
+        int userCount = baseMapper.checkUserIdUnique(sysUserTenant.getTenantId(), sysUserTenant.getUserId());
+        if (userCount > 0){
+            throw new BusinessException("用户已绑定,无法重复绑定!");
+        }else {
+            this.save(sysUserTenant);
+        }
+    }
+
+    /**
+     * 企业解绑用户
+     *
+     * @param tenantId 租户ID
+     * @param userId 用户ID
+     */
+    @Override
+    @Transactional
+    public void deleteUserTenant(Integer tenantId,Long userId) {
+        baseMapper.deleteUserTenant(tenantId, userId);
+    }
+
+    /**
+     * 根据用户查询企业下拉框
+     */
+    @Override
+    @Transactional
+    public List<SysTenant> getTenantByUser(Long userId){
+        LambdaQueryWrapper<SysUserTenant> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(SysUserTenant::getUserId,userId);
+        List<SysUserTenant> userTenants = this.list(queryWrapper);
+        List<Integer> tenantIdList = new ArrayList<>();
+        List<SysTenant> tenantList = new ArrayList<>();
+        LambdaQueryWrapper<SysTenant> queryWrapper1 = Wrappers.lambdaQuery();
+        if (CollectionUtils.isNotEmpty(userTenants)){
+            for (int i = 0; i < userTenants.size(); i++) {
+                tenantIdList.add(userTenants.get(i).getTenantId());
+            }
+            queryWrapper1.in(SysTenant::getId,tenantIdList)
+                    .eq(SysTenant::getStatus,0);
+            tenantList = sysTenantService.list(queryWrapper1);
+        }
+        return tenantList;
+    }
+}

+ 5 - 2
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserMapper.xml

@@ -61,7 +61,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </sql>
     
     <select id="selectUserList" parameterType="com.usky.system.domain.SysUser" resultMap="SysUserResult">
-		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
+		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
+		u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader
+		from sys_user_tenant ut
+		left join sys_user u on ut.user_id = u.user_id
 		left join sys_dept d on u.dept_id = d.dept_id
 		where u.del_flag = '0'
 		<if test="userName != null and userName != ''">
@@ -74,7 +77,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			AND u.status = #{status}
 		</if>
 		<if test="tenantId != null and tenantId != '' and tenantId !=0">
-			AND u.tenant_id = #{tenantId}
+			AND ut.tenant_id = #{tenantId}
 		</if>
 		<if test="userType != null and userType != ''">
 			AND u.user_type = #{userType}

+ 19 - 0
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysUserTenantMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.system.mapper.SysUserTenantMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.system.domain.SysUserTenant">
+        <id column="user_id" property="userId" />
+        <result column="tenant_id" property="tenantId" />
+        <result column="is_default" property="isDefault" />
+    </resultMap>
+
+    <select id="checkUserIdUnique" resultType="int">
+        select count(1) from sys_user_tenant where user_id = #{userId} and tenant_id = #{tenantId} limit 1
+    </select>
+
+    <delete id="deleteUserTenant">
+		delete from sys_user_tenant where user_id = #{userId} and tenant_id = #{tenantId}
+ 	</delete>
+</mapper>

+ 0 - 21
service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysTenantPlatformController.java

@@ -1,21 +0,0 @@
-package com.usky.system.controller.web;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.stereotype.Controller;
-
-/**
- * <p>
- * 租户和应用关联表 前端控制器
- * </p>
- *
- * @author han
- * @since 2024-08-14
- */
-@Controller
-@RequestMapping("/sysTenantPlatform")
-public class SysTenantPlatformController {
-
-}
-

+ 0 - 16
service-system/service-system-biz/src/main/java/com/usky/system/mapper/SysTenantPlatformMapper.java

@@ -1,16 +0,0 @@
-package com.usky.system.mapper;
-
-import com.usky.system.domain.SysTenantPlatform;
-import com.usky.common.mybatis.core.CrudMapper;
-
-/**
- * <p>
- * 租户和应用关联表 Mapper 接口
- * </p>
- *
- * @author han
- * @since 2024-08-14
- */
-public interface SysTenantPlatformMapper extends CrudMapper<SysTenantPlatform> {
-
-}

+ 0 - 16
service-system/service-system-biz/src/main/java/com/usky/system/service/SysTenantPlatformService.java

@@ -1,16 +0,0 @@
-package com.usky.system.service;
-
-import com.usky.system.domain.SysTenantPlatform;
-import com.usky.common.mybatis.core.CrudService;
-
-/**
- * <p>
- * 租户和应用关联表 服务类
- * </p>
- *
- * @author han
- * @since 2024-08-14
- */
-public interface SysTenantPlatformService extends CrudService<SysTenantPlatform> {
-
-}

+ 0 - 20
service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysTenantPlatformServiceImpl.java

@@ -1,20 +0,0 @@
-package com.usky.system.service.impl;
-
-import com.usky.system.domain.SysTenantPlatform;
-import com.usky.system.mapper.SysTenantPlatformMapper;
-import com.usky.system.service.SysTenantPlatformService;
-import com.usky.common.mybatis.core.AbstractCrudService;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 租户和应用关联表 服务实现类
- * </p>
- *
- * @author han
- * @since 2024-08-14
- */
-@Service
-public class SysTenantPlatformServiceImpl extends AbstractCrudService<SysTenantPlatformMapper, SysTenantPlatform> implements SysTenantPlatformService {
-
-}

+ 0 - 12
service-system/service-system-biz/src/main/resources/mapper/system/SysTenantPlatformMapper.xml

@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.usky.system.mapper.SysTenantPlatformMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.usky.system.domain.SysTenantPlatform">
-        <id column="tenant_id" property="tenantId" />
-        <result column="platform_id" property="platformId" />
-        <result column="is_default" property="isDefault" />
-    </resultMap>
-
-</mapper>