From 417842b77970a8647945cff4ada68f3707f555e5 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 10 Mar 2023 16:15:21 +0800
Subject: [PATCH] 下单,余额支付,转账,分享奖,星级奖励,商品贡献值,补贴三倍回购

---
 src/main/java/cc/mrbird/febs/mall/controller/ApiScoreController.java            |   13 +
 src/test/java/cc/mrbird/febs/ProfitTest.java                                    |   32 ++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   43 +++-
 src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java             |    7 
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java  |    2 
 src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java           |   22 ++
 src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html   |   24 ++
 src/main/java/cc/mrbird/febs/mall/vo/AdminTeamEqualsPerkVo.java                 |   19 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallScoreSignRecordMapper.java         |    5 
 src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java                |    5 
 src/main/resources/mapper/modules/MallScoreSignRecordMapper.xml                 |    4 
 src/main/java/cc/mrbird/febs/mall/vo/ApiMallScoreSignRecordVo.java              |   19 +
 src/main/resources/mapper/modules/MallMoneyFlowMapper.xml                       |   14 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java               |    7 
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java        |   11 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java            |    8 
 src/main/java/cc/mrbird/febs/mall/vo/ApiScoreSetVo.java                         |   18 +
 src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java            |   21 +
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                       |    2 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java    |    2 
 src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java               |    4 
 src/main/java/cc/mrbird/febs/mall/dto/ApiMallScoreSignRecordDto.java            |   18 +
 src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java         |    3 
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java            |  220 ++++++++++++++++++++-
 src/main/resources/mapper/modules/MallMemberWalletMapper.xml                    |   27 ++
 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java     |    2 
 src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java               |    2 
 src/main/java/cc/mrbird/febs/mall/service/IScoreService.java                    |    6 
 src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java              |   17 +
 src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java                         |    6 
 30 files changed, 526 insertions(+), 57 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java
index 784c505..74e0896 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/AgentLevelEnum.java
@@ -9,17 +9,20 @@
 @Getter
 public enum AgentLevelEnum {
 
-    ZERO_LEVEL("非会员"),
-    FIRST_LEVEL("普通会员"),
-    SECOND_LEVEL("区级代理"),
-    THIRD_LEVEL("市级代理"),
-    FOUR_LEVEL("省级代理"),
-    FIFTH_LEVEL("全国总代");
+    ZERO_LEVEL("普通会员","ZERO_LEVEL"),
+    SECOND_LEVEL("一星合伙人","SECOND_LEVEL"),
+    THIRD_LEVEL("二星合伙人","THIRD_LEVEL"),
+    FOUR_LEVEL("三星合伙人","FOUR_LEVEL"),
+    FIFTH_LEVEL("四星合伙人","FIFTH_LEVEL"),
+    SIX_LEVEL("五星合伙人","SIX_LEVEL"),
+    SEVEN_LEVEL("六星合伙人","SEVEN_LEVEL");
 
 
     private String name;
+    private String code;
 
-    AgentLevelEnum(String name) {
+    AgentLevelEnum(String name,String code) {
+        this.code = code;
         this.name = name;
     }
 }
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 d6758c1..3de7868 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
@@ -12,7 +12,8 @@
     FIFTH_LEVEL("FIFTH_LEVEL",4),
     FOUR_LEVEL("FOUR_LEVEL",3),
     THIRD_LEVEL("THIRD_LEVEL",2),
-    SECOND_LEVEL("SECOND_LEVEL",1);
+    SECOND_LEVEL("SECOND_LEVEL",1),
+    ZERO_LEVEL("ZERO_LEVEL",0);
 
 
     private String type;
@@ -42,7 +43,9 @@
         return codeOne;
     }
 
-    //比较两个级别的大小,levelOne大于levelTwo返回1,否则返回0
+    /**
+     * 比较两个级别的大小,levelOne大于levelTwo返回1,否则返回0
+     */
     public int compareLevel(String levelOne ,String levelTwo) {
         int codeOne = 0;
         int codeTwo = 0;
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 0f75787..48f1881 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -133,7 +133,27 @@
     /**
      * 补贴额度
      */
-    TOTAL_SCORE(26);
+    TOTAL_SCORE(26),
+
+    /**
+     * 团队补贴明细
+     */
+    TEAM_PERK(27),
+
+    /**
+     * 平级奖励补贴
+     */
+    TEAM_EQUALS_PERK(28),
+
+    /**
+     * 线下服务中心补贴
+     */
+    OFFLINE_PERK(29),
+
+    /**
+     * 代理商补贴
+     */
+    AGENT_PERK(30);
 
     private final int value;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
index 4b29d6a..f3145df 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
@@ -3,6 +3,8 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
+import cc.mrbird.febs.mall.vo.ApiScoreSetVo;
+import cc.mrbird.febs.mall.vo.MyCommissionVo;
 import cc.mrbird.febs.mall.vo.OrderDetailVo;
 import cc.mrbird.febs.mall.vo.OrderListVo;
 import io.swagger.annotations.Api;
@@ -32,6 +34,15 @@
 
     private final IApiMallOrderInfoService mallOrderInfoService;
 
+    @ApiOperation(value = "我的权益")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "success", response = ApiScoreSetVo.class)
+    )
+    @PostMapping(value = "/myScoreSet")
+    public FebsResponse myScoreSet() {
+        return new FebsResponse().success().data(mallOrderInfoService.myScoreSet());
+    }
+
     @ApiOperation(value = "判断是否允许创建订单", notes = "判断是否允许创建订单")
     @PostMapping(value = "/judgeCreateOrder")
     public FebsResponse judgeCreateOrder(@RequestBody AddOrderDto addOrderDto) {
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiScoreController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiScoreController.java
index 168bda1..6542390 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiScoreController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiScoreController.java
@@ -1,8 +1,12 @@
 package cc.mrbird.febs.mall.controller;
 
 import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.ApiMallScoreSignRecordDto;
+import cc.mrbird.febs.mall.dto.OrderListDto;
 import cc.mrbird.febs.mall.service.ICommonService;
 import cc.mrbird.febs.mall.service.IScoreService;
+import cc.mrbird.febs.mall.vo.ApiMallScoreSignRecordVo;
+import cc.mrbird.febs.mall.vo.OrderListVo;
 import cc.mrbird.febs.mall.vo.ScoreSignVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -44,4 +48,13 @@
         scoreService.sign();
         return new FebsResponse().success();
     }
