From a0b38fde518eb0f1970c31c5d64ed9f821f459aa Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Tue, 06 Jun 2023 10:15:14 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java |  129 +++---------------------------------------
 1 files changed, 10 insertions(+), 119 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 4eb10b4..20e3dd8 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
@@ -49,43 +49,29 @@
     private final SqlSessionTemplate sqlSessionTemplate;
     private final MallMoneyFlowMapper mallMoneyFlowMapper;
     private final MallMqRecordMapper mallMqRecordMapper;
-
-    private final MatrixTreeNodeMapper matrixTreeNodeMapper;
+    private final IMatrixTreeNodeService matrixTreeNodeService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void autoUpAgentLevel(Long memberId) {
         log.info("###代理自动升级###");
         MallMember member = memberMapper.selectById(memberId);
-
-        MatrixTree tree = MatrixTree.getInstance();
-        MemberNode node = tree.getNode(member.getInviteId());
-        if (node != null) {
+        if (MemberLevelEnum.ZERO_LEVEL.getType().equals(member.getLevel())) {
             return;
         }
 
-        MatrixTreeNode matrixTreeNode = matrixTreeNodeMapper.selectByTreeNode(memberId);
-        if (matrixTreeNode != null) {
+        MemberNode parentNode = matrixTreeNodeService.addTreeNode(memberId);
+        if (parentNode == null) {
+            log.info("父级节点未找到:{}", memberId);
             return;
         }
-
-        node = new MemberNode();
-        node.setInviteId(member.getInviteId());
-        node.setPhone(member.getPhone());
-        node.setRefererId(member.getReferrerId());
-        node.setMemberId(member.getId());
-        MemberNode parentNode = tree.addNode(node);
-
-        matrixTreeNode = new MatrixTreeNode();
-        matrixTreeNode.setTreeNode(memberId);
-        matrixTreeNode.setParentNode(parentNode.getMemberId());
-        matrixTreeNodeMapper.insert(matrixTreeNode);
 
         List<DataDictionaryCustom> dicList = dataDictionaryCustomMapper.selectDicByType(AppContants.AGENT_LEVEL);
         DataDictionaryCustom dic = null;
         for (DataDictionaryCustom dataDictionaryCustom : dicList) {
             if (Integer.parseInt(dataDictionaryCustom.getValue()) == parentNode.CHILD.size()) {
                 dic = dataDictionaryCustom;
+                break;
             }
         }
 
@@ -95,7 +81,10 @@
 
         MallMember parentMember = memberMapper.selectById(parentNode.getMemberId());
         parentMember.setChildNodeCnt(parentNode.CHILD.size());
-        parentMember.setLevel(dic.getCode());
+        int levelCode = MemberLevelEnum.getLevelCode(parentMember.getLevel());
+        if (Integer.parseInt(dic.getValue()) >= levelCode) {
+            parentMember.setLevel(dic.getCode());
+        }
         memberMapper.updateById(parentMember);
     }
 
@@ -187,104 +176,6 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void perkMoneyConsumer(long orderId) {
-        long start = System.currentTimeMillis();
-        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
-        if(ObjectUtil.isEmpty(mallOrderInfo)){
-            return;
-        }
-//        if(2 != mallOrderInfo.getStatus()){
-//            return;
-//        }
-        /**
-         * 分享补贴 直推消费额10%
-         */
-        BigDecimal amount = mallOrderInfo.getAmount().subtract(mallOrderInfo.getScoreAmount());
-
-        Long memberId = mallOrderInfo.getMemberId();
-        MallMember mallMember = memberMapper.selectById(memberId);
-        //补贴对象 直属上级
-        MallMember mallMemberUp = memberMapper.selectInfoByInviteId(mallMember.getReferrerId());
-        if(ObjectUtil.isNotEmpty(mallMemberUp)){
-            //分享补贴百分比
-            DataDictionaryCustom sharePerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                    DataDictionaryEnum.SHARE_PERK.getType(),
-                    DataDictionaryEnum.SHARE_PERK.getCode());
-            String sharePerk = ObjectUtil.isEmpty(sharePerkDic.getValue()) ? "0" : sharePerkDic.getValue();
-            BigDecimal sharePerkPercent = new BigDecimal(sharePerk).abs().divide(new BigDecimal(100));
-            //分享补贴金额
-            BigDecimal sharePerkAmount = amount.multiply(sharePerkPercent).setScale(2, BigDecimal.ROUND_DOWN);;
-
-            //所有合伙人补贴至消费礼包的三倍额度需要复购一次。
-            MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberUp.getId());
-            BigDecimal totalScore = mallMemberWallet.getTotalScore();
-            if(totalScore.compareTo(sharePerkAmount) < 0){
-                sharePerkAmount = totalScore;
-            }
-            if(BigDecimal.ZERO.compareTo(sharePerkAmount) < 0){
-                //减少补贴额度
-                mallMemberWalletMapper.reduceTotalScoreById(sharePerkAmount, mallMemberWallet.getId());
-
-                reduceStar(mallMemberUp.getId(),sharePerkAmount);
-
-                mallMemberWalletMapper.addBalanceById(sharePerkAmount, mallMemberWallet.getId());
-
-//                mallMoneyFlowService.addMoneyFlow(
-//                        mallMemberUp.getId(),
-//                        sharePerkAmount,
-//                        MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(),
-//                        mallOrderInfo.getOrderNo(),
-//                        "直推奖",
-//                        "补贴额度:"+totalScore,
-//                        memberId,
-//                        2,
-//                        FlowTypeEnum.BALANCE.getValue(),
-//                        1);
-            }
-        }
-        /**
-         * 星级奖励
-         *  从最顶级级别的合伙人开始补贴
-         *      补贴完,把已经补贴的合伙人加入下一个级别
-         */
-        List<MallMember> sevenLevelRecord = getStarRecord(null,  MemberLevelEnum.SEVEN_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue());
-        List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord,  MemberLevelEnum.SIX_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue());
-        List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord,  MemberLevelEnum.FIFTH_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue());
-        List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord,  MemberLevelEnum.FOUR_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue());
-        List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord,  MemberLevelEnum.THIRD_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue());
-        List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord,  MemberLevelEnum.SECOND_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue());
-
-        /**
-         * 团队补贴
-         */
-        //团队补贴百分比
-        DataDictionaryCustom teamPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                DataDictionaryEnum.TEAM_PERK.getType(),
-                DataDictionaryEnum.TEAM_PERK.getCode());
-        String teamPerk = ObjectUtil.isEmpty(teamPerkDic.getValue()) ? "0" : teamPerkDic.getValue();
-        BigDecimal teamPerkPercent = new BigDecimal(teamPerk).abs().divide(new BigDecimal(100));
-        //分享补贴金额
-        BigDecimal teamPerkAmount = amount.multiply(teamPerkPercent);
-        //团队补贴对象
-        List<MallMember> mallMemberTeamPerkList = mallMemberTeamPerkListInfo(memberId);
-        if(CollUtil.isNotEmpty(mallMemberTeamPerkList)){
-            List<Long> mallMemberTeamPerkIds = mallMemberTeamPerkList.stream().map(MallMember::getId).collect(Collectors.toList());
-            List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectMemberWalletsByIds(mallMemberTeamPerkIds);
-            flowTotalScoreBalance(
-                    mallMemberWallets,
-                    teamPerkAmount,
-                    MoneyFlowTypeEnum.TEAM_PERK.getValue(),
-                    mallOrderInfo.getOrderNo(),
-                    memberId
-            );
-        }
-
-        long end = System.currentTimeMillis();
-        log.info("============订单:{},时间:{}===========",mallOrderInfo.getOrderNo(),(end - start)/1000);
-        MallMqRecord mallMqRecord = mallMqRecordMapper.selectByOrderId(orderId);
-        if(ObjectUtil.isNotEmpty(mallMqRecord)){
-            mallMqRecord.setState(1);
-            mallMqRecordMapper.updateById(mallMqRecord);
-        }
     }
 
     /**

--
Gitblit v1.9.1