Quellcode durchsuchen

1、修改积分规则提交bug
2、事件地址列表更改为三层结构

rayson vor 1 Jahr
Ursprung
Commit
8b39acf2c6

+ 10 - 0
menduner/menduner-reward-api/src/main/java/com/citu/module/menduner/reward/enums/ErrorCodeConstants.java

@@ -16,7 +16,17 @@ import com.citu.framework.common.exception.enums.ServiceErrorCodeRange;
  **/
 public interface ErrorCodeConstants {
 
+    // ========== 公共配置  1_110_000_000 ==========
+
+
     // ========== 积分规则配置  1_110_001_000 ==========
     ErrorCode POINT_RULE_CONFIG_NOT_EXISTS = new ErrorCode(1_110_001_001, "积分规则配置不存在");
+    ErrorCode POINT_RULE_CONFIG_URL_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_002, "事件地址不能为空");
+    ErrorCode POINT_RULE_CONFIG_TYPE_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_003, "未选择规则类型");
+    ErrorCode POINT_RULE_CONFIG_TITLE_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_004, "填写规则名称");
+    ErrorCode POINT_RULE_CONFIG_OPERATION_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_005, "数学运算符不能为空");
+    ErrorCode POINT_RULE_CONFIG_POINT_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_006, "积分数量不能为空");
+    ErrorCode POINT_RULE_CONFIG_TRIGGER_RULE_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_007, "触发规则不能为空");
+    ErrorCode POINT_RULE_CONFIG_STATUS_CAN_NOT_BE_EMPTY = new ErrorCode(1_110_001_008, "状态不能为空");
 
 }

+ 4 - 14
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/admin/event/EventTrackController.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.reward.controller.admin.event;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.reward.controller.base.common.TreeRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackPointRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackUrlRespVO;
 import com.citu.module.menduner.reward.service.EventTrackService;
