From 75d8b0ad39a7eb04f72ef8654dbb895322f07cfd Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 21 Oct 2025 13:41:42 +0800
Subject: [PATCH] feat(ai): 新增会员答题分页及详情查询功能 - 在 AiMemberAnswerMapper 中新增 getAnswerPage 方法及对应 XML 查询语句 - 新增 ApiMemberAnswerPageDto 和 ApiMemberAnswerPageVo 用于分页查询参数和返回结果 - 在 AiMemberAnswerService 及其实现类中添加 getAnswerPage 方法 - 在 AiMemberService 及其实现类中新增 answerPage 和 answerInfo 接口实现 - 新增 ApiMemberAnswerInfoDto 和 ApiMemberAnswerInfoVo 用于答题详情接口参数和响应 - 在 ApiMemberController 中增加 /answerPage 和 /answerInfo两个 POST 接口 - 优化 AiMemberTeamPracticeVo,增加 memberUuid 字段 - 统一导入包路径,简化代码结构

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java |   36 +++++++++++++++++++++++++++++++-----
 1 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java
index 137e07b..9246e4e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java
@@ -3,8 +3,10 @@
 import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
 import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
 import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.mall.dto.ApiMallActListDto;
 import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto;
 import cc.mrbird.febs.mall.entity.*;
@@ -134,7 +136,7 @@
         BigDecimal prizeScore = wallet.getPrizeScore();
         Integer actScoreCnt = mallActSet.getActScoreCnt();
         if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){
-            throw new FebsException("竞猜积分不足");
+            throw new FebsException("积分不足");
         }
         /**
          * 中奖概率 20%
@@ -150,7 +152,7 @@
                 DataDictionaryEnum.WIN_CASH.getCode());
         String scoreDicValue = scoreDic.getValue() == null? "0":scoreDic.getValue();
         String cashDicValue = cashDic.getValue() == null? "0":cashDic.getValue();
-        BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue));
+        BigDecimal totalProbability = new BigDecimal(scoreDicValue).multiply(new BigDecimal(cashDicValue));
         //获取那个更大一点的几率
         BigDecimal maxProbability = BigDecimal.ZERO;
         BigDecimal minProbability = BigDecimal.ZERO;
@@ -559,16 +561,40 @@
         // 消耗积分
         BigDecimal useScore = new BigDecimal(actScoreCnt);
         mallMemberWalletService.reduce(useScore, wallet.getMemberId(), "prizeScore");
-        mallMoneyFlowService.addMoneyFlow(wallet.getMemberId(), useScore.negate(), MoneyFlowTypeEnum.PRIZE.getValue(), null, FlowTypeEnum.PRIZE_SCORE.getValue());
+        mallMoneyFlowService.addMoneyFlow(
+                wallet.getMemberId(),
+                useScore.negate(),
+                ScoreFlowTypeEnum.LUCKY_DRAW.getValue(),
+                MallUtils.getOrderNum(),
+                FlowTypeEnum.PRIZE_SCORE.getValue(),
+                StrUtil.format(ScoreFlowTypeEnum.LUCKY_DRAW.getDesc(),useScore),
+                2
+        );
 
         if (apiMallAwardDetailsVo.getAwardType() != 3) {
             BigDecimal prize = new BigDecimal(apiMallAwardDetailsVo.getAwardValue());
             if (apiMallAwardDetailsVo.getAwardType() == 1) {
                 mallMemberWalletService.add(prize, wallet.getMemberId(), "prizeScore");
-                mallMoneyFlowService.addMoneyFlow(wallet.getMemberId(), prize, MoneyFlowTypeEnum.PRIZE.getValue(), null, FlowTypeEnum.PRIZE_SCORE.getValue());
+                mallMoneyFlowService.addMoneyFlow(
+                        wallet.getMemberId(),
+                        prize,
+                        ScoreFlowTypeEnum.LUCKY_DRAW_SCORE.getValue(),
+                        MallUtils.getOrderNum(),
+                        FlowTypeEnum.PRIZE_SCORE.getValue(),
+                        StrUtil.format(ScoreFlowTypeEnum.LUCKY_DRAW_SCORE.getDesc(),apiMallAwardDetailsVo.getAwardName()),
+                        2
+                );
             } else if (apiMallAwardDetailsVo.getAwardType() == 2) {
                 mallMemberWalletService.add(prize, wallet.getMemberId(), "commission");
-                mallMoneyFlowService.addMoneyFlow(wallet.getMemberId(), prize, MoneyFlowTypeEnum.PRIZE.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
+                mallMoneyFlowService.addMoneyFlow(
+                        wallet.getMemberId(),
+                        prize,
+                        ScoreFlowTypeEnum.LUCKY_DRAW_COMMISSION.getValue(),
+                        MallUtils.getOrderNum(),
+                        FlowTypeEnum.COMMISSION.getValue(),
+                        StrUtil.format(ScoreFlowTypeEnum.LUCKY_DRAW_COMMISSION.getDesc(),apiMallAwardDetailsVo.getAwardName()),
+                        2
+                );
             }
         }
         return apiMallAwardDetailsVo;

--
Gitblit v1.9.1