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