From 6d4e3bb1e877b65a1db7b9cd6b2f25140de3cefd Mon Sep 17 00:00:00 2001 From: chenchuchuan <13554600537@163.com> Date: Thu, 30 Jul 2026 18:10:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(button):=20=E8=A7=A3=E5=86=B3=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E9=85=8D=E7=BD=AE=E6=8E=A5=E5=8F=A3=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=92=8C=E7=A9=BA=E5=80=BC=E5=A4=84=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 getButtonConfig 接口添加 @NoAuthInterface 注解以允许匿名访问 - 在 getButtonConfigVo 方法中添加异常捕获机制防止运行时错误 - 实现 buildEmptyResultForAllForms 方法构建完整的表单ID键列表 - 当用户无角色权限时返回所有已发布在线表单的空按钮配置 - 确保前端能够获取完整的 formId 列表而不会因权限问题缺失数据 --- .../online/abstractplugin/ListDataOrmService.java | 22 +++++++++++++++++++++- .../apelet/common/online/dao/OnlineDictMapper.java | 8 ++++++++ .../common/online/dao/mapper/OnlineDictMapper.xml | 4 ++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java b/common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java index 682415c..01b1119 100644 --- a/common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java +++ b/common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java @@ -3,6 +3,7 @@ package apelet.common.online.abstractplugin; import apelet.common.core.object.MyOrderParam; import apelet.common.core.object.ObjectCollection; import apelet.common.core.object.ResponseResult; +import apelet.common.core.object.TokenData; import apelet.common.online.abstractplugin.model.GridData; import apelet.common.online.dto.OnlineEventPluginExecuteDto; import apelet.common.online.dto.OnlineFilterDto; @@ -12,7 +13,9 @@ import apelet.common.online.model.constant.FieldFilterType; import apelet.common.online.model.constant.RelationType; import apelet.common.orm.impl.*; import apelet.common.orm.parser.FilterParser; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -84,6 +87,9 @@ public class ListDataOrmService extends ListDataService { getOrmSelector(widgetList, selectorSet, masterTable, new HashMap<>()); Filter filter = getFilter(); if (StrUtil.isNotBlank(conditionExpression)) { + TokenData tokenData = TokenData.takeFromRequest(); + // 解析 conditionExpression 中的 ${字段名} 占位符,从 tokenData 中取值填充 + conditionExpression = resolvePlaceholders(conditionExpression, tokenData); Filter parsed = FilterParser.parse(conditionExpression); if (CollUtil.isNotEmpty(parsed.getItems())) { for (FilterItem item : parsed.getItems()) { @@ -102,7 +108,6 @@ public class ListDataOrmService extends ListDataService { } if (!sorter.startsWithKey("create_time")) { SorterItem sorterItem = new SorterItem("create_time"); - ; sorterItem.setSortType(SortType._DESC); sorter.add(sorterItem); } @@ -125,6 +130,21 @@ public class ListDataOrmService extends ListDataService { } + /** + * 解析 conditionExpression 中的 ${字段名} 占位符,从 tokenData 中取值填充。 + * 如 ${loginName} → 当前登录用户名,${deptId} → 当前用户部门ID。 + */ + private String resolvePlaceholders(String expression, TokenData tokenData) { + List varNames = ReUtil.findAll("\\$\\{(\\w+)\\}", expression, 1); + for (String fieldName : varNames) { + Object value = BeanUtil.getProperty(tokenData, fieldName); + if (value != null) { + expression = expression.replace("${" + fieldName + "}", value.toString()); + } + } + return expression; + } + public void getOrmSelector(JSONObject jsonObject, Set selectorSet, OnlineTable masterTable, Map entryIdMap) { Map columnMap = masterTable.getColumnMap(); JSONArray array = jsonObject.getJSONArray("childWidgetList"); diff --git a/common/common-online/src/main/java/apelet/common/online/dao/OnlineDictMapper.java b/common/common-online/src/main/java/apelet/common/online/dao/OnlineDictMapper.java index 2582d3d..6b07e32 100644 --- a/common/common-online/src/main/java/apelet/common/online/dao/OnlineDictMapper.java +++ b/common/common-online/src/main/java/apelet/common/online/dao/OnlineDictMapper.java @@ -23,4 +23,12 @@ public interface OnlineDictMapper extends BaseDaoMapper { */ List getOnlineDictList( @Param("onlineDictFilter") OnlineDict onlineDictFilter, @Param("orderBy") String orderBy); + + /** + * 根据字典名称获取字典信息 + * + * @param dictName + * @return + */ + List queryByDictName(@Param("dictName") String dictName); } diff --git a/common/common-online/src/main/java/apelet/common/online/dao/mapper/OnlineDictMapper.xml b/common/common-online/src/main/java/apelet/common/online/dao/mapper/OnlineDictMapper.xml index 80e7f93..7147726 100644 --- a/common/common-online/src/main/java/apelet/common/online/dao/mapper/OnlineDictMapper.xml +++ b/common/common-online/src/main/java/apelet/common/online/dao/mapper/OnlineDictMapper.xml @@ -62,4 +62,8 @@ ORDER BY ${orderBy} + +