Browse Source

Merge branch 'system-zyj' into system-165

james 2 months ago
parent
commit
65357cfec8

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

@@ -80,24 +80,6 @@ public class SysUserController extends BaseController
     @PostMapping("/platAccountAdd")
     public ApiResult<Void> platAccountAdd(@Validated @RequestBody SysUser user)
     {
-        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName(),0)))
-        {
-            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增用户'" + user.getUserName() + "'失败,登录账号已存在");
-        }
-        if(UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique1(user.getPhonenumber(),0))){
-            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增手机号'" + user.getPhonenumber() + "'失败,手机号已存在");
-        }
-        if(UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique1(user.getEmail(),0))){
-            return ApiResult.error(BusinessErrorCode.BIZ_BUSINESS_ERROR.getCode(), "新增邮箱'" + user.getEmail() + "'失败,邮箱已存在");
-        }
-//        user.setUserType("00");
-//        user.setTenantId(SecurityUtils.getTenantId());
-        if(user.getUserType().equals("00")){
-            user.setDeptId(deptService.deptListByTenant(user.getTenantId()).get(0).getDeptId());
-        }
-
-        user.setCreateBy(SecurityUtils.getUsername());
-        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         int row = userService.insertPlatAccount(user);
         return toAjax(row);
     }

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

@@ -55,6 +55,17 @@ public class TenantConfigController {
         return ApiResult.success();
     }
 
+    /**
+     * 租户管理-租户单位配置-克隆
+     * @param sysTenant
+     * @return
+     */
+    @PostMapping("cloneTenantData")
+    public ApiResult<Void> cloneTenantData(@RequestBody SysTenant sysTenant){
+        sysTenantService.cloneTenantData(sysTenant);
+        return ApiResult.success();
+    }
+
     /**
      * 租户管理-租户单位配置-修改
      *

+ 6 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/domain/SysTenant.java

@@ -1,6 +1,7 @@
 package com.usky.system.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -115,4 +116,9 @@ public class SysTenant implements Serializable {
      */
     private String systemName;
 
+    /**
+     * 原租户Id
+     */
+    @TableField(exist = false)
+    private Integer originalTenantId;
 }

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

@@ -5,6 +5,7 @@ import com.usky.system.domain.SysTenant;
 import com.usky.system.service.vo.SysTenantTwoVo;
 import com.usky.system.service.vo.SysTenantVo;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
@@ -16,6 +17,7 @@ import java.util.List;
  * @author ya
  * @since 2022-05-05
  */
+@Repository
 public interface SysTenantMapper extends CrudMapper<SysTenant> {
 
     List<SysTenantVo> getUserData(@Param("userId") int userId);
@@ -38,4 +40,10 @@ public interface SysTenantMapper extends CrudMapper<SysTenant> {
                                           @Param("current") Integer current,
                                           @Param("size") Integer size);
 
+    void cloneSysTenantConfig(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId,@Param("createBy") String createBy);
+    void cloneSysTenantMenu(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId);
+    void cloneSysMobileTenantConfig(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId,@Param("createBy") String createBy);
+    void cloneSysMobileBanner(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId,@Param("createBy") String createBy);
+    void cloneSysTenantPlatform(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId);
+    void cloneSysMobileTenantMenu(@Param("originalTenantId") Integer originalTenantId,@Param("tenantId") Integer tenantId);
 }

+ 2 - 0
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysTenantService.java

