From 0fdd97203f1f8a7f3e4df221e8d79a4f387d14d6 Mon Sep 17 00:00:00 2001
From: Yjoioooo <5403234+zj_Gitttttttte@user.noreply.gitee.com>
Date: 星期一, 06 三月 2023 19:07:00 +0800
Subject: [PATCH] !296 add 新增租户套餐同步功能 * update 修改按钮简化为同步套餐 * update 修改同步租户套餐接口message错误描述 * update 修改同步租户套餐权限字符 * update 修改状态修改权限字符 * add 租户管理新增租户套餐同步功能

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java
index ea2bc54..02665ad 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java
@@ -335,4 +335,38 @@
         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;
+    }
 }

--
Gitblit v1.9.3