|
|
|
@ -335,4 +335,38 @@ public class SysTenantServiceImpl implements ISysTenantService {
|
|
|
|
|
return TenantConstants.NOT_PASS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 同步租户套餐
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public Boolean syncTenantPackage(String tenantId, String packageId) {
|
|
|
|
|
TenantHelper.enableIgnore();
|
|
|
|
|
SysTenantPackage tenantPackage = sysTenantPackageMapper.selectById(packageId);
|
|
|
|
|
List<SysRole> roles = sysRoleMapper.selectList(
|
|
|
|
|
new LambdaQueryWrapper<SysRole>().eq(SysRole::getTenantId, tenantId));
|
|
|
|
|
List<Long> roleIds = new ArrayList<>(roles.size() - 1);
|
|
|
|
|
List<Long> menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong);
|
|
|
|
|
roles.forEach(item -> {
|
|
|
|
|
if (TenantConstants.TENANT_ADMIN_ROLE_KEY.equals(item.getRoleKey())) {
|
|
|
|
|
List<SysRoleMenu> roleMenus = new ArrayList<>(menuIds.size());
|
|
|
|
|
menuIds.forEach(menuId -> {
|
|
|
|
|
SysRoleMenu roleMenu = new SysRoleMenu();
|
|
|
|
|
roleMenu.setRoleId(item.getRoleId());
|
|
|
|
|
roleMenu.setMenuId(menuId);
|
|
|
|
|
roleMenus.add(roleMenu);
|
|
|
|
|
});
|
|
|
|
|
sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, item.getRoleId()));
|
|
|
|
|
sysRoleMenuMapper.insertBatch(roleMenus);
|
|
|
|
|
} else {
|
|
|
|
|
roleIds.add(item.getRoleId());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (!roleIds.isEmpty()) {
|
|
|
|
|
sysRoleMenuMapper.delete(
|
|
|
|
|
new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, roleIds).notIn(!menuIds.isEmpty(), SysRoleMenu::getMenuId, menuIds));
|
|
|
|
|
}
|
|
|
|
|
TenantHelper.disableIgnore();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|