From c33c9c03bb90e49ad12fd237058c877e87e96ca4 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Mon, 24 Apr 2023 00:17:41 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java                         |    5 
 src/main/java/cc/mrbird/febs/common/enumerates/GoodsToLevelEnums.java           |   32 ++++
 src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java                 |   40 -----
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java                  |    3 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   47 ++++++
 src/main/resources/mapper/modules/MallMemberMapper.xml                          |   11 +
 src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java             |    8 
 src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelTagDicEnums.java      |   43 ++++++
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java                     |    4 
 /dev/null                                                                       |   39 -----
 src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java           |    5 
 src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java                          |    6 
 src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html          |    8 +
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java            |  101 --------------
 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java     |   25 +--
 src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html       |    9 +
 16 files changed, 179 insertions(+), 207 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/GoodsToLevelEnums.java b/src/main/java/cc/mrbird/febs/common/enumerates/GoodsToLevelEnums.java
new file mode 100644
index 0000000..9510572
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/GoodsToLevelEnums.java
@@ -0,0 +1,32 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+@Getter
+public enum GoodsToLevelEnums {
+    /**
+     * 套餐对应级别
+     */
+    VIP(1, "FIRST_LEVEL"),
+    VVIP(2, "FIFTH_LEVEL"),
+    VVVIP(3, "SIX_LEVEL");
+
+    private Integer accountLevel;
+
+    private String level;
+
+    GoodsToLevelEnums(Integer accountLevel, String level) {
+        this.accountLevel = accountLevel;
+        this.level = level;
+    }
+
+    public static String getLevelByAccountLevel(Integer accountLevel) {
+        for (GoodsToLevelEnums value : values()) {
+            if (value.accountLevel.equals(accountLevel)) {
+                return value.level;
+            }
+        }
+
+        return null;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
index b6a3c3b..00cdf65 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
@@ -7,13 +7,13 @@
 
 @Getter
 public enum MemberLevelEnum {
-    SEVEN_LEVEL("SEVEN_LEVEL",6),
-    SIX_LEVEL("SIX_LEVEL",5),
-    FIFTH_LEVEL("FIFTH_LEVEL",4),
+    SIX_LEVEL("SIX_LEVEL",999),
+    FIFTH_LEVEL("FIFTH_LEVEL",998),
     FOUR_LEVEL("FOUR_LEVEL",3),
     THIRD_LEVEL("THIRD_LEVEL",2),
     SECOND_LEVEL("SECOND_LEVEL",1),
-    ZERO_LEVEL("ZERO_LEVEL",0);
+    FIRST_LEVEL("FIRST_LEVEL",0),
+    ZERO_LEVEL("ZERO_LEVEL",-1);
 
 
     private String type;
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnums.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnums.java
deleted file mode 100644
index 7787495..0000000
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnums.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package cc.mrbird.febs.common.enumerates;
-
-import lombok.Getter;
-
-@Getter
-public enum MemberLevelEnums {
-
-    ZERO_LEVEL_Y(1, "ZERO_LEVEL", "素人")
-    ,ZERO_LEVEL_N(2, "ZERO_LEVEL", "素人")
-    ,FIRST_LEVEL_Y(1, "FIRST_LEVEL", "玉郎")
-    ,FIRST_LEVEL_N(2, "FIRST_LEVEL", "丽人")
-    ,SECOND_LEVEL_Y(1, "SECOND_LEVEL", "才子")
-    ,SECOND_LEVEL_N(2, "SECOND_LEVEL", "佳人")
-    ,THIRD_LEVEL_Y(1, "THIRD_LEVEL", "蓝颜")
-    ,THIRD_LEVEL_N(2, "THIRD_LEVEL", "红颜")
-    ,FOUR_LEVEL_Y(1, "FOUR_LEVEL", "娇娘")
-    ,FOUR_LEVEL_N(2, "FOUR_LEVEL", "贤仕");
-
-    private int male;
-
-    private String code;
-
-    private String desc;
-    MemberLevelEnums(int male, String code, String desc) {
-        this.male = male;
-        this.code = code;
-        this.desc = desc;
-    }
-
-    public static String getDesc(int male, String code) {
-        for (MemberLevelEnums value : values()) {
-            if (value.male == male && value.code.equals(code)) {
-                return value.desc;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelTagDicEnums.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelTagDicEnums.java
new file mode 100644
index 0000000..438ec68
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelTagDicEnums.java
@@ -0,0 +1,43 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+@Getter
+public enum MemberLevelTagDicEnums {
+
+    ZERO_LEVEL_Y(1, "ZERO_LEVEL", "迷梦素人")
+    ,ZERO_LEVEL_N(2, "ZERO_LEVEL", "迷梦素人")
+    ,FIRST_LEVEL_Y(1, "FIRST_LEVEL", "觉醒须眉")
+    ,FIRST_LEVEL_N(2, "FIRST_LEVEL", "觉醒丽人")
+    ,SECOND_LEVEL_Y(1, "SECOND_LEVEL", "先知蓝颜")
+    ,SECOND_LEVEL_N(2, "SECOND_LEVEL", "先知红颜")
+    ,THIRD_LEVEL_Y(1, "THIRD_LEVEL", "追影才子")
+    ,THIRD_LEVEL_N(2, "THIRD_LEVEL", "追影佳人")
+    ,FOUR_LEVEL_Y(1, "FOUR_LEVEL", "赋权玉郎")
+    ,FOUR_LEVEL_N(2, "FOUR_LEVEL", "赋权娇娘")
+    ,FIFTH_LEVEL_Y(1, "FIFTH_LEVEL", "位极尊上")
+    ,FIFTH_LEVEL_N(2, "FIFTH_LEVEL", "位极女卿")
+    ,SIX_LEVEL_Y(1, "SIX_LEVEL", "权倾圣主")
+    ,SIX_LEVEL_N(2, "SIX_LEVEL", "权倾女帝");
+
+    private int male;
+
+    private String code;
+
+    private String desc;
+    MemberLevelTagDicEnums(int male, String code, String desc) {
+        this.male = male;
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public static String getDesc(int male, String code) {
+        for (MemberLevelTagDicEnums value : values()) {
+            if (value.male == male && value.code.equals(code)) {
+                return value.desc;
+            }
+        }
+
+        return null;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
index e1f082d..086a957 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -37,6 +37,11 @@
     PARTNER_BONUS(5),
 
     /**
+     * 获得静态积分
+     */
+    BUY_TC(6),
+
+    /**
      * 提现
      */
     WITHDRAWAL(8),
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
index f27a864..bd436a2 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
@@ -139,4 +139,9 @@
      * 普通商品分红百分比
      */
     private Integer normalPer;
+
+    /**
+     * 普通商品分红百分比
+     */
+    private Integer normalBonus;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
index 520ab99..d8d9f71 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
@@ -43,10 +43,14 @@
      */
     private Integer hasSettle;
 
+    private BigDecimal staticMulti;
+
     /**
      * 1-会员 2-代理 3-股东
      */
     private Integer goodsLevel;
 
     private Integer normalPer;
+
+    private Integer normalBonus;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
index 71b3e40..02842dc 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -107,4 +107,7 @@
     List<MallMember> selectMemberAfterLevelList(String level);
 
     List<MallMember> selectAgentOrPartnetMemberList(@Param("memberLevel") Integer memberLevel);
+
+
+    Integer selectOwnCntByInviteIdAndAccountLevel(@Param("inviteId") String inviteId, @Param("accountLevel") Integer accountLevel);
 }
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..76d9a66 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
@@ -57,6 +57,9 @@
     public void autoUpAgentLevel(Long memberId) {
         log.info("###代理自动升级###");
         MallMember member = memberMapper.selectById(memberId);
+        if (MemberLevelEnum.ZERO_LEVEL.getType().equals(member.getLevel())) {
+            return;
+        }
 
         MatrixTree tree = MatrixTree.getInstance();
         MemberNode node = tree.getNode(member.getInviteId());
@@ -187,104 +190,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);
-        }
     }
 
     /**
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 4e8478d..ca6b5b4 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -192,6 +192,11 @@
                 orderItem.setSkuImage(sku.getSkuImage());
                 orderItem.setIsNormal(mallGoods.getIsNormal());
                 orderItem.setCostPrice(sku.getCostPrice());
+                orderItem.setStaticMulti(mallGoods.getStaticMulti());
+                orderItem.setGoodsLevel(mallGoods.getGoodsLevel());
+                orderItem.setNormalBonus(mallGoods.getNormalBonus());
+                orderItem.setNormalPer(mallGoods.getNormalPer());
+
 
                 total = total.add(amount);
                 carriage = carriage.add(mallGoods.getCarriage());
@@ -332,12 +337,43 @@
                 orderInfo.setPayResult("1");
                 this.baseMapper.updateById(orderInfo);
 
-                commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.BALANCE.getValue());
+                // 商品级别 会员/代理/股东
+                int goodsLevel = 0;
+                BigDecimal score = BigDecimal.ZERO;
+                for (MallOrderItem item : orderInfo.getItems()) {
+                    // 计算静态倍数
+                    if(item.getIsNormal() == 2) {
+                        score = score.add(item.getPrice().multiply(item.getStaticMulti()));
+                    }
 
-                //发送直推返利消息
-                agentProducer.sendOrderReturn(orderInfo.getId());
+                    // 判断会员层级
+                    if (item.getIsNormal() == 2 && goodsLevel > item.getGoodsLevel()) {
+                        goodsLevel = item.getGoodsLevel();
+                    }
+                }
+
+                // 根据用户购买的商品设置其等级
+                member.setLevel(GoodsToLevelEnums.getLevelByAccountLevel(goodsLevel));
+                member.setAccountLevel(goodsLevel);
+                this.memberMapper.updateById(member);
+
+                memberWalletService.add(score, member.getId(), "score");
+
+                if (orderInfo.getScoreCnt().compareTo(BigDecimal.ZERO) > 0) {
+                    int reduce = memberWalletService.reduce(orderInfo.getScoreCnt(), member.getId(), "prizeScore");
+                    if (reduce == 2) {
+                        throw new FebsException("积分不足");
+                    }
+                    mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getScoreCnt().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue());
+                }
+
+                mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.BUY_TC.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
+                mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
+
                 //发送代理自动升级消息
                 agentProducer.sendAutoLevelUpMsg(member.getId());
+                //发送直推返利消息
+                agentProducer.sendOrderReturn(orderInfo.getId());
                 break;
             case "4":
                 if (orderInfo.getOrderType() != 2) {
@@ -403,7 +439,6 @@
         map.put("orderNo", orderInfo.getOrderNo());
         map.put("orderId", orderInfo.getId());
         map.put("rcResult", rcResult);
-
         return map;
     }
 
@@ -440,6 +475,8 @@
         if (reduce == 2) {
             throw new FebsException("余额不足");
         }
+
+
         return orderInfo.getOrderNo();
     }
 
@@ -705,7 +742,7 @@
             获取单个商品的折扣积分数量
                 = 现价 * 数量 * 折扣现金比例
              */
-            BigDecimal scorePercent = new BigDecimal(mallGoods.getScorePercent()).multiply(new BigDecimal(0.01));
+            BigDecimal scorePercent = new BigDecimal(mallGoods.getScorePercent()).multiply(BigDecimal.valueOf(0.01));
             BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())).multiply(scorePercent);
             total = total.add(amount);
         }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index 9290189..5dc6e1f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -1,28 +1,14 @@
 package cc.mrbird.febs.mall.service.impl;
 
 import cc.mrbird.febs.common.enumerates.*;
-import cc.mrbird.febs.common.utils.AppContants;
-import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.common.utils.RedisUtils;
-import cc.mrbird.febs.mall.dto.ScorePoorDto;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.*;
-import cc.mrbird.febs.mall.vo.AdminTeamEqualsPerkVo;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateField;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUnit;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import io.swagger.models.auth.In;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -31,7 +17,6 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @author wzy
@@ -80,16 +65,20 @@
             log.info("积分订单无返利");
             return;
         }
-        BigDecimal indirectPer = BigDecimal.valueOf(0.2);
+        BigDecimal indirectPer = BigDecimal.valueOf(0.25);
         BigDecimal indirectPer2 = BigDecimal.valueOf(0.15);
 
         MallMember member = mallMemberMapper.selectById(orderInfo.getMemberId());
 
         // 父级会员
         MallMember parentMember = mallMemberMapper.selectInfoByInviteId(member.getReferrerId());
+        if (parentMember.getAccountLevel() == 0 || MemberLevelEnum.ZERO_LEVEL.getType().equals(parentMember.getLevel())) {
+            log.info("上级:{}未购买会员套餐,无返利", parentMember.getInviteId());
+            return;
+        }
 
         // 父级会员直推人数
-        Integer directCnt = mallMemberMapper.selectOwnCntByInviteId(parentMember.getInviteId());
+        Integer directCnt = mallMemberMapper.selectOwnCntByInviteIdAndAccountLevel(parentMember.getInviteId(), parentMember.getAccountLevel());
         List<DataDictionaryCustom> dataDices = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.DIRECT_BONUS_SETTING.getType());
 
         directCnt = directCnt == null ? 0 : directCnt;
@@ -358,7 +347,7 @@
 
         // 全网分红
         BigDecimal waitToBonus = systemSetting.getAllBonus().multiply(new BigDecimal(dic.getValue()).divide(hundred, 2, RoundingMode.HALF_UP));
-        List<MallMember> mallMembers = mallMemberMapper.selectMemberAfterLevelList(MemberLevelEnums.FIRST_LEVEL_Y.getCode());
+        List<MallMember> mallMembers = mallMemberMapper.selectMemberAfterLevelList(MemberLevelEnum.FIRST_LEVEL.getType());
         if (CollUtil.isEmpty(mallMembers) || waitToBonus.compareTo(BigDecimal.ZERO) < 1) {
             log.info("待分红金额不足或会员不足");
             return;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
index a0f4f34..926df29 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -1,8 +1,6 @@
 package cc.mrbird.febs.mall.vo;
 
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.MemberLevelEnums;
-import cn.hutool.core.util.StrUtil;
+import cc.mrbird.febs.common.enumerates.MemberLevelTagDicEnums;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -101,7 +99,7 @@
 
     public String getLevelName() {
         if (sex != null) {
-            return MemberLevelEnums.getDesc(sex, level);
+            return MemberLevelTagDicEnums.getDesc(sex, level);
         }
 
         return null;
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index 58968cb..dfd775b 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -19,7 +19,7 @@
  * @date 2021-09-25
  **/
 @Slf4j
-@Component
+//@Component
 public class AgentConsumer {
 
     @Autowired
@@ -28,11 +28,6 @@
     private IAgentService agentService;
     @Autowired
     private IMemberProfitService memberProfitService;
-
-    @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
-    public void agentReturn(Message message, Channel channel) {
-        log.info("消费者:{}", new String(message.getBody()));
-    }
 
     @RabbitListener(queues = "meye_queue_order_delay")
     public void orderCancelDelay(String id) {
@@ -53,16 +48,6 @@
         }
     }
 
-    @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY)
-    public void agentReturnMoney(String orderId) {
-        log.info("收到返利消息:{}", orderId);
-        try {
-            agentService.returnMoneyToAgent(Long.parseLong(orderId));
-        } catch (Exception e) {
-            log.error("返利异常", e);
-        }
-    }
-
     @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY)
     public void orderReturnMoney(String orderId) {
         log.info("收到订单返利消息:{}", orderId);
@@ -73,27 +58,4 @@
         }
     }
 
-    @RabbitListener(queues = QueueConstants.PERK_MONEY)
-    public void perkMoneyConsumer(String id) {
-        log.info("收到补贴消息:{}", id);
-        try {
-            agentService.perkMoneyConsumer(Long.parseLong(id));
-        } catch (Exception e) {
-            log.error("用户补贴异常", e);
-            // todo 更新表
-
-        }
-    }
-
-    @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE)
-    public void forceVoucherSaleConsumer(String price) {
-        log.info("收到强制卖出消息,价格:{}",price);
-        try {
-//            memberProfitService.selaHalfVoucher(prisce);
-        } catch (Exception e) {
-            log.error("强制卖出异常", e);
-            // todo 更新表
-
-        }
-    }
 }
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index e068693..2f24008 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -491,4 +491,15 @@
             a.account_level = 3
         </if>
     </select>
