Просмотр исходного кода

feat(business): 优化手牌解析逻辑和查询

- 在 HandHistoryMapper.xml 中添加排序和限制条件,确保只获取最新的一条记录
- 在 HandHistoryServiceImpl 中修改牌面解析方法,使用新的 parseHoleCardsV2 方法- 在 PokerCardParserUtils 中改进牌面解析逻辑,支持新的牌型解析方式
fugui001 3 месяцев назад
Родитель
Сommit
7fd5fcf209

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/service/impl/HandHistoryServiceImpl.java

@@ -185,7 +185,7 @@ public class HandHistoryServiceImpl implements IHandHistoryService {
                     handHistoryVo1.setHandEndTime(handHistoryVo.getHandEndTime());
                     handHistoryVo1.setBlindLevel(handHistoryVo.getBlindLevel());
                     handHistoryVo1.setBlindLevelIds(levelIds);
-                    List<String> parseBoardCards = PokerCardParserUtils.parseBoardCards(handHistoryVo.getBoardCards());
+                    List<String> parseBoardCards = PokerCardParserUtils.parseHoleCardsV2(handHistoryVo.getBoardCards());
                     if(parseBoardCards.size()>0){
                         String result = parseBoardCards.stream().collect(Collectors.joining(" "));
                         handHistoryVo1.setPublicBrand(result);

+ 17 - 7
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/utils/PokerCardParserUtils.java

@@ -189,20 +189,24 @@ public class PokerCardParserUtils {
                 continue;
             }
 
-            // 5. 根据规则映射为实际点数符号
+        /*    enum class Rank {
+                TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
+            }*/
+
+            // 5. 根据规则映射为实际点数符号  下标对应上面的
             String rankSymbol = null;
             if (rawRankValue == 0) {
                 rankSymbol = "2"; // 特殊规则:0 → 2
-            }else if (rawRankValue >= 1 && rawRankValue <= 9) {
-                int actualValue = rawRankValue + 1; // 1→2, 2→3, ..., 9→10
+            }else if (rawRankValue >= 1 && rawRankValue <= 8) {
+                int actualValue = rawRankValue + 2; // 1→3, 2→4,
                 rankSymbol = String.valueOf(actualValue);
-            } else if (rawRankValue == 10) {
+            } else if (rawRankValue == 9) {
                 rankSymbol = "J";
-            } else if (rawRankValue == 11) {
+            } else if (rawRankValue == 10) {
                 rankSymbol = "Q";
-            } else if (rawRankValue == 12) {
+            } else if (rawRankValue == 11) {
                 rankSymbol = "K";
-            } else if (rawRankValue == 13) {
+            } else if (rawRankValue == 12) {
                 rankSymbol = "A";
             }
             // 其他值(如 0, 14+)非法
@@ -222,6 +226,12 @@ public class PokerCardParserUtils {
 
     // 测试方法
     public static void main(String[] args) {
+        String holeCards = "13,24";
+
+        List<String> parsedHoleCards = parseHoleCardsV2(holeCards);
+
+
+
         String boardCards = "19,21,10,210,01";
         List<String> parsedCards = parseBoardCards(boardCards);
         System.out.println("解析后的公共牌:");

+ 2 - 1
ruoyi-modules/ruoyi-system/src/main/resources/mapper/business/HandHistoryMapper.xml

@@ -43,7 +43,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="endLateRegistrationLevel != null">
             AND blind_level &lt;= #{endLateRegistrationLevel}
         </if>
-
+        order by created_at desc
+        limit 1
     </select>