mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-21 10:35:57 +08:00
update 忽略租户在controller层,移除service包含
This commit is contained in:
parent
716d7e7435
commit
9782e8680f
@ -15,7 +15,6 @@ import org.dromara.common.core.utils.StringUtils;
|
|||||||
import org.dromara.common.redis.utils.RedisUtils;
|
import org.dromara.common.redis.utils.RedisUtils;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -57,10 +56,10 @@ public class TenantHelper {
|
|||||||
*
|
*
|
||||||
* @param handle 处理执行方法
|
* @param handle 处理执行方法
|
||||||
*/
|
*/
|
||||||
public static void ignore(Consumer<Void> handle) {
|
public static void ignore(Runnable handle) {
|
||||||
enableIgnore();
|
enableIgnore();
|
||||||
try {
|
try {
|
||||||
handle.accept(null);
|
handle.run();
|
||||||
} finally {
|
} finally {
|
||||||
disableIgnore();
|
disableIgnore();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,11 @@ package org.dromara.system.controller.system;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||||
import com.baomidou.lock.annotation.Lock4j;
|
import com.baomidou.lock.annotation.Lock4j;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.constant.TenantConstants;
|
import org.dromara.common.core.constant.TenantConstants;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
@ -18,13 +23,15 @@ import org.dromara.common.web.core.BaseController;
|
|||||||
import org.dromara.system.domain.bo.SysTenantBo;
|
import org.dromara.system.domain.bo.SysTenantBo;
|
||||||
import org.dromara.system.domain.vo.SysTenantVo;
|
import org.dromara.system.domain.vo.SysTenantVo;
|
||||||
import org.dromara.system.service.ISysTenantService;
|
import org.dromara.system.service.ISysTenantService;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -72,7 +79,7 @@ public class SysTenantController extends BaseController {
|
|||||||
@SaCheckPermission("system:tenant:query")
|
@SaCheckPermission("system:tenant:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<SysTenantVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<SysTenantVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
return R.ok(tenantService.queryById(id));
|
return R.ok(tenantService.queryById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +96,7 @@ public class SysTenantController extends BaseController {
|
|||||||
if (!tenantService.checkCompanyNameUnique(bo)) {
|
if (!tenantService.checkCompanyNameUnique(bo)) {
|
||||||
return R.fail("新增租户'" + bo.getCompanyName() + "'失败,企业名称已存在");
|
return R.fail("新增租户'" + bo.getCompanyName() + "'失败,企业名称已存在");
|
||||||
}
|
}
|
||||||
return toAjax(tenantService.insertByBo(bo));
|
return toAjax(TenantHelper.ignore(() -> tenantService.insertByBo(bo)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,7 +175,7 @@ public class SysTenantController extends BaseController {
|
|||||||
@Log(title = "租户", businessType = BusinessType.UPDATE)
|
@Log(title = "租户", businessType = BusinessType.UPDATE)
|
||||||
@GetMapping("/syncTenantPackage")
|
@GetMapping("/syncTenantPackage")
|
||||||
public R<Void> syncTenantPackage(@NotBlank(message = "租户ID不能为空") String tenantId, @NotBlank(message = "套餐ID不能为空") String packageId) {
|
public R<Void> syncTenantPackage(@NotBlank(message = "租户ID不能为空") String tenantId, @NotBlank(message = "套餐ID不能为空") String packageId) {
|
||||||
return toAjax(tenantService.syncTenantPackage(tenantId, packageId));
|
return toAjax(TenantHelper.ignore(() -> tenantService.syncTenantPackage(tenantId, packageId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,6 @@ import org.dromara.common.core.utils.SpringUtils;
|
|||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
|
||||||
import org.dromara.system.domain.*;
|
import org.dromara.system.domain.*;
|
||||||
import org.dromara.system.domain.bo.SysTenantBo;
|
import org.dromara.system.domain.bo.SysTenantBo;
|
||||||
import org.dromara.system.domain.vo.SysTenantVo;
|
import org.dromara.system.domain.vo.SysTenantVo;
|
||||||
@ -113,79 +112,76 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByBo(SysTenantBo bo) {
|
public Boolean insertByBo(SysTenantBo bo) {
|
||||||
TenantHelper.ignore(unused -> {
|
SysTenant add = MapstructUtils.convert(bo, SysTenant.class);
|
||||||
|
|
||||||
SysTenant add = MapstructUtils.convert(bo, SysTenant.class);
|
// 获取所有租户编号
|
||||||
|
List<String> tenantIds = baseMapper.selectObjs(
|
||||||
|
new LambdaQueryWrapper<SysTenant>().select(SysTenant::getTenantId), Convert::toStr);
|
||||||
|
String tenantId = generateTenantId(tenantIds);
|
||||||
|
add.setTenantId(tenantId);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (!flag) {
|
||||||
|
throw new ServiceException("创建租户失败");
|
||||||
|
}
|
||||||
|
bo.setId(add.getId());
|
||||||
|
|
||||||
// 获取所有租户编号
|
// 根据套餐创建角色
|
||||||
List<String> tenantIds = baseMapper.selectObjs(
|
Long roleId = createTenantRole(tenantId, bo.getPackageId());
|
||||||
new LambdaQueryWrapper<SysTenant>().select(SysTenant::getTenantId), Convert::toStr);
|
|
||||||
String tenantId = generateTenantId(tenantIds);
|
|
||||||
add.setTenantId(tenantId);
|
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
|
||||||
if (!flag) {
|
|
||||||
throw new ServiceException("创建租户失败");
|
|
||||||
}
|
|
||||||
bo.setId(add.getId());
|
|
||||||
|
|
||||||
// 根据套餐创建角色
|
// 创建部门: 公司名是部门名称
|
||||||
Long roleId = createTenantRole(tenantId, bo.getPackageId());
|
SysDept dept = new SysDept();
|
||||||
|
dept.setTenantId(tenantId);
|
||||||
|
dept.setDeptName(bo.getCompanyName());
|
||||||
|
dept.setLeader(bo.getUsername());
|
||||||
|
dept.setParentId(Constants.TOP_PARENT_ID);
|
||||||
|
dept.setAncestors(Constants.TOP_PARENT_ID.toString());
|
||||||
|
deptMapper.insert(dept);
|
||||||
|
Long deptId = dept.getDeptId();
|
||||||
|
|
||||||
// 创建部门: 公司名是部门名称
|
// 角色和部门关联表
|
||||||
SysDept dept = new SysDept();
|
SysRoleDept roleDept = new SysRoleDept();
|
||||||
dept.setTenantId(tenantId);
|
roleDept.setRoleId(roleId);
|
||||||
dept.setDeptName(bo.getCompanyName());
|
roleDept.setDeptId(deptId);
|
||||||
dept.setLeader(bo.getUsername());
|
roleDeptMapper.insert(roleDept);
|
||||||
dept.setParentId(Constants.TOP_PARENT_ID);
|
|
||||||
dept.setAncestors(Constants.TOP_PARENT_ID.toString());
|
|
||||||
deptMapper.insert(dept);
|
|
||||||
Long deptId = dept.getDeptId();
|
|
||||||
|
|
||||||
// 角色和部门关联表
|
// 创建系统用户
|
||||||
SysRoleDept roleDept = new SysRoleDept();
|
SysUser user = new SysUser();
|
||||||
roleDept.setRoleId(roleId);
|
user.setTenantId(tenantId);
|
||||||
roleDept.setDeptId(deptId);
|
user.setUserName(bo.getUsername());
|
||||||
roleDeptMapper.insert(roleDept);
|
user.setNickName(bo.getUsername());
|
||||||
|
user.setPassword(BCrypt.hashpw(bo.getPassword()));
|
||||||
|
user.setDeptId(deptId);
|
||||||
|
userMapper.insert(user);
|
||||||
|
|
||||||
// 创建系统用户
|
// 用户和角色关联表
|
||||||
SysUser user = new SysUser();
|
SysUserRole userRole = new SysUserRole();
|
||||||
user.setTenantId(tenantId);
|
userRole.setUserId(user.getUserId());
|
||||||
user.setUserName(bo.getUsername());
|
userRole.setRoleId(roleId);
|
||||||
user.setNickName(bo.getUsername());
|
userRoleMapper.insert(userRole);
|
||||||
user.setPassword(BCrypt.hashpw(bo.getPassword()));
|
|
||||||
user.setDeptId(deptId);
|
|
||||||
userMapper.insert(user);
|
|
||||||
|
|
||||||
// 用户和角色关联表
|
String defaultTenantId = TenantConstants.DEFAULT_TENANT_ID;
|
||||||
SysUserRole userRole = new SysUserRole();
|
List<SysDictType> dictTypeList = dictTypeMapper.selectList(
|
||||||
userRole.setUserId(user.getUserId());
|
new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getTenantId, defaultTenantId));
|
||||||
userRole.setRoleId(roleId);
|
List<SysDictData> dictDataList = dictDataMapper.selectList(
|
||||||
userRoleMapper.insert(userRole);
|
new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getTenantId, defaultTenantId));
|
||||||
|
for (SysDictType dictType : dictTypeList) {
|
||||||
|
dictType.setDictId(null);
|
||||||
|
dictType.setTenantId(tenantId);
|
||||||
|
}
|
||||||
|
for (SysDictData dictData : dictDataList) {
|
||||||
|
dictData.setDictCode(null);
|
||||||
|
dictData.setTenantId(tenantId);
|
||||||
|
}
|
||||||
|
dictTypeMapper.insertBatch(dictTypeList);
|
||||||
|
dictDataMapper.insertBatch(dictDataList);
|
||||||
|
|
||||||
String defaultTenantId = TenantConstants.DEFAULT_TENANT_ID;
|
List<SysConfig> sysConfigList = configMapper.selectList(
|
||||||
List<SysDictType> dictTypeList = dictTypeMapper.selectList(
|
new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getTenantId, defaultTenantId));
|
||||||
new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getTenantId, defaultTenantId));
|
for (SysConfig config : sysConfigList) {
|
||||||
List<SysDictData> dictDataList = dictDataMapper.selectList(
|
config.setConfigId(null);
|
||||||
new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getTenantId, defaultTenantId));
|
config.setTenantId(tenantId);
|
||||||
for (SysDictType dictType : dictTypeList) {
|
}
|
||||||
dictType.setDictId(null);
|
configMapper.insertBatch(sysConfigList);
|
||||||
dictType.setTenantId(tenantId);
|
|
||||||
}
|
|
||||||
for (SysDictData dictData : dictDataList) {
|
|
||||||
dictData.setDictCode(null);
|
|
||||||
dictData.setTenantId(tenantId);
|
|
||||||
}
|
|
||||||
dictTypeMapper.insertBatch(dictTypeList);
|
|
||||||
dictDataMapper.insertBatch(dictDataList);
|
|
||||||
|
|
||||||
List<SysConfig> sysConfigList = configMapper.selectList(
|
|
||||||
new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getTenantId, defaultTenantId));
|
|
||||||
for (SysConfig config : sysConfigList) {
|
|
||||||
config.setConfigId(null);
|
|
||||||
config.setTenantId(tenantId);
|
|
||||||
}
|
|
||||||
configMapper.insertBatch(sysConfigList);
|
|
||||||
});
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -342,32 +338,30 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean syncTenantPackage(String tenantId, String packageId) {
|
public Boolean syncTenantPackage(String tenantId, String packageId) {
|
||||||
TenantHelper.ignore(unused -> {
|
SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId);
|
||||||
SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId);
|
List<SysRole> roles = roleMapper.selectList(
|
||||||
List<SysRole> roles = roleMapper.selectList(
|
new LambdaQueryWrapper<SysRole>().eq(SysRole::getTenantId, tenantId));
|
||||||
new LambdaQueryWrapper<SysRole>().eq(SysRole::getTenantId, tenantId));
|
List<Long> roleIds = new ArrayList<>(roles.size() - 1);
|
||||||
List<Long> roleIds = new ArrayList<>(roles.size() - 1);
|
List<Long> menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong);
|
||||||
List<Long> menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong);
|
roles.forEach(item -> {
|
||||||
roles.forEach(item -> {
|
if (TenantConstants.TENANT_ADMIN_ROLE_KEY.equals(item.getRoleKey())) {
|
||||||
if (TenantConstants.TENANT_ADMIN_ROLE_KEY.equals(item.getRoleKey())) {
|
List<SysRoleMenu> roleMenus = new ArrayList<>(menuIds.size());
|
||||||
List<SysRoleMenu> roleMenus = new ArrayList<>(menuIds.size());
|
menuIds.forEach(menuId -> {
|
||||||
menuIds.forEach(menuId -> {
|
SysRoleMenu roleMenu = new SysRoleMenu();
|
||||||
SysRoleMenu roleMenu = new SysRoleMenu();
|
roleMenu.setRoleId(item.getRoleId());
|
||||||
roleMenu.setRoleId(item.getRoleId());
|
roleMenu.setMenuId(menuId);
|
||||||
roleMenu.setMenuId(menuId);
|
roleMenus.add(roleMenu);
|
||||||
roleMenus.add(roleMenu);
|
});
|
||||||
});
|
roleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, item.getRoleId()));
|
||||||
roleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, item.getRoleId()));
|
roleMenuMapper.insertBatch(roleMenus);
|
||||||
roleMenuMapper.insertBatch(roleMenus);
|
} else {
|
||||||
} else {
|
roleIds.add(item.getRoleId());
|
||||||
roleIds.add(item.getRoleId());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!roleIds.isEmpty()) {
|
|
||||||
roleMenuMapper.delete(
|
|
||||||
new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, roleIds).notIn(!menuIds.isEmpty(), SysRoleMenu::getMenuId, menuIds));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (!roleIds.isEmpty()) {
|
||||||
|
roleMenuMapper.delete(
|
||||||
|
new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, roleIds).notIn(!menuIds.isEmpty(), SysRoleMenu::getMenuId, menuIds));
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user