+
+    @ApiOperation(value = "签到列表", notes = "签到列表")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiMallScoreSignRecordVo.class)
+    })
+    @PostMapping(value = "/signRecordList")
+    public FebsResponse signRecordList(@RequestBody ApiMallScoreSignRecordDto apiMallScoreSignRecordDto) {
+        return new FebsResponse().success().data(scoreService.findMallScoreSignRecordList(apiMallScoreSignRecordDto));
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiMallScoreSignRecordDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiMallScoreSignRecordDto.java
new file mode 100644
index 0000000..862a222
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiMallScoreSignRecordDto.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMallScoreSignRecordDto", description = "签到记录请求类")
+public class ApiMallScoreSignRecordDto {
+    @ApiModelProperty(value = "一页数量", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "第几页", example = "1")
+    private Integer pageNum;
+
+    @ApiModelProperty(hidden = true)
+    private Long memberId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
index 1f9a1d0..2565786 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
@@ -28,9 +28,15 @@
 
     BigDecimal selectSumCommission();
 
-    List<MallMemberWallet> selectSumStarByIds(@Param("list")List<Long> ids);
+    List<MallMemberWallet> selectMemberWalletsByIds(@Param("list")List<Long> ids);
 
     int updateStarByList(@Param("list")List<Map<String, Object>> result);
 
     int updateTotalScoreByList(@Param("list")List<Map<String, Object>> resultReduce);
+
+    void reduceTotalScoreById(@Param("totalScore")BigDecimal sharePerkAmount, @Param("id")Long id);
+
+    void addBalanceById(@Param("balance")BigDecimal sharePerkAmount, @Param("id")Long id);
+
+    void addStarByMemberId(@Param("star")Integer starSum,  @Param("memberId")Long memberId);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
index 32c1f62..84581f5 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -5,10 +5,7 @@
 import cc.mrbird.febs.mall.dto.MoneyFlowListDto;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallMoneyFlow;
-import cc.mrbird.febs.mall.vo.AdminMallMoneyFlowVo;
-import cc.mrbird.febs.mall.vo.AdminMoneyChargeListVo;
-import cc.mrbird.febs.mall.vo.AdminMoneyFlowListVo;
-import cc.mrbird.febs.mall.vo.MoneyFlowVo;
+import cc.mrbird.febs.mall.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -39,4 +36,6 @@
     BigDecimal selectThankfulCommission(@Param("date") Date date, @Param("memberId") Long memberId);
 
     void insertMoneyFlow(MallMoneyFlow mallMoneyFlow);
+
+    List<AdminTeamEqualsPerkVo> selectTeamEqualsMemberByDate(@Param("date") Date date);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreSignRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreSignRecordMapper.java
index e4be297..9a788c6 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreSignRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreSignRecordMapper.java
@@ -1,10 +1,15 @@
 package cc.mrbird.febs.mall.mapper;
 
+import cc.mrbird.febs.mall.dto.ApiMallScoreSignRecordDto;
 import cc.mrbird.febs.mall.entity.MallScoreSignRecord;
+import cc.mrbird.febs.mall.vo.ApiMallScoreSignRecordVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 
 public interface MallScoreSignRecordMapper extends BaseMapper<MallScoreSignRecord> {
 
     MallScoreSignRecord selectRecentSignRecord(@Param("memberId") Long memberId);
+
+    IPage<ApiMallScoreSignRecordVo> selectApiOrderListInPage(IPage<ApiMallScoreSignRecordVo> page, @Param("record") ApiMallScoreSignRecordDto apiMallScoreSignRecordDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
index c9e2e26..a4e5b90 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
@@ -3,6 +3,7 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.vo.ApiScoreSetVo;
 import cc.mrbird.febs.mall.vo.OrderDetailVo;
 import cc.mrbird.febs.mall.vo.OrderListVo;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -37,4 +38,6 @@
     FebsResponse bangCardSign(BangCardSignDto bangCardSignDto);
 
     boolean judgeCreateOrder(AddOrderDto addOrderDto);
+
+    ApiScoreSetVo myScoreSet();
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IScoreService.java b/src/main/java/cc/mrbird/febs/mall/service/IScoreService.java
index 13fa00d..5cb2a85 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IScoreService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IScoreService.java
@@ -1,7 +1,11 @@
 package cc.mrbird.febs.mall.service;
 
+import cc.mrbird.febs.mall.dto.ApiMallScoreSignRecordDto;
 import cc.mrbird.febs.mall.entity.MallScoreSignRecord;
+import cc.mrbird.febs.mall.vo.ApiMallScoreSignRecordVo;
 import cc.mrbird.febs.mall.vo.ScoreSignVo;
+
+import java.util.List;
 
 public interface IScoreService {
 
@@ -10,4 +14,6 @@
     void sign();
 
     MallScoreSignRecord judgeScoreIsContinuity(MallScoreSignRecord mallScoreSignRecord);
+
+    List<ApiMallScoreSignRecordVo> findMallScoreSignRecordList(ApiMallScoreSignRecordDto apiMallScoreSignRecordDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index b9e686b..c6e98d3 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -359,7 +359,7 @@
         if(StrUtil.isEmpty(level) || !AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())){
             return new FebsResponse().fail().message("该用户无法激活");
         }
-        mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+        mallMember.setLevel(AgentLevelEnum.SECOND_LEVEL.name());
         mallMemberMapper.updateById(mallMember);
         return new FebsResponse().success();
     }
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 3fce202..e253eae 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,19 @@
 package cc.mrbird.febs.mall.service.impl;
 
 import cc.mrbird.febs.common.enumerates.*;
+import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.*;
+import cc.mrbird.febs.mall.vo.AdminMallMoneyFlowVo;
+import cc.mrbird.febs.mall.vo.AdminTeamEqualsPerkVo;
 import cc.mrbird.febs.system.mapper.UserMapper;
 import cn.hutool.core.collection.CollUtil;
 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 lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.session.ExecutorType;
@@ -21,10 +25,7 @@
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -45,6 +46,7 @@
     private final MallMemberWalletMapper mallMemberWalletMapper;
     private final SqlSessionTemplate sqlSessionTemplate;
     private final IApiMallMemberWalletService memberWalletService;
+    private final MallMoneyFlowMapper mallMoneyFlowMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -170,6 +172,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void perkMoneyConsumer(long orderId) {
+        long start = System.currentTimeMillis();
         MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
         if(ObjectUtil.isEmpty(mallOrderInfo)){
             return;
@@ -180,7 +183,7 @@
         /**
          * 分享补贴 直推消费额10%
          */
-        BigDecimal amount = mallOrderInfo.getAmount();
+        BigDecimal amount = mallOrderInfo.getAmount().subtract(mallOrderInfo.getScoreAmount());
 
         Long memberId = mallOrderInfo.getMemberId();
         MallMember mallMember = memberMapper.selectById(memberId);
@@ -194,7 +197,7 @@
             String sharePerk = ObjectUtil.isEmpty(sharePerkDic.getValue()) ? "0" : sharePerkDic.getValue();
             BigDecimal sharePerkPercent = new BigDecimal(sharePerk).abs().divide(new BigDecimal(100));
             //分享补贴金额
-            BigDecimal sharePerkAmount = amount.multiply(sharePerkPercent);
+            BigDecimal sharePerkAmount = amount.multiply(sharePerkPercent).setScale(2, BigDecimal.ROUND_DOWN);;
 
             //所有合伙人补贴至消费礼包的三倍额度需要复购一次。
             MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberUp.getId());
@@ -204,9 +207,9 @@
             }
             if(BigDecimal.ZERO.compareTo(sharePerkAmount) < 0){
                 //减少补贴额度
-                memberWalletService.reduce(sharePerkAmount, memberId, "totalScore");
+                mallMemberWalletMapper.reduceTotalScoreById(sharePerkAmount, mallMemberWallet.getId());
 
-                iApiMallMemberWalletService.addBalance(sharePerkAmount, mallMemberUp.getId());
+                mallMemberWalletMapper.addBalanceById(sharePerkAmount, mallMemberWallet.getId());
 
                 mallMoneyFlowService.addMoneyFlow(
                         mallMemberUp.getId(),
@@ -228,10 +231,84 @@
         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);
     }
 
     /**
-     *
+     * 下单人所在团队里面的已经存在的各个等级的会员集合里面的第一个会员获取2%
+     */
+    public List<MallMember> mallMemberTeamPerkListInfo(Long memberId){
+        List<MallMember> mallMemberTeamPerk = new ArrayList<>();
+        MallMember mallMember = memberMapper.selectById(memberId);
+        List<String> ids = StrUtil.split(mallMember.getReferrerIds(), ',');
+        if(CollUtil.isNotEmpty(ids)){
+            List<MallMember> mallMembers = memberMapper.selectByInviteIds(ids);
+            /**
+             * 根据等级分组,获取对应的<级别,会员数组>map
+             */
+            Map<String, List<MallMember>> collect = mallMembers.stream().collect(Collectors.groupingBy(MallMember::getLevel));
+            Set<String> set = collect.keySet(); // 得到所有key的集合
+            for (String key : set) {
+                List<MallMember> value = collect.get(key);
+                mallMemberTeamPerk.add(value.get(0));
+            }
+        }
+
+        return mallMemberTeamPerk;
+    }
+    /**
+     * 递归获取对应的团队补贴对象
+     * 下单
+     *  下单人的上级集合里面每个等级的第一个会员
+     * @param memberId
+     * @param mallMemberTeamPerk
+     * @return
+     */
+    public List<MallMember> mallMemberTeamPerkList(Long memberId,List<MallMember> mallMemberTeamPerk){
+        MallMember mallMember = memberMapper.selectById(memberId);
+        if(ObjectUtil.isEmpty(mallMember.getReferrerId())){
+            return mallMemberTeamPerk;
+        }
+        String referrerId = mallMember.getReferrerId();
+        MallMember mallMemberParent = memberMapper.selectInfoByInviteId(referrerId);
+
+        if(MemberLevelEnum.SECOND_LEVEL.compareLevel(mallMemberParent.getLevel(),mallMember.getLevel()) > 0){
+            mallMemberTeamPerk.add(mallMemberParent);
+        }
+        if(!referrerId.equals(mallMember.getInviteId())){
+            mallMemberTeamPerkList(mallMemberParent.getId(),mallMemberTeamPerk);
+        }
+        return mallMemberTeamPerk;
+    }
+
+    /**
+     * 星级奖励
      * @param mallMembersOlds 高一级别的用户
      * @param LevelParam    当前级别
      * @param amount    补贴金额的基数
@@ -240,7 +317,7 @@
      * @return
      */
     public List<MallMember> getStarRecord(List<MallMember> mallMembersOlds,String LevelParam,BigDecimal amount,String orderNo,Long memberId,int starPerkType){
-        long start = System.currentTimeMillis();
+
         //根据用户的level获取用户
         List<MallMember> mallMemberStars = memberMapper.selectMemberWithLevel(LevelParam);
         if(CollUtil.isNotEmpty(mallMembersOlds)){
@@ -252,7 +329,7 @@
 
             List<Long> mallMemberStarIds = mallMemberStars.stream().map(MallMember::getId).collect(Collectors.toList());
             //当前等级的总贡献点
-            List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectSumStarByIds(mallMemberStarIds);
+            List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectMemberWalletsByIds(mallMemberStarIds);
             Integer starSum = mallMemberWallets.stream().mapToInt(MallMemberWallet::getStar).sum();
             //星级补贴比例
             DataDictionaryCustom starPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
@@ -336,8 +413,125 @@
                 }
             }
         }
-        long end = System.currentTimeMillis();
-        log.info("============订单:{},时间:{}===========",orderNo,(end - start)/1000);
         return mallMemberStars;
     }
+
+    /**
+     * 统一处理补贴,流水,余额
+     *      增加的余额是一样的
+     * @param mallMemberWallets
+     * @param amount
+     * @param flowType
+     * @param orderNo
+     * @param memberId
+     */
+    public void flowTotalScoreBalance(List<MallMemberWallet> mallMemberWallets,BigDecimal amount,int flowType,String orderNo,Long memberId){
+        //给当前等级的每个用户发放星级奖励
+        int count = 0;
+        List<Map<String,Object>> result = new ArrayList<>();
+        List<Map<String,Object>> resultReduce = new ArrayList<>();
+        List<MallMoneyFlow> mallMoneyFlows = new ArrayList<>();
+        for(MallMemberWallet mallMemberWallet : mallMemberWallets){
+            Map<String,Object> hashMap = new HashMap<>();
+            BigDecimal totalScorePerk = mallMemberWallet.getTotalScore();
+            if(totalScorePerk.compareTo(amount) < 0){
+                amount = totalScorePerk;
+            }
+            if(BigDecimal.ZERO.compareTo(amount) < 0){
+                hashMap.put("id",mallMemberWallet.getId());
+                hashMap.put("starPerkAmount",amount);
+                result.add(hashMap);
+                resultReduce.add(hashMap);
+                //生成星级奖励的流水对象
+                MallMoneyFlow mallMoneyFlow = new MallMoneyFlow();
+                mallMoneyFlow.setMemberId(mallMemberWallet.getMemberId());
+                mallMoneyFlow.setAmount(amount);
+                mallMoneyFlow.setType(flowType);
+                mallMoneyFlow.setOrderNo(orderNo);
+                mallMoneyFlow.setRtMemberId(memberId);
+                mallMoneyFlow.setStatus(2);
+                mallMoneyFlow.setFlowType(FlowTypeEnum.BALANCE.getValue());
+                mallMoneyFlows.add(mallMoneyFlow);
+            }
+            count = count + 1;
+            if (count % 1000 == 0 || count == mallMemberWallets.size()) {
+                if(CollUtil.isNotEmpty(result)){
+                    int resultCount = mallMemberWalletMapper.updateStarByList(result);
+                    if(resultCount>0){
+                        log.info("============余额新增============第{}条数据===========",resultCount);
+                    }
+                    //每更新完一批数据,在result内进行删除操作。
+                    result.clear();
+
+                    int resultReduceCount = mallMemberWalletMapper.updateTotalScoreByList(resultReduce);
+                    if(resultReduceCount>0){
+                        log.info("============额度减少============第{}条数据===========",resultReduceCount);
+                    }
+                    //每更新完一批数据,在result内进行删除操作。
+                    resultReduce.clear();
+                }
+            }
+        }
+        if(CollUtil.isNotEmpty(mallMoneyFlows)){
+            SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH,false);
+            MallMoneyFlowMapper mallMoneyFlowMapper = sqlSession.getMapper(MallMoneyFlowMapper.class);
+
+            for(int i = 1; i <= mallMoneyFlows.size(); i++){
+                mallMoneyFlowMapper.insertMoneyFlow(mallMoneyFlows.get(i-1));
+                if (i % 1000 == 0 || i == mallMoneyFlows.size()) {
+                    log.info("============插入流水============第{}条数据===========",mallMoneyFlows.size());
+                    sqlSession.commit();
+                    sqlSession.clearCache();
+                }
+            }
+            sqlSession.close();
+        }
+    }
+
+    /**
+     * 平级奖励补贴
+     */
+    public void getPeerPerk(){
+        /**
+         * 全体用户
+         *      对象:产生了收益的用户的直属上级
+         *      条件:等级和用户等级一样
+         *      补贴:每日补贴的10%,例如用户当日的补贴总额为100,直属上级拿100*10%=10,
+         *      限制:直推收益除外。
+         */
+        //平级补贴百分比
+        DataDictionaryCustom teamEqualsPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.TEAM_EQUALS_PERK.getType(),
+                DataDictionaryEnum.TEAM_EQUALS_PERK.getCode());
+        BigDecimal teamEqualsPerkPercent = new BigDecimal(teamEqualsPerkDic.getValue()).abs().multiply(BigDecimal.valueOf(0.01));
+
+        //产生了收益的用户和直属上级
+        List<AdminTeamEqualsPerkVo> adminTeamEqualsPerkVos = mallMoneyFlowMapper.selectTeamEqualsMemberByDate(new Date());
+        if(CollUtil.isNotEmpty(adminTeamEqualsPerkVos)){
+            for(AdminTeamEqualsPerkVo adminTeamEqualsPerkVo : adminTeamEqualsPerkVos){
+                BigDecimal sumAmount = adminTeamEqualsPerkVo.getSumAmount();
+                //平级补贴
+                BigDecimal teamEqualsPerkAmount = teamEqualsPerkPercent.multiply(sumAmount).setScale(2, BigDecimal.ROUND_DOWN);
+
+                MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(adminTeamEqualsPerkVo.getRtMemberId());
+                BigDecimal totalScore = mallMemberWallet.getTotalScore();
+                if(totalScore.compareTo(teamEqualsPerkAmount) < 0){
+                    teamEqualsPerkAmount = totalScore;
+                }
+                if(BigDecimal.ZERO.compareTo(teamEqualsPerkAmount) < 0){
+                //减少补贴额度
+                mallMemberWalletMapper.reduceTotalScoreById(teamEqualsPerkAmount, mallMemberWallet.getId());
+
+                mallMemberWalletMapper.addBalanceById(teamEqualsPerkAmount, mallMemberWallet.getId());
+
+                mallMoneyFlowService.addMoneyFlow(
+                        adminTeamEqualsPerkVo.getRtMemberId(),
+                        teamEqualsPerkAmount,
+                        MoneyFlowTypeEnum.TEAM_EQUALS_PERK.getValue(),
+                        MallUtils.getOrderNum("TEP"),
+                        FlowTypeEnum.BALANCE.getValue());
+                }
+            }
+        }
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 719da23..5ca503d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -114,7 +114,7 @@
         mallMember.setName(registerDto.getName());
         mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE);
         mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
