Parcourir la source

feat(recommend): 新增数仓同步请求 DTO(RuleSyncRequest/RuleSyncCardDTO/SyncPopDTO)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jintao.geng il y a 1 mois
Parent
commit
dd69f53c64

+ 62 - 0
mango-common/src/main/java/com/mangoo/rating/recommend/request/recommend/RuleSyncCardDTO.java

@@ -0,0 +1,62 @@
+package com.mangoo.rating.recommend.request.recommend;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 数仓推送-单卡规则数据
+ *
+ * @author gengjintao
+ * @date 2026/06/25
+ */
+@Data
+@ApiModel("数仓推送-单卡规则")
+public class RuleSyncCardDTO {
+
+    @ApiModelProperty(value = "数仓卡片唯一ID", required = true)
+    private String cardId;
+
+    @ApiModelProperty(value = "卡号(如 066/080)")
+    private String cardNo;
+
+    @ApiModelProperty(value = "球员/卡牌主体名")
+    private String player;
+
+    @ApiModelProperty(value = "年份")
+    private String year;
+
+    @ApiModelProperty(value = "系列")
+    private String series;
+
+    @ApiModelProperty(value = "卡种")
+    private String cardSet;
+
+    @ApiModelProperty(value = "推荐时效(数仓直接给,EvaluateEfficiencyEnum.code)")
+    private Integer recommendEfficiency;
+
+    @ApiModelProperty(value = "当前价")
+    private BigDecimal currentValue;
+
+    @ApiModelProperty(value = "涨跌幅(百分数,如 7.05)")
+    private BigDecimal valueChangePct;
+
+    @ApiModelProperty(value = "价格区间下限")
+    private BigDecimal valueMin;
+
+    @ApiModelProperty(value = "价格区间上限")
+    private BigDecimal valueMax;
+
+    @ApiModelProperty(value = "当日价格记录日期(趋势增量用)")
+    private LocalDate recordDate;
+
+    @ApiModelProperty(value = "当日价格(趋势增量用)")
+    private BigDecimal todayPrice;
+
+    @ApiModelProperty(value = "POP 明细(三机构)")
+    private List<SyncPopDTO> pops;
+}

+ 28 - 0
mango-common/src/main/java/com/mangoo/rating/recommend/request/recommend/RuleSyncRequest.java

@@ -0,0 +1,28 @@
+package com.mangoo.rating.recommend.request.recommend;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 数仓规则同步请求体(全量批次推送)
+ *
+ * @author gengjintao
+ * @date 2026/06/25
+ */
+@Data
+@ApiModel("数仓规则同步请求")
+public class RuleSyncRequest {
+
+    @ApiModelProperty(value = "批次号(如 2026062501)", required = true)
+    @NotBlank(message = "batchNo 不能为空")
+    private String batchNo;
+
+    @ApiModelProperty(value = "卡片规则全量列表", required = true)
+    @NotEmpty(message = "cards 不能为空")
+    private List<RuleSyncCardDTO> cards;
+}

+ 34 - 0
mango-common/src/main/java/com/mangoo/rating/recommend/request/recommend/SyncPopDTO.java

@@ -0,0 +1,34 @@
+package com.mangoo.rating.recommend.request.recommend;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 数仓推送-单机构 POP 数据
+ *
+ * @author gengjintao
+ * @date 2026/06/25
+ */
+@Data
+@ApiModel("数仓推送-POP明细")
+public class SyncPopDTO {
+
+    @ApiModelProperty(value = "评级机构(PSA/BGS/Nexphostis)")
+    private String agency;
+
+    @ApiModelProperty(value = "总评级数")
+    private Integer all;
+
+    @ApiModelProperty(value = "10分数量")
+    private Integer g10;
+
+    @ApiModelProperty(value = "9分数量")
+    private Integer g9;
+
+    @ApiModelProperty(value = "8分数量")
+    private Integer g8;
+
+    @ApiModelProperty(value = "7分数量")
+    private Integer g7;
+}