From 78e1837458da467cacefa8e22c2c9616b1dc9f9d Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 12 May 2025 16:26:58 +0800
Subject: [PATCH] refactor(mall): 优化积分和余额支付流程

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java |   49 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java
index 7785770..2fc1a19 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java
@@ -4,6 +4,7 @@
 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.mall.dto.ScoreSettingDto;
@@ -20,10 +21,12 @@
 import cc.mrbird.febs.mall.vo.ScoreSignVo;
 import cc.mrbird.febs.mall.vo.signActivity.ApiGetRunDateVo;
 import cc.mrbird.febs.mall.vo.signActivity.ApiSignListVo;
+import cc.mrbird.febs.mall.vo.signActivity.ApiSignVo;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -33,10 +36,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -205,7 +205,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void sign() {
+    public FebsResponse sign() {
         MallMember member = LoginUserUtil.getLoginUser();
 
         DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SCORE_SIGN_SETTING.getType(), DataDictionaryEnum.SCORE_SIGN_SETTING.getCode());
@@ -285,14 +285,37 @@
         mallScoreSignRecord.setTotalCnt(days);
         mallScoreSignRecord.setSignTime(new Date());
         mallScoreSignRecordMapper.insert(mallScoreSignRecord);
-
+        /**
+         * 1:会员经验 2:会员积分
+         */
+        Integer mostSignIn = scoreSetting.getMostSignIn();
         BigDecimal amount = BigDecimal.valueOf(mallScoreSignRecord.getScore());
-        walletService.add(amount, member.getId(), "prizeScore");
-        mallMoneyFlowService.addMoneyFlow(
-                member.getId(),
-                amount,
-                MoneyFlowTypeEnum.SCORE_SIGN.getValue(),
-                null,
-                FlowTypeEnum.PRIZE_SCORE.getValue());
+        if(mostSignIn == 1){
+            walletService.add(amount, member.getId(), "score");
+            mallMoneyFlowService.addMoneyFlow(
+                    member.getId(),
+                    amount,
+                    ScoreFlowTypeEnum.SIGN_EXPERIENCE.getValue(),
+                    mallScoreSignRecord.getId().toString(),
+                    FlowTypeEnum.SCORE.getValue(),
+                    StrUtil.format(ScoreFlowTypeEnum.SIGN_EXPERIENCE.getDesc(),amount),
+                    2);
+        }
+        if(mostSignIn == 2){
+            walletService.add(amount, member.getId(), "prizeScore");
+            mallMoneyFlowService.addMoneyFlow(
+                    member.getId(),
+                    amount,
+                    ScoreFlowTypeEnum.SIGN_SCORE.getValue(),
+                    mallScoreSignRecord.getId().toString(),
+                    FlowTypeEnum.PRIZE_SCORE.getValue(),
+                    StrUtil.format(ScoreFlowTypeEnum.SIGN_SCORE.getDesc(),amount),
+                    2);
+        }
+
+        ApiSignVo apiSignVo = new ApiSignVo();
+        apiSignVo.setMineScore(mallScoreSignRecord.getScore());
+        apiSignVo.setMostSignIn(mostSignIn);
+        return new FebsResponse().success().data(apiSignVo);
     }
 }

--
Gitblit v1.9.1