-        mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name());
+        mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode());
         mallMember.setSex("男");
         mallMember.setBindPhone(registerDto.getAccount());
 
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 1a86fd2..7004685 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
@@ -14,10 +14,7 @@
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.*;
-import cc.mrbird.febs.mall.vo.ApiShopApplyVo;
-import cc.mrbird.febs.mall.vo.OrderDetailVo;
-import cc.mrbird.febs.mall.vo.OrderListVo;
-import cc.mrbird.febs.mall.vo.OrderRefundVo;
+import cc.mrbird.febs.mall.vo.*;
 import cc.mrbird.febs.pay.model.AgreementPayDto;
 import cc.mrbird.febs.pay.model.AgreementSignDto;
 import cc.mrbird.febs.pay.model.UnipayDto;
@@ -42,6 +39,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.text.DecimalFormat;
 import java.util.*;
 
@@ -79,6 +77,7 @@
     private final MallShopApplyMapper mallShopApplyMapper;
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final MallAchieveRecordMapper mallAchieveRecordMapper;
+    private final MallMemberWalletMapper mallMemberWalletMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -349,9 +348,9 @@
                 orderInfo.setPayTime(new Date());
                 orderInfo.setPayResult("1");
 
-                changeWallet(orderInfo.getId(), member.getId());
-
-                agentProducer.sendAutoLevelUpMsg(member.getId());
+                changeWallet(orderInfo.getId());
+                //发送补贴消息
+                agentProducer.sendPerkMoneyMsg(orderInfo.getId());
 //                agentProducer.sendOrderReturn(orderInfo.getId());
                 break;
             case "4":
