Bladeren bron

修改卡片详情查询接口参数结构

jintao.geng 1 maand geleden
bovenliggende
commit
d18d2ba04a

+ 2 - 3
mango-application/src/main/java/com/mangoo/rating/recommend/app/controller/CardController.java

@@ -32,8 +32,7 @@ public class CardController {
     @ApiOperation("查询卡片详情(身份+POP+行情+价格趋势)")
     @PostMapping("/detail")
     @ApiLog(title = "卡片详情趋势查询", businessType = BusinessType.SEARCH)
-    public AjaxResult detail(@Validated @RequestBody CardDetailRequest request) {
-        // 改为 POST + 请求体(遵循「新增接口统一 POST」规范),period 默认 30d
-        return cardDetailService.getDetail(request.getCardId(), request.getPeriod());
+    public AjaxResult detail(@RequestBody CardDetailRequest request) {
+        return cardDetailService.getDetail(request);
     }
 }

+ 15 - 6
mango-application/src/test/java/com/mangoo/rating/recommend/cart/CardDetailServiceImplTest.java

@@ -9,6 +9,7 @@ import com.mangoo.rating.recommend.po.CardPopPO;
 import com.mangoo.rating.recommend.po.CardValueHistoryPO;
 import com.mangoo.rating.recommend.po.RatingRecommendRulePO;
 import com.mangoo.rating.recommend.response.recommend.CardDetailVO;
+import com.mangoo.rating.recommend.request.recommend.CardDetailRequest;
 import com.mangoo.rating.recommend.service.impl.CardDetailServiceImpl;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -90,6 +91,14 @@ class CardDetailServiceImplTest {
         return (CardDetailVO) r.get("data");
     }
 
+    /** 构造详情查询请求对象 */
+    private CardDetailRequest reqOf(String cardId, String period) {
+        CardDetailRequest req = new CardDetailRequest();
+        req.setCardId(cardId);
+        req.setPeriod(period);
+        return req;
+    }
+
     @Test
     void 正常_组装详情() {
         when(ruleManager.selectByCardId("C1", "B1")).thenReturn(rule());
@@ -105,7 +114,7 @@ class CardDetailServiceImplTest {
         h.setRecordDate(LocalDate.now().minusDays(1));
         when(cardValueHistoryManager.selectTrend(eq("C1"), org.mockito.ArgumentMatchers.any())).thenReturn(Arrays.asList(h));
 
-        AjaxResult result = service.getDetail("C1", "30d");
+        AjaxResult result = service.getDetail(reqOf("C1", "30d"));
         assertEquals(0, code(result));
         CardDetailVO d = data(result);
         assertEquals("AIPOM", d.getName());
@@ -119,27 +128,27 @@ class CardDetailServiceImplTest {
     @Test
     void 无生效批次_返回error() {
         when(activeBatchManager.selectActiveBatchNo()).thenReturn(null);
-        AjaxResult result = service.getDetail("C1", "30d");
+        AjaxResult result = service.getDetail(reqOf("C1", "30d"));
         assertNotEquals(0, code(result));
     }
 
     @Test
     void 卡片不存在_返回error() {
         when(ruleManager.selectByCardId("C1", "B1")).thenReturn(null);
-        AjaxResult result = service.getDetail("C1", "30d");
+        AjaxResult result = service.getDetail(reqOf("C1", "30d"));
         assertNotEquals(0, code(result));
     }
 
     @Test
     void cardId为空_返回error() {
-        AjaxResult result = service.getDetail("  ", "30d");
+        AjaxResult result = service.getDetail(reqOf("  ", "30d"));
         assertNotEquals(0, code(result));
     }
 
     @Test
     void period_7d_起始为7天前() {
         when(ruleManager.selectByCardId("C1", "B1")).thenReturn(rule());
-        service.getDetail("C1", "7d");
+        service.getDetail(reqOf("C1", "7d"));
         verify(cardValueHistoryManager).selectTrend(eq("C1"), dateCaptor.capture());
         assertEquals(LocalDate.now().minusDays(7), dateCaptor.getValue());
     }
@@ -147,7 +156,7 @@ class CardDetailServiceImplTest {
     @Test
     void period_all_起始为null() {
         when(ruleManager.selectByCardId("C1", "B1")).thenReturn(rule());
-        service.getDetail("C1", "all");
+        service.getDetail(reqOf("C1", "all"));
         verify(cardValueHistoryManager).selectTrend(eq("C1"), isNull());
     }
 }

+ 1 - 2
mango-common/src/main/java/com/mangoo/rating/recommend/request/recommend/CardDetailRequest.java

@@ -16,8 +16,7 @@ import javax.validation.constraints.NotBlank;
 @ApiModel("卡片详情查询请求")
 public class CardDetailRequest {
 
-    @ApiModelProperty(value = "数仓卡片唯一ID", required = true)
-    @NotBlank(message = "cardId 不能为空")
+    @ApiModelProperty(value = "数仓卡片唯一ID")
     private String cardId;
 
     @ApiModelProperty(value = "趋势时间窗:7d/30d/90d/all(默认 30d)")

+ 3 - 3
mango-domain/src/main/java/com/mangoo/rating/recommend/service/CardDetailService.java

@@ -1,6 +1,7 @@
 package com.mangoo.rating.recommend.service;
 
 import com.mangoo.rating.recommend.AjaxResult;
+import com.mangoo.rating.recommend.request.recommend.CardDetailRequest;
 
 /**
  * 卡片详情/趋势查询服务
@@ -11,8 +12,7 @@ import com.mangoo.rating.recommend.AjaxResult;
 public interface CardDetailService {
     /**
      * 查卡片详情(身份+POP+行情+价格趋势)
-     * @param cardId 数仓卡片ID
-     * @param period 趋势时间窗:7d/30d/90d/all
+     * @param request 详情查询请求
      */
-    AjaxResult getDetail(String cardId, String period);
+    AjaxResult getDetail(CardDetailRequest request);
 }

+ 6 - 2
mango-domain/src/main/java/com/mangoo/rating/recommend/service/impl/CardDetailServiceImpl.java

@@ -12,6 +12,7 @@ import com.mangoo.rating.recommend.response.recommend.CardDetailVO;
 import com.mangoo.rating.recommend.response.recommend.CardPopVO;
 import com.mangoo.rating.recommend.response.recommend.CardValueVO;
 import com.mangoo.rating.recommend.response.recommend.TrendPointVO;
+import com.mangoo.rating.recommend.request.recommend.CardDetailRequest;
 import com.mangoo.rating.recommend.service.CardDetailService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -41,10 +42,13 @@ public class CardDetailServiceImpl implements CardDetailService {
     private ActiveBatchManager activeBatchManager;
 
     @Override
-    public AjaxResult getDetail(String cardId, String period) {
-        if (cardId == null || cardId.trim().isEmpty()) {
+    public AjaxResult getDetail(CardDetailRequest request) {
+        // 从请求对象取出查询参数(cardId 必填,period 默认 30d)
+        if (request == null || request.getCardId() == null || request.getCardId().trim().isEmpty()) {
             return AjaxResult.error("cardId 不能为空");
         }
+        String cardId = request.getCardId();
+        String period = request.getPeriod();
         String activeBatchNo = activeBatchManager.selectActiveBatchNo();
         if (activeBatchNo == null) {
             return AjaxResult.error("暂无生效规则数据");