diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java index 24d9722e..f7869aca 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java @@ -23,11 +23,7 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.config.mybatis.MybatisPlusSaasConfig; import org.jeecg.modules.base.service.BaseCommonService; import org.jeecg.modules.system.entity.*; -import org.jeecg.modules.system.service.ISysTenantPackService; -import org.jeecg.modules.system.service.ISysTenantService; -import org.jeecg.modules.system.service.ISysUserService; -import org.jeecg.modules.system.service.ISysUserTenantService; -import org.jeecg.modules.system.service.ISysDepartService; +import org.jeecg.modules.system.service.*; import org.jeecg.modules.system.vo.SysUserTenantVo; import org.jeecg.modules.system.vo.tenant.TenantDepartAuthInfo; import org.jeecg.modules.system.vo.tenant.TenantPackModel; @@ -148,6 +144,21 @@ public class SysTenantController { return result; } + /** + * [QQYUN-11032]【jeecg】租户套餐管理增加初始化套餐包按钮 + * @param tenantId + * @return + * @author chenrui + * @date 2025/2/6 18:24 + */ + @RequiresPermissions("system:tenant:syncDefaultPack") + @PostMapping(value = "/syncDefaultPack") + public Result syncDefaultPack(@RequestParam(name="tenantId",required=true) Integer tenantId) { + //同步默认产品包 + sysTenantPackService.syncDefaultPack(tenantId); + return Result.OK("操作成功"); + } + /** * 编辑 * @param diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysTenantPackService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysTenantPackService.java index 057a7293..cea7051f 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysTenantPackService.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysTenantPackService.java @@ -1,7 +1,7 @@ package org.jeecg.modules.system.service; -import org.jeecg.modules.system.entity.SysTenantPack; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.system.entity.SysTenantPack; import org.jeecg.modules.system.entity.SysTenantPackUser; import java.util.List; @@ -78,4 +78,13 @@ public interface ISysTenantPackService extends IService { * @param id */ void addTenantDefaultPack(Integer id); + + /** + * 同步默认的套餐 + * for [QQYUN-11032]【jeecg】租户套餐管理增加初始化套餐包按钮 + * @param tenantId + * @author chenrui + * @date 2025/2/5 19:08 + */ + void syncDefaultPack(Integer tenantId); } diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysTenantPackServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysTenantPackServiceImpl.java index e3123be9..90ca1bf8 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysTenantPackServiceImpl.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysTenantPackServiceImpl.java @@ -1,6 +1,7 @@ package org.jeecg.modules.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.constant.TenantConstant; @@ -9,7 +10,6 @@ import org.jeecg.common.util.SpringContextUtils; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.aop.TenantLog; import org.jeecg.modules.system.entity.SysPackPermission; -import org.jeecg.modules.system.entity.SysTenant; import org.jeecg.modules.system.entity.SysTenantPack; import org.jeecg.modules.system.entity.SysTenantPackUser; import org.jeecg.modules.system.mapper.SysPackPermissionMapper; @@ -20,13 +20,12 @@ import org.jeecg.modules.system.service.ISysTenantPackService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; -import javax.sql.DataSource; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -237,19 +236,54 @@ public class SysTenantPackServiceImpl extends ServiceImpl sysTenantPacks = sysTenantPackMapper.selectList(query); for (SysTenantPack sysTenantPack: sysTenantPacks) { - SysTenantPack pack = new SysTenantPack(); - BeanUtils.copyProperties(sysTenantPack,pack); - pack.setTenantId(tenantId); - pack.setPackType("custom"); - pack.setId(""); - sysTenantPackMapper.insert(pack); - List permissionsByPackId = sysPackPermissionMapper.getPermissionsByPackId(sysTenantPack.getId()); - for (String permission:permissionsByPackId) { - SysPackPermission packPermission = new SysPackPermission(); - packPermission.setPackId(pack.getId()); - packPermission.setPermissionId(permission); - sysPackPermissionMapper.insert(packPermission); - } + syncDefaultPack2CurrentTenant(tenantId, sysTenantPack); + } + } + + @Override + public void syncDefaultPack(Integer tenantId) { + // 查询默认套餐包 + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(SysTenantPack::getPackType,"default"); + List sysDefaultTenantPacks = sysTenantPackMapper.selectList(query); + // 查询当前租户套餐包 + query = new LambdaQueryWrapper<>(); + query.eq(SysTenantPack::getPackType,"custom"); + query.eq(SysTenantPack::getTenantId, tenantId); + List currentTenantPacks = sysTenantPackMapper.selectList(query); + Map currentTenantPackMap = new HashMap(); + if (oConvertUtils.listIsNotEmpty(currentTenantPacks)) { + currentTenantPackMap = currentTenantPacks.stream().collect(Collectors.toMap(SysTenantPack::getPackName, o -> o, (existing, replacement) -> existing)); + } + // 添加不存在的套餐包 + for (SysTenantPack defaultPacks : sysDefaultTenantPacks) { + if(!currentTenantPackMap.containsKey(defaultPacks.getPackName())){ + syncDefaultPack2CurrentTenant(tenantId, defaultPacks); + } + } + } + + /** + * 同步默认套餐包到当前租户 + * for [QQYUN-11032]【jeecg】租户套餐管理增加初始化套餐包按钮 + * @param tenantId 目标租户 + * @param defaultPacks 默认套餐包 + * @author chenrui + * @date 2025/2/5 19:41 + */ + private void syncDefaultPack2CurrentTenant(Integer tenantId, SysTenantPack defaultPacks) { + SysTenantPack pack = new SysTenantPack(); + BeanUtils.copyProperties(defaultPacks,pack); + pack.setTenantId(tenantId); + pack.setPackType("custom"); + pack.setId(""); + sysTenantPackMapper.insert(pack); + List permissionsByPackId = sysPackPermissionMapper.getPermissionsByPackId(defaultPacks.getId()); + for (String permission:permissionsByPackId) { + SysPackPermission packPermission = new SysPackPermission(); + packPermission.setPackId(pack.getId()); + packPermission.setPermissionId(permission); + sysPackPermissionMapper.insert(packPermission); } } diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.7.30__all_upgrade.sql b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.7.30__all_upgrade.sql new file mode 100644 index 00000000..512ab86b --- /dev/null +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.7.30__all_upgrade.sql @@ -0,0 +1,5 @@ +-- -author:chenrui---date:2025/1/16-----for:[QQYUN-10935]【jeecg】租户套餐管理优化--- +UPDATE `sys_permission` SET `parent_id` = 'd7d6e2e4e2934f2c9385a623fd98c6f3', `name` = '租户初始套餐' WHERE `id` = '1668174661456171010'; + +-- -- author:chenrui---date:20250206--for: [QQYUN-11032]【jeecg】租户套餐管理增加初始化套餐包按钮 --- +INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`) VALUES ('1887447660072292354', '1280350452934307841', '初始化套餐包', NULL, NULL, 0, NULL, NULL, 2, 'system:tenant:syncDefaultPack', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2025-02-06 18:26:04', 'jeecg', '2025-02-06 18:26:53', 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/system/tenant/index.vue b/jeecgboot-vue3/src/views/system/tenant/index.vue index a2f019cc..6a150dc4 100644 --- a/jeecgboot-vue3/src/views/system/tenant/index.vue +++ b/jeecgboot-vue3/src/views/system/tenant/index.vue @@ -26,12 +26,12 @@ >邀请用户加入 套餐套餐管理 回收站 diff --git a/jeecgboot-vue3/src/views/system/tenant/pack/TenantDefaultPackList.vue b/jeecgboot-vue3/src/views/system/tenant/pack/TenantDefaultPackList.vue index ca95b0ef..add37181 100644 --- a/jeecgboot-vue3/src/views/system/tenant/pack/TenantDefaultPackList.vue +++ b/jeecgboot-vue3/src/views/system/tenant/pack/TenantDefaultPackList.vue @@ -16,7 +16,7 @@ - + @@ -66,7 +66,7 @@ { label: '删除', popConfirm: { - title: '是否确认删除租户产品包', + title: '是否确认删除租户套餐包', confirm: handleDelete.bind(null, record.id), }, }, @@ -74,7 +74,7 @@ } /** - * 编辑产品包 + * 编辑套餐包 */ function handleAdd() { packModal(true, { @@ -86,7 +86,7 @@ /** - * 删除默认产品包 + * 删除默认套餐包 */ async function handleDelete(id) { await deleteTenantPack({ ids: id }, handleSuccess); @@ -104,7 +104,7 @@ } /** - * 新增产品包 + * 新增套餐包 */ async function handlePack() { if (unref(selectedRowKeys).length > 1) { @@ -124,12 +124,12 @@ } /** - * 批量删除产品包 + * 批量删除套餐包 */ async function handlePackBatch() { Modal.confirm({ - title: '删除租户产品包', - content: '是否删除租户产品包', + title: '删除租户套餐包', + content: '是否删除租户套餐包', okText: '确认', cancelText: '取消', onOk: async () => { diff --git a/jeecgboot-vue3/src/views/system/tenant/pack/TenantPackList.vue b/jeecgboot-vue3/src/views/system/tenant/pack/TenantPackList.vue index 2ce4eee5..e5095b79 100644 --- a/jeecgboot-vue3/src/views/system/tenant/pack/TenantPackList.vue +++ b/jeecgboot-vue3/src/views/system/tenant/pack/TenantPackList.vue @@ -11,6 +11,13 @@ style="margin-right: 5px" >批量删除 + 初始化默认套餐 +