@@ -431,10 +430,10 @@
      *      增加贡献值,增加流水
      *      产生一条业绩记录
      * @param orderId
-     * @param memberId
      */
-    public void changeWallet(Long orderId,Long memberId){
+    public void changeWallet(Long orderId){
         MallOrderInfo orderInfo = this.baseMapper.selectById(orderId);
+        Long memberId = orderInfo.getMemberId();
         boolean hasTc = false;
         //总贡献值
         BigDecimal starSum = BigDecimal.ZERO;
@@ -453,7 +452,7 @@
                  */
                 if (mallGoods.getIsNormal() == 2) {
                     hasTc = true;
-                    BigDecimal star = mallGoods.getStar();
+                    BigDecimal star = mallGoods.getStar()==null ? BigDecimal.ZERO : mallGoods.getStar();
                     starSum = starSum.add(star);
                     scoreSum = scoreSum.add(
                             new BigDecimal(mallGoods.getPresentPrice())
@@ -466,7 +465,7 @@
              * 增加贡献值,增加流水
              */
             if (starSum.compareTo(BigDecimal.ZERO) > 0) {
-                memberWalletService.add(starSum, memberId, "star");
+                mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId);
                 mallMoneyFlowService.addMoneyFlow(
                         memberId,
                         starSum,
@@ -834,7 +833,7 @@
         BigDecimal score = ObjectUtil.isEmpty(addOrderDto.getScore()) ? BigDecimal.ZERO : addOrderDto.getScore();
         if(ObjectUtil.isNotEmpty(scorePercentDic)){
             //商品的现金折扣比例
-            BigDecimal scorePercent = new BigDecimal(scorePercentDic.getValue()).divide(new BigDecimal(100), BigDecimal.ROUND_DOWN);
+            BigDecimal scorePercent = new BigDecimal(scorePercentDic.getValue()).multiply(BigDecimal.valueOf(0.01));
             //最大折扣金额对应需要的总积分数目
             BigDecimal scorePercentMaxAmount = total.multiply(scorePercent);
             BigDecimal scoreChange = BigDecimal.ONE;
@@ -843,7 +842,9 @@
             }
             scorePercentMaxAmount = scorePercentMaxAmount.multiply(scoreChange);
             if(scorePercentMaxAmount.compareTo(score) < 0){
-                return false;
+                flag = false;
+            }else{
+                flag = true;
             }
         }else{
             flag = true;
@@ -851,4 +852,20 @@
         return flag;
     }
 
+    @Override
+    public ApiScoreSetVo myScoreSet() {
+        ApiScoreSetVo apiScoreSetVo = new ApiScoreSetVo();
+        DataDictionaryCustom scorePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.SCORE_PERCENT.getType(),
+                DataDictionaryEnum.SCORE_PERCENT.getCode()
+        );
+        DataDictionaryCustom scoreChangeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.SCORE_CHANGE.getType(),
+                DataDictionaryEnum.SCORE_CHANGE.getCode()
+        );
+        apiScoreSetVo.setScorePercent(new BigDecimal(scorePercentDic.getValue()).multiply(BigDecimal.valueOf(0.01)).setScale(2,BigDecimal.ROUND_DOWN));
+        apiScoreSetVo.setScoreChange(new BigDecimal(scoreChangeDic.getValue()).setScale(2,BigDecimal.ROUND_DOWN));
+        return apiScoreSetVo;
+    }
+
 }
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 b40eef9..b93bc9e 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
@@ -284,7 +284,7 @@
         DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.AGENT_BONUS.getType(), DataDictionaryEnum.AGENT_BONUS.getCode());
         BigDecimal profit = totalIncome.multiply(new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
 
-        List<MallMember> agentMembers = mallMemberMapper.selectByIdAndNoLevel(null, AgentLevelEnum.FIRST_LEVEL.name());
+        List<MallMember> agentMembers = mallMemberMapper.selectByIdAndNoLevel(null, AgentLevelEnum.SECOND_LEVEL.name());
         if (CollUtil.isEmpty(agentMembers)) {
             return;
         }
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 78bcdad..22159cc 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
@@ -5,23 +5,25 @@
 import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion;
+import cc.mrbird.febs.mall.dto.ApiMallScoreSignRecordDto;
 import cc.mrbird.febs.mall.dto.ScoreSettingDto;
-import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
-import cc.mrbird.febs.mall.entity.MallMember;
-import cc.mrbird.febs.mall.entity.MallMemberWallet;
-import cc.mrbird.febs.mall.entity.MallScoreSignRecord;
+import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
 import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper;
 import cc.mrbird.febs.mall.mapper.MallScoreSignRecordMapper;
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
 import cc.mrbird.febs.mall.service.IScoreService;
+import cc.mrbird.febs.mall.vo.ApiMallScoreSignRecordVo;
 import cc.mrbird.febs.mall.vo.ScoreSignVo;
 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 com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -29,6 +31,7 @@
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author wzy
@@ -77,6 +80,16 @@
     }
 
     @Override
