Răsfoiți Sursa

feat(recommend): 规则查询加批次过滤+新字段 & 新增 POP/价格历史/生效批次只读 Mapper

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jintao.geng 1 lună în urmă
părinte
comite
ea6a98d7da

+ 18 - 0
mango-infrastructure/src/main/java/com/mangoo/rating/recommend/mapper/ActiveBatchMapper.java

@@ -0,0 +1,18 @@
+package com.mangoo.rating.recommend.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 生效批次指针 Mapper(只读)
+ *
+ * @author gengjintao
+ * @date 2026/06/25
+ */
+@Mapper
+public interface ActiveBatchMapper {
+
+    /**
+     * 读取当前生效批次号(无则返回 null)
+     */
+    String selectActiveBatchNo();
+}

+ 22 - 0
mango-infrastructure/src/main/java/com/mangoo/rating/recommend/mapper/CardPopMapper.java

@@ -0,0 +1,22 @@
+package com.mangoo.rating.recommend.mapper;
+
+import com.mangoo.rating.recommend.po.CardPopPO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 卡片 POP 明细 Mapper(只读)
+ *
+ * @author gengjintao
+ * @date 2026/06/25
+ */
+@Mapper
+public interface CardPopMapper {
+
+    /**
+     * 按卡片ID + 批次查 POP 明细(三机构多行)
+     */
+    List<CardPopPO> selectByCardId(@Param("cardId") String cardId, @Param("batchNo") String batchNo);
+}

+ 23 - 0
mango-infrastructure/src/main/java/com/mangoo/rating/recommend/mapper/CardValueHistoryMapper.java

@@ -0,0 +1,23 @@
+package com.mangoo.rating.recommend.mapper;
+
+import com.mangoo.rating.recommend.po.CardValueHistoryPO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 卡片价格历史 Mapper(只读,趋势曲线)
+ *
+ * @author gengjintao
+ * @date 2026/06/25
+ */
+@Mapper
+public interface CardValueHistoryMapper {
+
+    /**
+     * 查某卡价格历史;startDate 为 null 时查全部,否则查 record_date >= startDate。按日期升序。
+     */
+    List<CardValueHistoryPO> selectTrend(@Param("cardId") String cardId, @Param("startDate") LocalDate startDate);
+}

+ 9 - 6
mango-infrastructure/src/main/java/com/mangoo/rating/recommend/mapper/RatingRecommendRuleMapper.java

@@ -14,23 +14,26 @@ import org.apache.ibatis.annotations.Param;
 public interface RatingRecommendRuleMapper {
 
     /**
-     * L1:四字段全等命中(取最新生效)
+     * L1:四字段全等命中(取最新生效,限定生效批次
      */
     RatingRecommendRulePO selectByExact(@Param("player") String player,
                                         @Param("year") String year,
                                         @Param("series") String series,
-                                        @Param("cardSet") String cardSet);
+                                        @Param("cardSet") String cardSet,
+                                        @Param("batchNo") String batchNo);
 
     /**
-     * L2:series + cardSet + year 命中(player 放宽)
+     * L2:series + cardSet + year 命中(player 放宽,限定生效批次
      */
     RatingRecommendRulePO selectBySeriesSetYear(@Param("series") String series,
                                                 @Param("cardSet") String cardSet,
-                                                @Param("year") String year);
+                                                @Param("year") String year,
+                                                @Param("batchNo") String batchNo);
 
     /**
-     * L3:series + cardSet 命中(player + year 放宽)
+     * L3:series + cardSet 命中(player + year 放宽,限定生效批次
      */
     RatingRecommendRulePO selectBySeriesSet(@Param("series") String series,
-                                            @Param("cardSet") String cardSet);
+                                            @Param("cardSet") String cardSet,
+                                            @Param("batchNo") String batchNo);
 }

+ 10 - 0
mango-infrastructure/src/main/resources/mapper/ActiveBatchMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mangoo.rating.recommend.mapper.ActiveBatchMapper">
+    <select id="selectActiveBatchNo" resultType="java.lang.String">
+        SELECT active_batch_no
+        FROM t_rating_recommend_active_batch
+        ORDER BY id DESC
+        LIMIT 1
+    </select>
+</mapper>

