浏览代码

!296 add 新增租户套餐同步功能
* update 修改按钮简化为同步套餐
* update 修改同步租户套餐接口message错误描述
* update 修改同步租户套餐权限字符
* update 修改状态修改权限字符
* add 租户管理新增租户套餐同步功能

Yjoioooo 2 年之前
父节点
当前提交
0fdd97203f

+ 17 - 2
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysTenantController.java

@@ -122,8 +122,8 @@ public class SysTenantController extends BaseController {
      * 状态修改
      */
     @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 @@ public class SysTenantController extends BaseController {
         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));
+    }
+
 }

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTenantService.java

@@ -69,4 +69,9 @@ public interface ISysTenantService {
      * 校验有效期
      */
     String checkExpireTime(String tenantId);
+
+    /**
+     * 同步租户套餐
+     */
+    Boolean syncTenantPackage(String tenantId, String packageId);
 }

+ 34 - 0
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java

@@ -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;
+    }
 }

+ 13 - 0
ruoyi-ui/src/api/system/tenant.js

@@ -73,3 +73,16 @@ export function dynamicClear() {
   })
 }
 
+// 同步租户套餐
+export function syncTenantPackage(tenantId, packageId) {
+  const data = {
+    tenantId,
+    packageId
+  }
+  return request({
+    url: '/system/tenant/syncTenantPackage',
+    method: 'get',
+    params: data
+  })
+}
+

+ 22 - 1
ruoyi-ui/src/views/system/tenant/index.vue

@@ -117,6 +117,13 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:tenant:edit']"
           >修改</el-button>
+          <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"
@@ -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 @@ export default {
         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', {