+    public List<ApiMallScoreSignRecordVo> findMallScoreSignRecordList(ApiMallScoreSignRecordDto apiMallScoreSignRecordDto) {
+
+        MallMember member = LoginUserUtil.getLoginUser();
+        IPage<ApiMallScoreSignRecordVo> page = new Page<>(apiMallScoreSignRecordDto.getPageNum(), apiMallScoreSignRecordDto.getPageSize());
+        apiMallScoreSignRecordDto.setMemberId(member.getId());
+        IPage<ApiMallScoreSignRecordVo> apiMallScoreSignRecordVos = mallScoreSignRecordMapper.selectApiOrderListInPage(page, apiMallScoreSignRecordDto);
+        return apiMallScoreSignRecordVos.getRecords();
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void sign() {
         MallMember member = LoginUserUtil.getLoginUser();
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminTeamEqualsPerkVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminTeamEqualsPerkVo.java
new file mode 100644
index 0000000..f98791e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminTeamEqualsPerkVo.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "AdminTeamEqualsPerkVo", description = "信息返回类")
+public class AdminTeamEqualsPerkVo {
+
+    private Long memberId;
+
+    private BigDecimal sumAmount;
+
+    private Long rtMemberId;
+
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallScoreSignRecordVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallScoreSignRecordVo.java
new file mode 100644
index 0000000..c24aa87
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallScoreSignRecordVo.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "ApiMallScoreSignRecordVo", description = "返回参数类")
+public class ApiMallScoreSignRecordVo {
+
+    @ApiModelProperty(value = "获得积分")
+    private Integer score;
+
+    @ApiModelProperty(value = "签到时间")
+    private Date signTime;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiScoreSetVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiScoreSetVo.java
new file mode 100644
index 0000000..2378879
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiScoreSetVo.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiScoreSetVo", description = "积分使用规则")
+public class ApiScoreSetVo {
+
+    @ApiModelProperty(value = "积分设置-积分抵扣现金比例,设置50,即商品价格1000,积分可抵扣的最大金额为500")
+    private BigDecimal scorePercent;
+
+    @ApiModelProperty(value = "积分设置-积分兑换现金比例,设置1,则1积分等于1元,设置2,则2积分等于1元")
+    private BigDecimal scoreChange;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
index a1ffa18..f3b18a8 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
@@ -90,5 +90,11 @@
 
     @ApiModelProperty(value = "门店信息")
     private ApiShopApplyVo apiShopApplyVo;
+
+    @ApiModelProperty(value = "积分折扣金额")
+    private BigDecimal scoreAmount;
+
+    @ApiModelProperty(value = "积分数量")
+    private BigDecimal scoreCnt;
 }
 
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
index e26ca2d..d3a7a68 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
@@ -131,7 +131,7 @@
                     MallMember mallMember = memberMapper.selectById(orderInfo.getMemberId());
                     if (hasTc) {
                         if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) {
-                            mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+                            mallMember.setLevel(AgentLevelEnum.SECOND_LEVEL.name());
                             memberMapper.updateById(mallMember);
                         }
                     }
@@ -244,7 +244,7 @@
                     MallMember mallMember = memberMapper.selectById(orderInfo.getMemberId());
                     if (hasTc) {
                         if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) {
-                            mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+                            mallMember.setLevel(AgentLevelEnum.SECOND_LEVEL.name());
                             memberMapper.updateById(mallMember);
                         }
                     }
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
index 3883bcb..9dd00de 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
@@ -95,7 +95,7 @@
 
         MallMember member = memberService.getById(orderInfo.getMemberId());
         if (AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())) {
-            member.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+            member.setLevel(AgentLevelEnum.SECOND_LEVEL.name());
             memberService.updateById(member);
         }
 
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
index 0ddb24b..1b9a1e9 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -76,4 +76,9 @@
         log.info("发送返利消息:{}", orderId);
         rabbitTemplate.convertAndSend(RabbitQueueEnum.AGENT_REUTRN_MONEY.getExchange(), RabbitQueueEnum.AGENT_REUTRN_MONEY.getRoute(), orderId);
     }
