From b56ccffb0d6924ae45d25f395404495ad04a7447 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 14 Mar 2025 11:52:16 +0800
Subject: [PATCH] fix(MallMemberMapper): 修复查询时邀请人 ID 为空字符串的问题

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java |   56 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index 4596450..7a5a0a9 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -1,15 +1,11 @@
 package cc.mrbird.febs.mall.service.impl;
 
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.RunVipDataDictionaryEnum;
-import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
+import cc.mrbird.febs.common.enumerates.*;
+import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.mall.dto.ApiMemberChargeFailDto;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
-import cc.mrbird.febs.mall.service.AsyncService;
-import cc.mrbird.febs.mall.service.IAgentService;
-import cc.mrbird.febs.mall.service.IApiMallMemberService;
-import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
+import cc.mrbird.febs.mall.service.*;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
@@ -46,6 +42,7 @@
     private final RunNodeSetMapper runNodeSetMapper;
     private final AsyncService asyncService;
     private final RunVipGrowMapper runVipGrowMapper;
+    private final IMallMoneyFlowService mallMoneyFlowService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -246,16 +243,20 @@
                 return;
             }
 
-            // 检查直推人数
+            // 检查直推人数(有效的直推人数)
             long directCount = allMembers.stream()
-                    .filter(member -> mallMember.getInviteId().equals(member.getReferrerId()))
+                    .filter(member -> mallMember.getInviteId().equals(member.getReferrerId())
+                    && !"YOUKE".equals(member.getLevel()))
                     .count();
             if (directCount < directCnt) {
                 return;
             }
 
-            // 检查团队人数
-            if (allMembers.size() < teamCnt) {
+            // 检查团队人数(有效的团队人数)
+            long allMembersCount = allMembers.stream()
+                    .filter(member -> !"YOUKE".equals(member.getLevel()))
+                    .count();
+            if (allMembersCount < teamCnt) {
                 return;
             }
 
@@ -350,19 +351,24 @@
                 RunVip runVipNow = runVipMap.get(mallMember.getLevel());
                 RunVip runVipNext = runVips.stream().filter(runVip -> runVip.getOrderNumber() == runVipNow.getOrderNumber() + 1).findFirst().orElse(null);
                 if(null != runVipNext){
+                    BigDecimal add = runVipNow.getPresentPrice().add(amount);
+
                     runVipGrow = new RunVipGrow();
                     runVipGrow.setMemberId(memberId);
                     runVipGrow.setLevelNow(mallMember.getLevel());
                     runVipGrow.setLevelNext(runVipNext.getVipCode());
                     runVipGrow.setAmountAll(runVipNext.getPresentPrice());
-                    runVipGrow.setAmount(amount);
-                    runVipGrow.setAmountNow(amount);
+                    runVipGrow.setAmount(add);
+                    runVipGrow.setAmountNow(add);
                     runVipGrowMapper.insert(runVipGrow);
                 }
             }
         }
         //更新会员的等级和会员升级的时间
         mallMemberMapper.updateVipLevelTimeAndLevel(memberId,DateUtil.date(),vipCode);
+
+        //直推权益
+        asyncService.directCoin(mallCharge.getAmount(),memberId);
 
         agentProducer.sendNodeUpMsg(memberId);
     }
@@ -397,4 +403,28 @@
         MallMember graMember = mallMemberMapper.selectInfoByInviteId(parentMember.getReferrerId());
         NodeUp(graMember.getId(),directCnt,teamCnt,achieveCnt);
     }
+
+    @Override
+    public void chargeSuccessMsg(Long chargeId) {
+
+        MallCharge mallCharge = mallChargeMapper.selectById(chargeId);
+        if(null == mallCharge){
+            return;
+        }
+        Long memberId = mallCharge.getMemberId();
+        BigDecimal amount = mallCharge.getAmount();
+
+        walletService.addCommission(amount, memberId);
+        String orderNo = MallUtils.getOrderNum("C");
+        mallMoneyFlowService.runVipMoneyFlowAdd(
+                memberId,
+                memberId,
+                orderNo,
+                FlowTypeEnum.COMMISSION.getValue(),
+                RunVipMoneyFlowTypeEnum.COMMISSION_PAY_CHARGE.getValue(),
+                amount,
+                StrUtil.format(RunVipMoneyFlowTypeEnum.COMMISSION_PAY_CHARGE.getDescription(),amount),
+                YesOrNoEnum.YES.getValue()
+        );
+    }
 }

--
Gitblit v1.9.1