@@ -30,8 +31,7 @@ public class EventTrackController {
     @Resource
     private EventTrackService service;
 
-    @Resource
-    private MendunerSystemUrlApi mendunerSystemUrlApi;
+
 
     @PermitAll
     @PreAuthenticated
@@ -53,18 +53,8 @@ public class EventTrackController {
     @PreAuthenticated
     @GetMapping("/get/url/list")
     @Operation(summary = "获取事件地址列表")
-    public CommonResult<List<Map<String, Object>>> getUrlList() {
-        List<UrlInfoRespVO> list = mendunerSystemUrlApi.list().getCheckedData();
-        return CommonResult.success(list.stream()
-                .collect(Collectors.groupingBy(UrlInfoRespVO::getClient, Collectors.toList()))
-                .entrySet().stream()
-                .map(entry -> {
-                    Map<String, Object> clientMap = new LinkedHashMap<>();
-                    clientMap.put("name", entry.getKey());
-                    clientMap.put("children", entry.getValue());
-                    return clientMap;
-                })
-                .collect(Collectors.toList()));
+    public CommonResult<Object> getUrlList() {
+        return CommonResult.success(service.getUrlList());
     }
 
 }

+ 20 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/common/TreeRespVO.java

@@ -0,0 +1,20 @@
+package com.citu.module.menduner.reward.controller.base.common;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Schema(description = "管理后台 - 树形 Response VO")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TreeRespVO<T> {
+
+    private String name;
+
+    private T children;
+
+}

+ 7 - 7
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/pointruleconfig/PointRuleConfigSaveReqVO.java

@@ -16,34 +16,34 @@ public class PointRuleConfigSaveReqVO {
     private Long id;
 
     @Schema(description = "url", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
-    @NotEmpty(message = "url不能为空")
+    @NotEmpty(message = "{1_110_001_002}")
     private String url;
 
     @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotEmpty(message = "类型不能为空")
+    @NotEmpty(message = "{1_110_001_003}")
     private String type;
 
     @Schema(description = "规则标题", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "规则标题不能为空")
+    @NotEmpty(message = "{1_110_001_004}")
     private String title;
 
     @Schema(description = "数学运算符", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "数学运算符不能为空")
+    @NotEmpty(message = "{1_110_001_005}")
     private String operation;
 
     @Schema(description = "积分数", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "积分数不能为空")
+    @NotNull(message = "{1_110_001_006}")
     private BigDecimal point;
 
     @Schema(description = "触发规则", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "触发规则不能为空")
+    @NotNull(message = "{1_110_001_007}")
     private Condition triggerRule;
 
     @Schema(description = "约束规则")
     private Condition constraintRule;
 
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotEmpty(message = "状态不能为空")
+    @NotEmpty(message = "{1_110_001_008}")
     private String status;
 
 }

+ 4 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/EventTrackService.java

@@ -1,7 +1,9 @@
 package com.citu.module.menduner.reward.service;
 
+import com.citu.module.menduner.reward.controller.base.common.TreeRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackPointRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackUrlRespVO;
+import com.citu.module.menduner.system.api.url.UrlInfoRespVO;
 
 import java.util.List;
 
@@ -20,4 +22,6 @@ public interface EventTrackService {
      * @param id
      **/
     EventTrackPointRespVO click(Long id);
+
+    List<Object> getUrlList();
 }

+ 49 - 1
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/EventTrackServiceImpl.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.reward.service;
 
+import com.citu.module.menduner.reward.controller.base.common.TreeRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackPointRespVO;
 import com.citu.module.menduner.reward.controller.base.event.EventTrackUrlRespVO;
 import com.citu.module.menduner.reward.convert.PointRuleConfigConvert;
@@ -8,12 +9,18 @@ import com.citu.module.menduner.reward.core.PointRuleFact;
 import com.citu.module.menduner.reward.dal.dataobject.pointruleconfig.PointRuleConfigDO;
 import com.citu.module.menduner.reward.rule.DynamicPointRule;
 import com.citu.module.menduner.reward.rule.DynamicRuleAction;
+import com.citu.module.menduner.system.api.url.MendunerSystemUrlApi;
+import com.citu.module.menduner.system.api.url.UrlInfoRespVO;
 import org.jeasy.rules.api.Facts;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 import static com.citu.module.menduner.reward.enums.EasyRulesConstants.*;
 
@@ -30,6 +37,9 @@ public class EventTrackServiceImpl implements EventTrackService {
     @Resource
     private PointRuleConfigService ruleConfigService;
 
+    @Resource
+    private MendunerSystemUrlApi mendunerSystemUrlApi;
+
 
     @Override
     public List<EventTrackUrlRespVO> getEventTrackList() {
@@ -37,7 +47,6 @@ public class EventTrackServiceImpl implements EventTrackService {
         return PointRuleConfigConvert.INSTANCE.convertList(list);
     }
 
-
     @Override
     public EventTrackPointRespVO click(Long id) {
         PointRuleConfigDO config = ruleConfigService.get(id);
@@ -82,4 +91,43 @@ public class EventTrackServiceImpl implements EventTrackService {
 
         return null;
     }
+
+    @Override
+    public List<Object> getUrlList() {
+        List<UrlInfoRespVO> list = mendunerSystemUrlApi.list().getCheckedData();
+        return Collections.singletonList(convertUrlInfoListToTree(list));
+    }
+
+    public static List<TreeRespVO<List<TreeRespVO<List<UrlInfoRespVO>>>>> convertUrlInfoListToTree(List<UrlInfoRespVO> urlInfoList) {
+        // 首先按client分组,然后在每个client分组内部按module分组
+        Map<String, Map<String, List<UrlInfoRespVO>>> groupedByClientAndModule = urlInfoList.stream()
+                .collect(Collectors.groupingBy(
+                        UrlInfoRespVO::getClient, // 先按client分组
+                        Collectors.groupingBy(UrlInfoRespVO::getModule) // 再按module分组
+                ));
+
+        List<TreeRespVO<List<TreeRespVO<List<UrlInfoRespVO>>>>> tree = new ArrayList<>();
+        for (Map.Entry<String, Map<String, List<UrlInfoRespVO>>> clientEntry : groupedByClientAndModule.entrySet()) {
+            // 创建client节点
+            String clientName = clientEntry.getKey();
+            List<TreeRespVO<List<UrlInfoRespVO>>> modules = new ArrayList<>();
+
+            for (Map.Entry<String, List<UrlInfoRespVO>> moduleEntry : clientEntry.getValue().entrySet()) {
+                // 创建module节点
+                String moduleName = moduleEntry.getKey();
+                List<UrlInfoRespVO> urls = moduleEntry.getValue();
+                TreeRespVO<List<UrlInfoRespVO>> moduleTree = new TreeRespVO<>(moduleName, urls);
+
+                // 将module节点添加到client的children列表中
+                modules.add(moduleTree);
+            }
+
+            // 创建client的TreeRespVO并添加到最终的树形列表中
+            TreeRespVO<List<TreeRespVO<List<UrlInfoRespVO>>>> clientTree = new TreeRespVO<>(clientName, modules);
+            tree.add(clientTree);
+        }
+
+        return tree;
+    }
+
 }

+ 11 - 1
menduner/menduner-reward-biz/src/main/resources/i18n/messages_en_US.properties

@@ -16,4 +16,14 @@
 # ========== 自定义错误段 ==========
 900=duplicate request, please try again later # duplicate request
 901=demonstration mode, write operation prohibited
-999=unknown error
+999=unknown error
+# ========== 公共配置  1_110_000_000 ==========
+# ========== 积分规则配置  1_110_001_000 ==========
+1_110_001_001=Integral rule configuration does not exist
+1_110_001_002=Event address cannot be empty
+1_110_001_003=No rule type selected
+1_110_001_004=Fill in the rule name
+1_110_001_005=Mathematical operator cannot be empty
+1_110_001_006=The number of points cannot be empty
+1_110_001_007=Trigger rule cannot be empty
+1_110_001_008=Status cannot be empty

+ 11 - 2
menduner/menduner-reward-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -8,7 +8,6 @@
 405=请求方法不正确
 423=请求失败,请稍后重试 # 并发请求,不允许
 429=请求过于频繁,请稍后重试
-
 # ========== 服务端错误段 ==========
 500=系统异常
 501=功能未实现/未开启
@@ -16,4 +15,14 @@
 # ========== 自定义错误段 ==========
 900=重复请求,请稍后重试 # 重复请求
 901=演示模式,禁止写操作
-999=未知错误
+999=未知错误
+# ========== 公共配置  1_110_000_000 ==========
+# ========== 积分规则配置  1_110_001_000 ==========
+1_110_001_001=积分规则配置不存在
+1_110_001_002=事件地址不能为空
+1_110_001_003=未选择规则类型
+1_110_001_004=填写规则名称
+1_110_001_005=数学运算符不能为空
+1_110_001_006=积分数量不能为空
+1_110_001_007=触发规则不能为空
+1_110_001_008=状态不能为空