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-ui/src/views/system/tenant/index.vue                                                           |   23 +++++++++++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysTenantController.java |   19 ++++++++-
 ruoyi-ui/src/api/system/tenant.js                                                                    |   13 ++++++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java     |   34 +++++++++++++++++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java             |    5 ++
 5 files changed, 91 insertions(+), 3 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysTenantController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysTenantController.java
index 5a582ca..2d9d7cd 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysTenantController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysTenantController.java
@@ -122,8 +122,8 @@
      * 鐘舵�佷慨鏀�
      */
     @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
-    @SaCheckPermission("system:tenantPackage:edit")
-    @Log(title = "绉熸埛濂楅", businessType = BusinessType.UPDATE)
+    @SaCheckPermission("system:tenant:edit")
+    @Log(title = "绉熸埛", businessType = BusinessType.UPDATE)
     @PutMapping("/changeStatus")
     public R<Void> changeStatus(@RequestBody SysTenantBo bo) {
         return toAjax(sysTenantService.updateTenantStatus(bo));
@@ -165,4 +165,19 @@
         return R.ok();
     }
 
+
+    /**
+     * 鍚屾绉熸埛濂楅
+     *
+     * @param tenantId  绉熸埛id
+     * @param packageId 濂楅id
+     */
+    @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
+    @SaCheckPermission("system:tenant:edit")
+    @Log(title = "绉熸埛", businessType = BusinessType.UPDATE)
+    @GetMapping("/syncTenantPackage")
+    public R<Void> syncTenantPackage(@NotBlank(message = "绉熸埛ID涓嶈兘涓虹┖") String tenantId, @NotBlank(message = "濂楅ID涓嶈兘涓虹┖") String packageId) {
+        return toAjax(sysTenantService.syncTenantPackage(tenantId, packageId));
+    }
+
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java
index ee70725..1885bc8 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java
@@ -69,4 +69,9 @@
      * 鏍¢獙鏈夋晥鏈�
      */
     String checkExpireTime(String tenantId);
+
+    /**
+     * 鍚屾绉熸埛濂楅
+     */
+    Boolean syncTenantPackage(String tenantId, String packageId);
 }
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;
+    }
 }
diff --git a/ruoyi-ui/src/api/system/tenant.js b/ruoyi-ui/src/api/system/tenant.js
index bb8ebfa..82535af 100644
--- a/ruoyi-ui/src/api/system/tenant.js
+++ b/ruoyi-ui/src/api/system/tenant.js
@@ -73,3 +73,16 @@
   })
 }
 
+// 鍚屾绉熸埛濂楅
+export function syncTenantPackage(tenantId, packageId) {
+  const data = {
+    tenantId,
+    packageId
+  }
+  return request({
+    url: '/system/tenant/syncTenantPackage',
+    method: 'get',
+    params: data
+  })
+}
+
diff --git a/ruoyi-ui/src/views/system/tenant/index.vue b/ruoyi-ui/src/views/system/tenant/index.vue
index 5f137d2..571e33a 100644
--- a/ruoyi-ui/src/views/system/tenant/index.vue
+++ b/ruoyi-ui/src/views/system/tenant/index.vue
@@ -120,6 +120,13 @@
           <el-button
             size="mini"
             type="text"
+            icon="el-icon-edit"
+            @click="handleSyncTenantPackage(scope.row)"
+            v-hasPermi="['system:tenant:edit']"
+          >鍚屾濂楅</el-button>
+          <el-button
+            size="mini"
+            type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:tenant:remove']"
@@ -192,7 +199,7 @@
 </template>
 
 <script>
-import { listTenant, getTenant, delTenant, addTenant, updateTenant, changeTenantStatus } from "@/api/system/tenant";
+import { listTenant, getTenant, delTenant, addTenant, updateTenant, changeTenantStatus, syncTenantPackage} from "@/api/system/tenant";
 import { listTenantPackage } from "@/api/system/tenantPackage";
 
 export default {
@@ -406,6 +413,20 @@
         this.loading = false;
       });
     },
+    /** 鍚屾绉熸埛濂楅鎸夐挳鎿嶄綔 */
+    handleSyncTenantPackage(row) {
+      this.$modal.confirm('鏄惁纭鍚屾绉熸埛濂楅绉熸埛缂栧彿涓�"' + row.tenantId + '"鐨勬暟鎹」锛�').then(() => {
+        this.loading = true;
+        return syncTenantPackage(row.tenantId, row.packageId);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("鍚屾鎴愬姛");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
       this.download('system/tenant/export', {

--
Gitblit v1.9.3