@@ -26,6 +26,8 @@ public interface SysTenantService extends CrudService<SysTenant> {
 
     void addTenantData(SysTenant sysTenant);
 
+    void cloneTenantData(SysTenant sysTenant);
+
     void updateTenantData(SysTenant sysTenant);
 
     CommonPage<SysTenantTwoVo> getTenantDataOne(String tenantName, String tenantManager, Integer page, Integer size);

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

@@ -1,20 +1,29 @@
 package com.usky.system.service.impl;
 
 import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.system.domain.SysDept;
 import com.usky.system.domain.SysTenant;
+import com.usky.system.domain.SysUser;
+import com.usky.system.domain.SysUserTenant;
 import com.usky.system.mapper.SysTenantMapper;
+import com.usky.system.mapper.SysUserTenantMapper;
 import com.usky.system.service.ISysDeptService;
+import com.usky.system.service.SysTenantPlatformService;
 import com.usky.system.service.SysTenantService;
 import com.usky.system.service.vo.SysTenantOneVo;
 import com.usky.system.service.vo.SysTenantTwoVo;
 import com.usky.system.service.vo.SysTenantVo;
+import com.usky.system.service.vo.TenantPlatformVo;
+import io.swagger.models.auth.In;
+import org.apache.ibatis.annotations.Select;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
 
@@ -31,6 +40,12 @@ public class SysTenantServiceImpl extends AbstractCrudService<SysTenantMapper, S
 
     @Autowired
     private ISysDeptService iSysDeptService;
+    @Autowired
+    private SysUserTenantMapper sysUserTenantMapper;
+    @Autowired
+    private SysTenantMapper sysTenantMapper;
+    @Autowired
+    private SysTenantPlatformService sysTenantPlatformService;
 
     @Override
     public List<SysTenantVo> getUserData() {
@@ -110,6 +125,54 @@ public class SysTenantServiceImpl extends AbstractCrudService<SysTenantMapper, S
         iSysDeptService.insertDept(sysDept);
     }
 
+    @Override
+    public void cloneTenantData(SysTenant sysTenant) {
+        Integer originalTenantId = sysTenant.getOriginalTenantId();
+
+        String uuid = UUID.randomUUID().toString();
+        uuid = uuid.replace("-", "");
+        sysTenant.setTenantCode(uuid);
+        sysTenant.setCreateBy(SecurityUtils.getUsername());
+        sysTenant.setCreateTime(LocalDateTime.now());
+        this.save(sysTenant);
+        Integer tenantId = sysTenant.getId();
+
+        SysDept sysDept = new SysDept();
+        sysDept.setTenantId(tenantId);
+        sysDept.setDeptName(sysTenant.getTenantName());
+        sysDept.setOrderNum("0");
+        sysDept.setEmail(sysTenant.getEmail());
+        sysDept.setPhone(sysTenant.getPhoneNumber());
+        sysDept.setCreateBy(SecurityUtils.getUsername());
+        iSysDeptService.insertDept(sysDept);
+
+        //在用户租户表中添加克隆账号id与租户id绑定关系
+        SysUserTenant sysUserTenant = new SysUserTenant();
+        sysUserTenant.setUserId(SecurityUtils.getUserId());
+        sysUserTenant.setTenantId(tenantId);
+        int userCount = sysUserTenantMapper.checkUserIdUnique(sysUserTenant.getTenantId(), sysUserTenant.getUserId());
+        if (userCount > 0){
+            throw new BusinessException("用户已绑定,无法重复绑定!");
+        }else {
+            sysUserTenantMapper.insert(sysUserTenant);
+        }
+
+        //克隆系统配置
+        sysTenantMapper.cloneSysTenantConfig(originalTenantId,tenantId,SecurityUtils.getUsername());
+        sysTenantMapper.cloneSysTenantMenu(originalTenantId,tenantId);
+        sysTenantMapper.cloneSysMobileTenantConfig(originalTenantId,tenantId,SecurityUtils.getUsername());
+        sysTenantMapper.cloneSysMobileBanner(originalTenantId,tenantId,SecurityUtils.getUsername());
+        //克隆应用授权和权限配置
+        sysTenantMapper.cloneSysTenantPlatform(originalTenantId,tenantId);
+        sysTenantMapper.cloneSysMobileTenantMenu(originalTenantId,tenantId);
+
+        //更新默认应用
+        TenantPlatformVo tenantPlatformVo = new TenantPlatformVo();
+        tenantPlatformVo.setPlatformIds(new Integer[]{Integer.parseInt(sysTenant.getSystemName())});
+        tenantPlatformVo.setRequestId(0);
+        tenantPlatformVo.setTenantId(tenantId);
+        sysTenantPlatformService.updateTenantPlatform(tenantPlatformVo);
+    }
 
     @Override
     public void updateTenantData(SysTenant sysTenant) {

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

@@ -3,6 +3,8 @@ package com.usky.system.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.exception.BusinessErrorCode;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
@@ -14,6 +16,7 @@ import com.usky.system.domain.constants.UserConstants;
 import com.usky.system.mapper.*;
 import com.usky.system.model.LoginUser;
 import com.usky.system.service.ISysConfigService;
+import com.usky.system.service.ISysDeptService;
 import com.usky.system.service.ISysUserService;
 import com.usky.system.service.SysUserTenantService;
 import com.usky.system.service.vo.SysUserNewVO;
@@ -63,6 +66,9 @@ public class SysUserServiceImpl extends AbstractCrudService<SysUserMapper, SysUs
     @Autowired
     private SysUserTenantService sysUserTenantService;
 
+    @Autowired
+    private ISysDeptService deptService;
+
 
     /**
      * 根据条件分页查询用户列表
@@ -93,6 +99,26 @@ public class SysUserServiceImpl extends AbstractCrudService<SysUserMapper, SysUs
     @Override
     @Transactional
     public int insertPlatAccount(SysUser user) {
+
+        if (UserConstants.NOT_UNIQUE.equals(this.checkUserNameUnique(user.getUserName(),0)))
+        {
+            throw new BusinessException( "新增用户'" + user.getUserName() + "'失败,登录账号已存在");
+        }
+        if(UserConstants.NOT_UNIQUE.equals(this.checkPhoneUnique1(user.getPhonenumber(),0))){
+            throw new BusinessException("新增手机号'" + user.getPhonenumber() + "'失败,手机号已存在");
+        }
+        if(UserConstants.NOT_UNIQUE.equals(this.checkEmailUnique1(user.getEmail(),0))){
+            throw new BusinessException( "新增邮箱'" + user.getEmail() + "'失败,邮箱已存在");
+        }
+//        user.setUserType("00");
+//        user.setTenantId(SecurityUtils.getTenantId());
+        if(user.getUserType().equals("00")){
+            user.setDeptId(deptService.deptListByTenant(user.getTenantId()).get(0).getDeptId());
+        }
+
+        user.setCreateBy(SecurityUtils.getUsername());
+        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+
         // 新增用户信息
         int rows = userMapper.insertUser(user);
         SysUserTenant sysUserTenant = new SysUserTenant();

+ 50 - 0
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysTenantMapper.xml

@@ -98,5 +98,55 @@
             limit #{current},#{size}
         </if>
     </select>
+    <insert id="cloneSysTenantConfig">
+        insert into sys_tenant_config (tenant_id,login_title,login_logo,login_back_url,login_footer,login_type,middle_logo,middle_back_url,middle_title,middle_footer,home_logo,home_page_url,home_layout,home_style,create_by,create_time,label_icon,middle_status,large_screen_url,cloud_type,cloud_url,message_status,middle_type)
+        select  #{tenantId},login_title,login_logo,login_back_url,login_footer,login_type,middle_logo,middle_back_url,middle_title,middle_footer,home_logo,home_page_url,home_layout,home_style,#{createBy},sysdate(),label_icon,middle_status,large_screen_url,cloud_type,cloud_url,message_status,middle_type
+            from sys_tenant_config
+            <where>
+                tenant_id = #{originalTenantId}
+            </where>
+    </insert>
+    <insert id="cloneSysTenantMenu">
+        insert into sys_tenant_menu (tenant_id,menu_id,menu_alias_name)
+        select  #{tenantId},menu_id,menu_alias_name
+        from sys_tenant_menu
+        <where>
+            tenant_id = #{originalTenantId}
+        </where>
+    </insert>
+    <insert id="cloneSysMobileTenantConfig">
+        insert into sys_mobile_tenant_config (tenant_id,login_domain,login_title,login_logo,login_back_url,login_footer,login_type,middle_url,home_logo,home_layout,home_style,create_by,create_time)
+        select  #{tenantId},login_domain,login_title,login_logo,login_back_url,login_footer,login_type,middle_url,home_logo,home_layout,home_style,#{createBy},sysdate()
+        from sys_mobile_tenant_config
+        <where>
+            tenant_id = #{originalTenantId}
+        </where>
+    </insert>
+    <insert id="cloneSysMobileBanner">
+        INSERT INTO sys_mobile_banner (tenant_id,open_not,carousel_time,banner_path1,banner_path2,banner_path3,banner_path4,banner_path5,link_type1,link_type2,link_type3,link_type4,link_type5,link_url1,link_url2,link_url3,link_url4,link_url5,create_by,create_time)
+        SELECT  #{tenantId},open_not,carousel_time,banner_path1,banner_path2,banner_path3,banner_path4,banner_path5,link_type1,link_type2,link_type3,link_type4,link_type5,link_url1,link_url2,link_url3,link_url4,link_url5,#{createBy},sysdate()
+        FROM sys_mobile_banner
+        <where>
+            tenant_id = #{originalTenantId}
+        </where>
+    </insert>
+
+    <insert id="cloneSysTenantPlatform">
+        INSERT INTO sys_tenant_platform (tenant_id,platform_id,is_default)
+        SELECT  #{tenantId},platform_id,is_default
+        FROM sys_tenant_platform
+        <where>
+            tenant_id = #{originalTenantId}
+        </where>
+    </insert>
+    <insert id="cloneSysMobileTenantMenu">
+        insert into sys_mobile_tenant_menu (tenant_id,menu_id,menu_alias_name)
+        select  #{tenantId},menu_id,menu_alias_name
+        from sys_mobile_tenant_menu
+        <where>
+            tenant_id = #{originalTenantId}
+        </where>
+    </insert>
+
 
 </mapper>