+
+    public void sendPerkMoneyMsg(Long orderId) {
+        log.info("发送补贴消息:{}", orderId);
+        rabbitTemplate.convertAndSend(RabbitQueueEnum.PERK_MONEY.getExchange(), RabbitQueueEnum.PERK_MONEY.getRoute(), orderId);
+    }
 }
diff --git a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
index b988a31..36a38eb 100644
--- a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
@@ -67,7 +67,7 @@
         select ifnull(sum(commission),0) total from mall_member_wallet
     </select>
 
-    <select id="selectSumStarByIds" resultType="cc.mrbird.febs.mall.entity.MallMemberWallet">
+    <select id="selectMemberWalletsByIds" resultType="cc.mrbird.febs.mall.entity.MallMemberWallet">
         select * from mall_member_wallet
         where  member_id IN
         <foreach collection = "list" item = "item"  separator=","  open = "(" close = ")" >
@@ -95,4 +95,29 @@
         </foreach>
     </update>
 
+    <update id="reduceTotalScoreById">
+            update mall_member_wallet
+            <set>
+                total_score = total_score - #{totalScore},
+            </set>
+            WHERE id =  #{id}
+    </update>
+
+    <update id="addBalanceById">
+            update mall_member_wallet
+            <set>
+                balance = balance + #{balance},
+            </set>
+            WHERE id =  #{id}
+    </update>
+
+    <update id="addStarByMemberId">
+            update mall_member_wallet
+            <set>
+                star = star + #{star},
+            </set>
+            WHERE member_id =  #{memberId}
+    </update>
+
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index 4fa7a82..b75de2d 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -162,4 +162,18 @@
                     #{flowType}
                 )
     </insert>
