KKSU
2024-12-31 e9391705ed64a34caf08c9f217b498dac3dc59b5
refactor(mall): 优化会员利润计算服务

- 在 AgentTest 中添加了注释掉的测试代码,用于批量注册用户
- 在 MemberProfitServiceImpl 中使用 CompletableFuture异步处理直接得分计算和流水记录添加,提高性能
2 files modified
27 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java 5 ●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/AgentTest.java 22 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -29,6 +29,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
@@ -719,9 +720,10 @@
                    continue;
                }
                for (MallMember item : directMembers) {
                    CompletableFuture.runAsync(() -> {
                    BigDecimal realScore = calculateDirectScore(memberRunVip, item, operationDate, runVipMap);
                    if(BigDecimal.ZERO.compareTo(realScore) >= 0){
                        continue;
                            return;
                    }
                    walletService.addScore(realScore, memberId);
                    String orderNo = MallUtils.getOrderNum("ZLS");
@@ -735,6 +737,7 @@
                            StrUtil.format(RunVipMoneyFlowTypeEnum.DIRECT_SCORE.getDescription(), realScore),
                            YesOrNoEnum.YES.getValue()
                    );
                    });
                }
            }
        } catch (Exception e) {
src/test/java/cc/mrbird/febs/AgentTest.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
@@ -9,14 +10,25 @@
@Slf4j
@SpringBootTest
public class AgentTest {
    @Autowired
    private IMemberProfitService memberProfitService;
    @Autowired
    private IApiMallMemberService apiMallMemberService;
//    @Test
//    public void getCouponAmountMap(){
//        for(int i = 0;i<10;i++){
//            RegisterDto registerDto = new RegisterDto();
//            registerDto.setAccount("1910000005"+i);
//            registerDto.setRegistType("admin");
//            registerDto.setPassword("a123456");
//            registerDto.setPasswordAgain("a123456");
//            registerDto.setInviteId("36460266");
//            apiMallMemberService.register(registerDto);
//        }
//
//    }
    @Test
    public void getCouponAmountMap(){
    public void getCouponAmountMapV2(){
        memberProfitService.updateMemberCoin();
    }
}