From bbfd0d15809276bc16ebcc05a5795c47bc182507 Mon Sep 17 00:00:00 2001 From: zlyx <1242874891@qq.com> Date: Mon, 6 Feb 2023 10:29:05 +0800 Subject: [PATCH] =?UTF-8?q?add=20SysTenantPackage=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=20menuCheckStrictly=20=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=B1=95=E7=A4=BA=20;=20update=20sql=20SysTe?= =?UTF-8?q?nantPackage=20=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5=20menuCheckS?= =?UTF-8?q?trictly=20;=20update=20SysMenuServiceImpl#selectMenuListByTenan?= =?UTF-8?q?tPackageId=20=E6=9B=B4=E6=96=B0=E8=8E=B7=E5=8F=96=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8=20SQL=20=E5=8F=82=E6=95=B0=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E5=88=A4=E6=96=AD=E7=A9=BA=E5=80=BC=E5=88=A4=E6=96=AD?= =?UTF-8?q?=20;=20update=20SysTenantPackageServiceImpl#insertByBo=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3=E8=8F=9C=E5=8D=95id?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BF=9D=E5=AD=98=20;=20update=20SysMenuMapp?= =?UTF-8?q?er#selectMenuListByTenantPackageMenuId=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=80=89=E4=B8=AD=E8=8F=9C=E5=8D=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/system/domain/SysTenantPackage.java | 4 ++++ .../system/domain/bo/SysTenantPackageBo.java | 7 +++++- .../system/domain/vo/SysTenantPackageVo.java | 6 +++++ .../ruoyi/system/mapper/SysMenuMapper.java | 6 ++--- .../system/mapper/SysTenantPackageMapper.java | 9 ++++++++ .../service/impl/SysMenuServiceImpl.java | 6 ++++- .../impl/SysTenantPackageServiceImpl.java | 16 +++++++++++++ .../resources/mapper/system/SysMenuMapper.xml | 6 +++-- .../mapper/system/SysTenantPackageMapper.xml | 6 +++++ .../src/views/system/tenantPackage/index.vue | 7 ++++++ script/sql/oracle/oracle_ry_vue_5.X.sql | 23 ++++++++++--------- script/sql/postgres/postgres_ry_vue_5.X.sql | 23 ++++++++++--------- script/sql/ry_vue_5.X.sql | 23 ++++++++++--------- script/sql/sqlserver/sqlserver_ry_vue_5.X.sql | 1 + 14 files changed, 103 insertions(+), 40 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTenantPackage.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTenantPackage.java index ecbc385ec..c8ceef6a0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTenantPackage.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTenantPackage.java @@ -37,6 +37,10 @@ public class SysTenantPackage extends BaseEntity { * 备注 */ private String remark; + /** + * 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) + */ + private Boolean menuCheckStrictly; /** * 状态(0正常 1停用) */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysTenantPackageBo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysTenantPackageBo.java index 39d3b1f6f..b6a598962 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysTenantPackageBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysTenantPackageBo.java @@ -33,13 +33,18 @@ public class SysTenantPackageBo extends BaseEntity { /** * 关联菜单id */ - private String menuIds; + private Long[] menuIds; /** * 备注 */ private String remark; + /** + * 菜单树选择项是否关联显示 + */ + private Boolean menuCheckStrictly; + /** * 状态(0正常 1停用) */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysTenantPackageVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysTenantPackageVo.java index 3d2ee0f59..d6888ba66 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysTenantPackageVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysTenantPackageVo.java @@ -46,6 +46,12 @@ public class SysTenantPackageVo implements Serializable { @ExcelProperty(value = "备注") private String remark; + /** + * 菜单树选择项是否关联显示 + */ + @ExcelProperty(value = "菜单树选择项是否关联显示") + private Boolean menuCheckStrictly; + /** * 状态(0正常 1停用) */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java index 33f2c52ae..f1a1b57b1 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java @@ -81,11 +81,11 @@ public interface SysMenuMapper extends BaseMapperPlus selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); /** - * 根据租户套餐ID查询菜单树信息 TODO + * 根据租户套餐菜单ID查询菜单树信息 * - * @param packageId 租户套餐ID + * @param menuIds 租户套餐菜单ID * @return 选中菜单列表 */ - List selectMenuListByTenantPackageId(@Param("packageId") Long packageId); + List selectMenuListByTenantPackageMenuId(@Param("menuIds") String menuIds); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTenantPackageMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTenantPackageMapper.java index 6f9415eb8..89229a2df 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTenantPackageMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTenantPackageMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.system.mapper; import com.ruoyi.system.domain.SysTenantPackage; import com.ruoyi.system.domain.vo.SysTenantPackageVo; import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; /** * 租户套餐Mapper接口 @@ -11,4 +12,12 @@ import com.ruoyi.common.mybatis.core.mapper.BaseMapperPlus; */ public interface SysTenantPackageMapper extends BaseMapperPlus { + /** + * 获取租户套餐菜单id + * + * @param packageId 租户套餐id + * @return 菜单id + */ + String selectMenuIds(@Param("packageId") Long packageId); + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java index 4d0a37888..201613f50 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java @@ -23,6 +23,7 @@ import com.ruoyi.system.domain.vo.SysMenuVo; import com.ruoyi.system.mapper.SysMenuMapper; import com.ruoyi.system.mapper.SysRoleMapper; import com.ruoyi.system.mapper.SysRoleMenuMapper; +import com.ruoyi.system.mapper.SysTenantPackageMapper; import com.ruoyi.system.service.ISysMenuService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -41,6 +42,7 @@ public class SysMenuServiceImpl implements ISysMenuService { private final SysMenuMapper baseMapper; private final SysRoleMapper roleMapper; private final SysRoleMenuMapper roleMenuMapper; + private final SysTenantPackageMapper sysTenantPackageMapper; /** * 根据用户查询系统菜单列表 @@ -157,7 +159,9 @@ public class SysMenuServiceImpl implements ISysMenuService { */ @Override public List selectMenuListByTenantPackageId(Long packageId) { - return baseMapper.selectMenuListByTenantPackageId(packageId); + String menuIds = sysTenantPackageMapper.selectMenuIds(packageId); + return StringUtils.isNotBlank(menuIds) + ? baseMapper.selectMenuListByTenantPackageMenuId(menuIds) : new ArrayList<>(); } /** diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java index 5d538a041..931add750 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantPackageServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.common.mybatis.core.page.PageQuery; @@ -16,6 +17,7 @@ import com.ruoyi.system.mapper.SysTenantPackageMapper; import com.ruoyi.system.service.ISysTenantPackageService; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Collection; @@ -74,6 +76,13 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService { public Boolean insertByBo(SysTenantPackageBo bo) { SysTenantPackage add = BeanUtil.toBean(bo, SysTenantPackage.class); validEntityBeforeSave(add); + // 保存菜单id + List menuIds = Arrays.asList(bo.getMenuIds()); + if (CollUtil.isNotEmpty(menuIds)) { + add.setMenuIds(StringUtils.join(menuIds, ", ")); + } else { + add.setMenuIds(""); + } boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setPackageId(add.getPackageId()); @@ -89,6 +98,13 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService { public Boolean updateByBo(SysTenantPackageBo bo) { SysTenantPackage update = BeanUtil.toBean(bo, SysTenantPackage.class); validEntityBeforeSave(update); + // 保存菜单id + List menuIds = Arrays.asList(bo.getMenuIds()); + if (CollUtil.isNotEmpty(menuIds)) { + update.setMenuIds(StringUtils.join(menuIds, ", ")); + } else { + update.setMenuIds(""); + } return baseMapper.updateById(update) > 0; } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml index 61dd52065..8e6511c67 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -82,8 +82,10 @@ where m.status = '0' and rm.role_id = #{roleId} - + select m.menu_id + from sys_menu m + where m.menu_id in (${menuIds}) diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysTenantPackageMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysTenantPackageMapper.xml index 23b46dfcd..3ade9d04c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysTenantPackageMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysTenantPackageMapper.xml @@ -4,4 +4,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + diff --git a/ruoyi-ui/src/views/system/tenantPackage/index.vue b/ruoyi-ui/src/views/system/tenantPackage/index.vue index 502fb8372..758d4eae6 100644 --- a/ruoyi-ui/src/views/system/tenantPackage/index.vue +++ b/ruoyi-ui/src/views/system/tenantPackage/index.vue @@ -247,6 +247,11 @@ export default { }, // 表单重置 reset() { + if (this.$refs.menu != undefined) { + this.$refs.menu.setCheckedKeys([]); + } + this.menuExpand = false; + this.menuNodeAll = false; this.form = { packageId: undefined, packageName: undefined, @@ -335,6 +340,7 @@ export default { if (valid) { this.buttonLoading = true; if (this.form.packageId != null) { + this.form.menuIds = this.getMenuAllCheckedKeys(); updateTenantPackage(this.form).then(response => { this.$modal.msgSuccess("修改成功"); this.open = false; @@ -343,6 +349,7 @@ export default { this.buttonLoading = false; }); } else { + this.form.menuIds = this.getMenuAllCheckedKeys(); addTenantPackage(this.form).then(response => { this.$modal.msgSuccess("新增成功"); this.open = false; diff --git a/script/sql/oracle/oracle_ry_vue_5.X.sql b/script/sql/oracle/oracle_ry_vue_5.X.sql index 055894811..27e3c0a18 100644 --- a/script/sql/oracle/oracle_ry_vue_5.X.sql +++ b/script/sql/oracle/oracle_ry_vue_5.X.sql @@ -56,17 +56,18 @@ insert into sys_tenant values(1, '000000', '管理组', '15888888888', 'XXX有 -- 租户套餐表 -- ---------------------------- create table sys_tenant_package ( - package_id number(20) not null, - package_name varchar2(20) default '', - menu_ids varchar2(3000) default '', - remark varchar2(200) default '', - status char(1) default '0', - del_flag char(1) default '0', - create_dept number(20) default null, - create_by number(20) default null, - create_time date, - update_by number(20) default null, - update_time date + package_id number(20) not null, + package_name varchar2(20) default '', + menu_ids varchar2(3000) default '', + remark varchar2(200) default '', + menu_check_strictly number(1) default 1, + status char(1) default '0', + del_flag char(1) default '0', + create_dept number(20) default null, + create_by number(20) default null, + create_time date, + update_by number(20) default null, + update_time date ); alter table sys_tenant_package add constraint pk_sys_tenant_package primary key (package_id); diff --git a/script/sql/postgres/postgres_ry_vue_5.X.sql b/script/sql/postgres/postgres_ry_vue_5.X.sql index cc622e152..11dced2b1 100644 --- a/script/sql/postgres/postgres_ry_vue_5.X.sql +++ b/script/sql/postgres/postgres_ry_vue_5.X.sql @@ -61,17 +61,18 @@ insert into sys_tenant values(1, '000000', '管理组', '15888888888', 'XXX有 drop table if exists sys_tenant_package; create table if not exists sys_tenant_package ( - package_id int8, - package_name varchar(20) default ''::varchar, - menu_ids varchar(3000) default ''::varchar, - remark varchar(200) default ''::varchar, - status char default '0'::bpchar, - del_flag char default '0'::bpchar, - create_dept int8, - create_by int8, - create_time timestamp, - update_by int8, - update_time timestamp, + package_id int8, + package_name varchar(20) default ''::varchar, + menu_ids varchar(3000) default ''::varchar, + remark varchar(200) default ''::varchar, + menu_check_strictly bool default true, + status char default '0'::bpchar, + del_flag char default '0'::bpchar, + create_dept int8, + create_by int8, + create_time timestamp, + update_by int8, + update_time timestamp, constraint "pk_sys_tenant_package" primary key (package_id) ); diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql index b5528439f..a9e29e68c 100644 --- a/script/sql/ry_vue_5.X.sql +++ b/script/sql/ry_vue_5.X.sql @@ -39,17 +39,18 @@ insert into sys_tenant values(1, '000000', '管理组', '15888888888', 'XXX有 -- ---------------------------- drop table if exists sys_tenant_package; create table sys_tenant_package ( - package_id bigint(20) not null comment '租户套餐id', - package_name varchar(20) comment '套餐名称', - menu_ids varchar(3000) comment '关联菜单id', - remark varchar(200) comment '备注', - status char(1) default '0' comment '状态(0正常 1停用)', - del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', - create_dept bigint(20) comment '创建部门', - create_by bigint(20) comment '创建者', - create_time datetime comment '创建时间', - update_by bigint(20) comment '更新者', - update_time datetime comment '更新时间', + package_id bigint(20) not null comment '租户套餐id', + package_name varchar(20) comment '套餐名称', + menu_ids varchar(3000) comment '关联菜单id', + remark varchar(200) comment '备注', + menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示', + status char(1) default '0' comment '状态(0正常 1停用)', + del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + create_dept bigint(20) comment '创建部门', + create_by bigint(20) comment '创建者', + create_time datetime comment '创建时间', + update_by bigint(20) comment '更新者', + update_time datetime comment '更新时间', primary key (package_id) ) engine=innodb comment = '租户套餐表'; diff --git a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql index fe7474666..714cca7da 100644 --- a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql +++ b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql @@ -156,6 +156,7 @@ CREATE TABLE [sys_tenant_package] [package_name] nvarchar(20) NOT NULL, [menu_ids] nvarchar(20) NULL, [remark] nvarchar(200) NULL, + [menu_check_strictly] tinyint DEFAULT ((1)) NULL, [status] nchar(1) DEFAULT ('0') NULL, [del_flag] nchar(1) DEFAULT ('0') NULL, [create_dept] bigint NULL,