+
+    <select id="selectOwnCntByInviteIdAndAccountLevel" resultType="cc.mrbird.febs.mall.entity.MallMember">
+        select IFNULL(count(1),0) from mall_member x where x.referrer_id=#{inviteId}
+        and x.level != 'ZERO_LEVEL'
+        <if test="accountLevel == 2">
+            and x.account_level = 2
+        </if>
+        <if test="accountLevel == 3">
+            and x.accountLevel in (2, 3)
+        </if>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
index 4af0ce8..f706102 100644
--- a/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
+++ b/src/main/resources/templates/febs/views/modules/goods/goodsAddNew.html
@@ -131,6 +131,14 @@
                                                 <div class="layui-form-mid layui-word-aux">普通商品直推奖励</div>
                                             </div>
                                         </div>
+                                        <div class="layui-form-item normal-set">
+                                            <label class="layui-form-label febs-form-item-require">分红比例(%)</label>
+                                            <div class="layui-input-block">
+                                                <input type="text" name="normalPer" placeholder="请输入分红比例"
+                                                       autoComplete="off" class="layui-input">
+                                                <div class="layui-form-mid layui-word-aux">普通商品分红,输入0则不分红。</div>
+                                            </div>
+                                        </div>
                                     </div>
 
                                     <div class="layui-tab-item">
diff --git a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
index 4a7761c..56e93c3 100644
--- a/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
+++ b/src/main/resources/templates/febs/views/modules/goods/goodsUpdateNew.html
@@ -141,6 +141,15 @@
                                                 <div class="layui-form-mid layui-word-aux">普通商品直推奖励</div>
                                             </div>
                                         </div>
+
+                                        <div class="layui-form-item normal-set">
+                                            <label class="layui-form-label febs-form-item-require">分红比例(%)</label>
+                                            <div class="layui-input-block">
+                                                <input type="text" name="normalPer" placeholder="请输入分红比例"
+                                                       autoComplete="off" class="layui-input">
+                                                <div class="layui-form-mid layui-word-aux">普通商品分红,输入0则不分红。</div>
+                                            </div>
+                                        </div>
                                     </div>
 
                                     <div class="layui-tab-item">

--
Gitblit v1.9.1