+
+    <select id="selectTeamEqualsMemberByDate" resultType="cc.mrbird.febs.mall.vo.AdminTeamEqualsPerkVo">
+        select
+               a.member_id memberId,
+               sum(a.amount) amount sumAmount,
+               c.id rtMemberId
+        from mall_money_flow a
+        inner join mall_member b on b.id = a.member_id
+        inner join mall_member c on c.invite_id = b.referrer_id and c.level = b.level
+        where
+              a.type in (1, 2)
+          and date_format(a.created_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
+        group by a.member_id;
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index a16b8d7..8316f7d 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -112,6 +112,8 @@
         <result column="del_flag" property="delFlag" />
         <result column="deliver_type" property="deliverType" />
         <result column="shop_id" property="shopId" />
+        <result column="score_amount" property="scoreAmount" />
+        <result column="score_cnt" property="scoreCnt" />
         <collection property="items" ofType="cc.mrbird.febs.mall.entity.MallOrderItem">
             <id property="id" column="item_id" />
             <result property="orderId" column="order_id" />
diff --git a/src/main/resources/mapper/modules/MallScoreSignRecordMapper.xml b/src/main/resources/mapper/modules/MallScoreSignRecordMapper.xml
index 669a566..3be6097 100644
--- a/src/main/resources/mapper/modules/MallScoreSignRecordMapper.xml
+++ b/src/main/resources/mapper/modules/MallScoreSignRecordMapper.xml
@@ -10,4 +10,8 @@
         where member_id=#{memberId} order by id desc limit 1
     </select>
 
+    <select id="selectApiOrderListInPage" resultType="cc.mrbird.febs.mall.vo.ApiMallScoreSignRecordVo">
+        select score,sign_time from mall_score_sign_record where member_id = #{record.memberId}
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
index 48d958e..7db8243 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
@@ -159,6 +159,30 @@
                                 return '<span>抽奖</span>'
                             }else if (d.type === 18) {
                                 return '<span>积分池收益</span>'
+                            }else if (d.type === 19) {
+                                return '<span>1星合伙人补贴</span>'
+                            }else if (d.type === 20) {
+                                return '<span>2星合伙人补贴</span>'
+                            }else if (d.type === 21) {
+                                return '<span>3星合伙人补贴</span>'
+                            }else if (d.type === 22) {
+                                return '<span>4星合伙人补贴</span>'
+                            }else if (d.type === 23) {
+                                return '<span>5星合伙人补贴</span>'
+                            }else if (d.type === 24) {
+                                return '<span>6星合伙人补贴</span>'
+                            }else if (d.type === 25) {
+                                return '<span>贡献点</span>'
+                            }else if (d.type === 26) {
+                                return '<span>补贴额度</span>'
+                            }else if (d.type === 27) {
+                                return '<span>团队补贴</span>'
+                            }else if (d.type === 28) {
+                                return '<span>平级奖励补贴</span>'
+                            }else if (d.type === 29) {
+                                return '<span>线下服务中心补贴</span>'
+                            }else if (d.type === 30) {
+                                return '<span>代理商补贴</span>'
                             }else{
                                 return ''
                             }
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index 8e52d58..178b4e6 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -2,7 +2,9 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.utils.MallUtils;
+import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallOrderItem;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
 import cc.mrbird.febs.mall.mapper.MallOrderItemMapper;
 import cc.mrbird.febs.mall.quartz.OrderSettlementJob;
