From b2dc6af80f74e0a5939bc34a172763639087cc4f Mon Sep 17 00:00:00 2001 From: chenchuchuan <13554600537@163.com> Date: Mon, 27 Jul 2026 11:29:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor(tenant):=20=E9=87=8D=E6=9E=84=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E8=A1=A8=E5=8D=95=E6=8C=89=E9=92=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 IRoleFormButtonService 接口返回类型为 Map> --- .../controller/RoleFormButtonController.java | 10 ++-- .../tenant/service/IRoleFormButtonService.java | 3 +- .../service/impl/RoleFormButtonServiceImpl.java | 61 +++++++--------------- 3 files changed, 25 insertions(+), 49 deletions(-) diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/controller/RoleFormButtonController.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/controller/RoleFormButtonController.java index 620ee75..496a17f 100644 --- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/controller/RoleFormButtonController.java +++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/controller/RoleFormButtonController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; +import java.util.Set; /** * 角色-表单按钮权限控制器。 @@ -38,13 +39,8 @@ public class RoleFormButtonController { * @return 包含 formId, buttonList[{name, checked}]。 */ @GetMapping("/getButtonConfig") - public ResponseResult> getButtonConfig( - @RequestParam Long formId) { - if (MyCommonUtil.existBlankArgument(formId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - Map result = service.getButtonConfigVo(formId); - return ResponseResult.success(result); + public ResponseResult>> getButtonConfig(@RequestParam(required = false) Long formId) { + return ResponseResult.success(service.getButtonConfigVo(formId)); } /** diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/service/IRoleFormButtonService.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/service/IRoleFormButtonService.java index 89735f6..147dd7a 100644 --- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/service/IRoleFormButtonService.java +++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/service/IRoleFormButtonService.java @@ -10,6 +10,7 @@ import apelet.tenantadmin.tenant.model.RoleFormButton; import java.util.List; import java.util.Map; +import java.util.Set; /** * 角色-表单按钮权限配置服务接口。 @@ -33,7 +34,7 @@ public interface IRoleFormButtonService * @param formId 在线表单ID。 * @return 包含 formId, buttonList(含name+checked的列表)。 */ - Map getButtonConfigVo(Long formId); + Map> getButtonConfigVo(Long formId); /** * 批量保存按钮权限配置(同一事务内全部成功或全部回滚)。 diff --git a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/service/impl/RoleFormButtonServiceImpl.java b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/service/impl/RoleFormButtonServiceImpl.java index 5a892a4..a38f6f3 100644 --- a/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/service/impl/RoleFormButtonServiceImpl.java +++ b/application-tenant/tenant-admin/src/main/java/apelet/tenantadmin/tenant/service/impl/RoleFormButtonServiceImpl.java @@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.Page; import com.github.pagehelper.page.PageMethod; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -64,50 +65,28 @@ public class RoleFormButtonServiceImpl extends BaseService // ========== 核心:查询按钮配置VO(合并当前用户所有角色) ========== @Override - public Map getButtonConfigVo(Long formId) { - Map result = new HashMap<>(); - result.put("formId", formId); - - // 1. 获取 widgetJson,提取所有开启的按钮 - OnlineForm onlineForm = onlineFormService.getById(formId); - if (onlineForm == null) { - result.put("buttonList", Collections.emptyList()); - return result; - } - List enabledButtons = WidgetJsonButtonParser.extractEnabledButtons(onlineForm.getWidgetJson()); - - // 2. 获取当前登录用户的所有角色 + public Map> getButtonConfigVo(Long formId) { + // 1. 获取当前登录用户的所有角色 Set roleIds = getCurrentUserRoleIds(); - - // 3. 遍历所有角色,合并各角色在该表单的勾选按钮(取并集) - Set checkedNames = new HashSet<>(); - if (CollectionUtil.isNotEmpty(roleIds)) { - for (Long roleId : roleIds) { - RoleFormButton config = getByRoleIdAndFormId(roleId, formId); - if (config != null && config.getButtonConfig() != null) { - List savedButtons = - JSON.parseArray(config.getButtonConfig(), - WidgetJsonButtonParser.ButtonInfo.class); - for (WidgetJsonButtonParser.ButtonInfo btn : savedButtons) { - if (Boolean.TRUE.equals(btn.getEnabled())) { - checkedNames.add(btn.getName()); - } - } - } - } +// Set roleIds = CollectionUtil.newHashSet(2080534691714174976L, 1694263314487447643L); + if (CollectionUtil.isEmpty(roleIds)) { + return Collections.emptyMap(); } - - // 4. 合并:表单所有开启的按钮 + 是否勾选 - List> buttonList = new ArrayList<>(); - for (WidgetJsonButtonParser.ButtonInfo btn : enabledButtons) { - Map item = new HashMap<>(); - item.put("name", btn.getName()); - item.put("checked", checkedNames.contains(btn.getName())); - buttonList.add(item); + List roleFormButtonList = mapper.selectList(new LambdaQueryWrapper().in(RoleFormButton::getRoleId, roleIds)); + if (CollectionUtil.isEmpty(roleFormButtonList)) { + return Collections.emptyMap(); } - - result.put("buttonList", buttonList); - return result; + // 2. 遍历所有角色,合并各角色在该表单的勾选按钮(取并集) + Map> roleCheckedNamesMap = new HashMap<>(); + for (RoleFormButton roleFormButton : roleFormButtonList) { + if (StringUtils.isBlank(roleFormButton.getButtonConfig())) { + continue; + } + List buttonInfoList = JSON.parseArray(roleFormButton.getButtonConfig(), WidgetJsonButtonParser.ButtonInfo.class); + Set checkedNames = buttonInfoList.stream().filter(btn -> btn.getEnabled() != null && btn.getEnabled()).map(WidgetJsonButtonParser.ButtonInfo::getName).collect(Collectors.toSet()); + roleCheckedNamesMap.computeIfAbsent(Long.toString(roleFormButton.getFormId()), k -> new HashSet<>()).addAll(checkedNames); + } + return roleCheckedNamesMap; } /**