+ 22 - 0
mango-infrastructure/src/main/resources/mapper/CardPopMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mangoo.rating.recommend.mapper.CardPopMapper">
+    <resultMap type="com.mangoo.rating.recommend.po.CardPopPO" id="BaseResultMap">
+        <result property="id" column="id"/>
+        <result property="cardId" column="card_id"/>
+        <result property="agency" column="agency"/>
+        <result property="gradeAll" column="grade_all"/>
+        <result property="grade10" column="grade_10"/>
+        <result property="grade9" column="grade_9"/>
+        <result property="grade8" column="grade_8"/>
+        <result property="grade7" column="grade_7"/>
+        <result property="batchNo" column="batch_no"/>
+        <result property="createTime" column="create_time"/>
+    </resultMap>
+    <select id="selectByCardId" resultMap="BaseResultMap">
+        SELECT id, card_id, agency, grade_all, grade_10, grade_9, grade_8, grade_7, batch_no, create_time
+        FROM t_rating_card_pop
+        WHERE card_id = #{cardId} AND batch_no = #{batchNo}
+        ORDER BY agency ASC
+    </select>
+</mapper>

+ 20 - 0
mango-infrastructure/src/main/resources/mapper/CardValueHistoryMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mangoo.rating.recommend.mapper.CardValueHistoryMapper">
+    <resultMap type="com.mangoo.rating.recommend.po.CardValueHistoryPO" id="BaseResultMap">
+        <result property="id" column="id"/>
+        <result property="cardId" column="card_id"/>
+        <result property="price" column="price"/>
+        <result property="recordDate" column="record_date"/>
+        <result property="createTime" column="create_time"/>
+    </resultMap>
+    <select id="selectTrend" resultMap="BaseResultMap">
+        SELECT id, card_id, price, record_date, create_time
+        FROM t_rating_card_value_history
+        WHERE card_id = #{cardId}
+        <if test="startDate != null">
+            AND record_date &gt;= #{startDate}
+        </if>
+        ORDER BY record_date ASC
+    </select>
+</mapper>

+ 11 - 0
mango-infrastructure/src/main/resources/mapper/RatingRecommendRuleMapper.xml

@@ -12,6 +12,13 @@
         <result property="cardSet" column="card_set"/>
         <result property="recommendEfficiency" column="recommend_efficiency"/>
         <result property="effectiveTime" column="effective_time"/>
+        <result property="cardId" column="card_id"/>
+        <result property="cardNo" column="card_no"/>
+        <result property="currentValue" column="current_value"/>
+        <result property="valueChangePct" column="value_change_pct"/>
+        <result property="valueMin" column="value_min"/>
+        <result property="valueMax" column="value_max"/>
+        <result property="batchNo" column="batch_no"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
         <result property="delFlag" column="del_flag"/>
@@ -19,6 +26,7 @@
 
     <sql id="baseColumnList">
         id, player, year, series, card_set, recommend_efficiency, effective_time,
+        card_id, card_no, current_value, value_change_pct, value_min, value_max, batch_no,
         create_time, update_time, del_flag
     </sql>
 
@@ -27,6 +35,7 @@
         SELECT <include refid="baseColumnList"/>
         FROM t_rating_recommend_rule
         WHERE del_flag = 0
+          AND batch_no = #{batchNo}
           AND player = #{player}
           AND year = #{year}
           AND series = #{series}
@@ -41,6 +50,7 @@
         SELECT <include refid="baseColumnList"/>
         FROM t_rating_recommend_rule
         WHERE del_flag = 0
+          AND batch_no = #{batchNo}
           AND series = #{series}
           AND card_set = #{cardSet}
           AND year = #{year}
@@ -54,6 +64,7 @@
         SELECT <include refid="baseColumnList"/>
         FROM t_rating_recommend_rule
         WHERE del_flag = 0
+          AND batch_no = #{batchNo}
           AND series = #{series}
           AND card_set = #{cardSet}
           AND (effective_time IS NULL OR effective_time &lt;= now())