@@ -13,16 +15,16 @@
 import cc.mrbird.febs.pay.service.UnipayService;
 import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author wzy
@@ -40,9 +42,29 @@
     @Autowired
     private IMemberProfitService memberProfitService;
 
+    @Autowired
+    private MallMemberMapper memberMapper;
+
     @Test
     public void dynamicProfit() {
-        agentService.perkMoneyConsumer(Long.parseLong("571"));
+//        agentService.perkMoneyConsumer(Long.parseLong("571"));
+        List<MallMember> mallMemberTeamPerk = new ArrayList<>();
+        MallMember mallMember = memberMapper.selectById(233L);
+        List<String> ids = StrUtil.split(mallMember.getReferrerIds(), ',');
+        List<MallMember> mallMembers = memberMapper.selectByInviteIds(ids);
+        Map<String, List<MallMember>> collect = mallMembers.stream().collect(Collectors.groupingBy(MallMember::getLevel));
+        Set<String> set = collect.keySet(); // 得到所有key的集合
+        for (String key : set) {
+            List<MallMember> value = collect.get(key);
+            System.out.println(key + " " + value);
+            mallMemberTeamPerk.add(value.get(0));
+
+            System.out.println(value.get(0).getName());
+
+        }
+        List<Long> mallMemberStarIds = mallMemberTeamPerk.stream().map(MallMember::getId).collect(Collectors.toList());
+
+        System.out.println(mallMemberStarIds);
     }
     @Test
     public void agentProfit() {

--
Gitblit v1.9.1