From 21fee5d76f3af3da1c379599ed3f68c534b869e6 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 13 May 2025 14:42:04 +0800
Subject: [PATCH] feat(mall): 新增我的推广相关功能

---
 src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleListInfoVo.java           |   27 +++
 src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java              |   20 ++
 src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java    |    4 
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java             |    8 
 src/main/java/cc/mrbird/febs/mall/dto/sale/ApiTeamListInfoDto.java         |   29 +++
 src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleInfoVo.java               |   52 +++++
 src/main/resources/mapper/modules/MallMemberMapper.xml                     |   69 +++++++
 src/main/java/cc/mrbird/febs/mall/vo/sale/ApiTeamListInfoVo.java           |   28 +++
 src/main/java/cc/mrbird/febs/mall/vo/sale/ApiTeamHeaderInfoVo.java         |   18 ++
 src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java                     |    2 
 src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleHeaderInfoVo.java         |   18 ++
 src/main/java/cc/mrbird/febs/mall/controller/member/ApiSaleController.java |   77 ++++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java     |  148 ++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/dto/sale/ApiSaleListInfoDto.java         |   30 +++
 14 files changed, 527 insertions(+), 3 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/member/ApiSaleController.java b/src/main/java/cc/mrbird/febs/mall/controller/member/ApiSaleController.java
new file mode 100644
index 0000000..f8b221b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/controller/member/ApiSaleController.java
@@ -0,0 +1,77 @@
+package cc.mrbird.febs.mall.controller.member;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.sale.ApiSaleListInfoDto;
+import cc.mrbird.febs.mall.dto.sale.ApiTeamListInfoDto;
+import cc.mrbird.febs.mall.service.ApiSaleService;
+import cc.mrbird.febs.mall.vo.MallMemberVo;
+import cc.mrbird.febs.mall.vo.sale.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RestController
+@Validated
+@RequestMapping(value = "/api/sale")
+@RequiredArgsConstructor
+@Api(value = "ApiSaleController", tags = "365我的推广")
+public class ApiSaleController {
+
+    private final ApiSaleService apiSaleService;
+
+    @ApiOperation(value = "我的推广", notes = "我的推广")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiSaleInfoVo.class)
+    })
+    @GetMapping(value = "/saleInfo")
+    public FebsResponse saleInfo() {
+
+        return apiSaleService.saleInfo();
+    }
+
+    @ApiOperation(value = "我的团队(头部)", notes = "我的团队(头部)")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiTeamHeaderInfoVo.class)
+    })
+    @GetMapping(value = "/teamHeader")
+    public FebsResponse teamHeader() {
+
+        return apiSaleService.teamHeader();
+    }
+
+    @ApiOperation(value = "我的团队(团队明细)", notes = "我的团队(团队明细)")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiTeamListInfoVo.class)
+    })
+    @PostMapping(value = "/teamList")
+    public FebsResponse teamList(@RequestBody @Validated ApiTeamListInfoDto dto) {
+
+        return apiSaleService.teamList(dto);
+    }
+
+    @ApiOperation(value = "分销订单(头部)", notes = "分销订单(头部)")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiSaleHeaderInfoVo.class)
+    })
+    @GetMapping(value = "/saleHeader")
+    public FebsResponse saleHeader() {
+
+        return apiSaleService.saleHeader();
+    }
+
+    @ApiOperation(value = "分销订单(分销明细)", notes = "分销订单(分销明细)")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "success", response = ApiSaleListInfoVo.class)
+    })
+    @PostMapping(value = "/saleList")
+    public FebsResponse saleList(@RequestBody @Validated ApiSaleListInfoDto dto) {
+
+        return apiSaleService.saleList(dto);
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/sale/ApiSaleListInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/sale/ApiSaleListInfoDto.java
new file mode 100644
index 0000000..5fa30a6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/sale/ApiSaleListInfoDto.java
@@ -0,0 +1,30 @@
+package cc.mrbird.febs.mall.dto.sale;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiSaleListInfoDto", description = "参数")
+public class ApiSaleListInfoDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "开始时间", example = "123")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间", example = "123")
+    private String endTime;
+
+    @ApiModelProperty(hidden = true)
+    private Long memberId;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/sale/ApiTeamListInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/sale/ApiTeamListInfoDto.java
new file mode 100644
index 0000000..f70f35c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/sale/ApiTeamListInfoDto.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.mall.dto.sale;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiTeamListInfoDto", description = "参数")
+public class ApiTeamListInfoDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageNow;
+
+    @NotNull(message = "每页数量不能为空")
+    @ApiModelProperty(value = "每页数量", example = "10")
+    private Integer pageSize;
+
+    @ApiModelProperty(value = "开始时间", example = "123")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间", example = "123")
+    private String endTime;
+
+    @ApiModelProperty(hidden = true)
+    private String inviteId;
+}
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 c6d595d..4aa7dd9 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -3,9 +3,13 @@
 import cc.mrbird.febs.mall.dto.AgentDto;
 import cc.mrbird.febs.mall.dto.AgentLevelDto;
 import cc.mrbird.febs.mall.dto.RankAwardDto;
+import cc.mrbird.febs.mall.dto.sale.ApiSaleListInfoDto;
+import cc.mrbird.febs.mall.dto.sale.ApiTeamListInfoDto;
 import cc.mrbird.febs.mall.entity.AppVersion;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.vo.*;
+import cc.mrbird.febs.mall.vo.sale.ApiSaleListInfoVo;
+import cc.mrbird.febs.mall.vo.sale.ApiTeamListInfoVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -94,4 +98,8 @@
 
     void updateReferrerId(@Param("id")Long id);
     void updateLastLoginTime(@Param("id")Long id,@Param("lastLoginTime") Date lastLoginTime);
+
+    IPage<ApiTeamListInfoVo> selectTeamPage(Page<ApiTeamListInfoVo> page, @Param("record")ApiTeamListInfoDto dto);
+
+    Page<ApiSaleListInfoVo> selectSalePage(Page<ApiSaleListInfoVo> objectPage, @Param("record")ApiSaleListInfoDto dto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java b/src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java
new file mode 100644
index 0000000..765cbea
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/ApiSaleService.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.sale.ApiSaleListInfoDto;
+import cc.mrbird.febs.mall.dto.sale.ApiTeamListInfoDto;
+import cc.mrbird.febs.mall.entity.MallMember;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface ApiSaleService extends IService<MallMember> {
+
+    FebsResponse saleInfo();
+
+    FebsResponse teamHeader();
+
+    FebsResponse teamList(ApiTeamListInfoDto dto);
+
+    FebsResponse saleHeader();
+
+    FebsResponse saleList(ApiSaleListInfoDto dto);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java
new file mode 100644
index 0000000..0901542
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiSaleServiceImpl.java
@@ -0,0 +1,148 @@
+package cc.mrbird.febs.mall.service.impl;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.mall.dto.sale.ApiSaleListInfoDto;
+import cc.mrbird.febs.mall.dto.sale.ApiTeamListInfoDto;
+import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.ApiSaleService;
+import cc.mrbird.febs.mall.vo.sale.*;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class ApiSaleServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements ApiSaleService {
+
+    private final HappySaleLevelMapper happySaleLevelMapper;
+    private final MallMoneyFlowMapper mallMoneyFlowMapper;
+    private final MallOrderInfoMapper mallOrderInfoMapper;
+    private final MallAchieveRecordMapper mallAchieveRecordMapper;
+
+    @Override
+    public FebsResponse saleInfo() {
+        ApiSaleInfoVo apiSaleInfoVo = new ApiSaleInfoVo();
+
+        Long id = LoginUserUtil.getLoginUser().getId();
+        MallMember mallMember = this.baseMapper.selectById(id);
+        apiSaleInfoVo.setId(mallMember.getId());
+        apiSaleInfoVo.setName(mallMember.getName());
+        apiSaleInfoVo.setAvatar(mallMember.getAvatar());
+        apiSaleInfoVo.setInviteId(mallMember.getInviteId());
+
+        HappySaleLevel happySaleLevel = happySaleLevelMapper.selectOne(
+                new LambdaQueryWrapper<HappySaleLevel>()
+                        .eq(HappySaleLevel::getCode, mallMember.getStoreMaster())
+                        .last("limit 1")
+        );
+        if (happySaleLevel != null) {
+            apiSaleInfoVo.setStoreMasterName(happySaleLevel.getName());
+            apiSaleInfoVo.setStoreMasterPng(happySaleLevel.getIconPng());
+        }
+
+        List<MallMember> mallMembers = this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId());
+        apiSaleInfoVo.setTotalCnt(CollUtil.isNotEmpty(mallMembers) ? mallMembers.size() : 0);
+
+        List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(
+                new LambdaQueryWrapper<MallMoneyFlow>()
+                        .eq(MallMoneyFlow::getMemberId, id)
+                        .eq(MallMoneyFlow::getType, ScoreFlowTypeEnum.SALE_RECOMMEND.getValue())
+        );
+        apiSaleInfoVo.setTotalSaleAmount(
+                CollUtil.isNotEmpty(mallMoneyFlows)
+                        ? mallMoneyFlows.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add)
+                        : BigDecimal.ZERO);
+        apiSaleInfoVo.setOrderCnt(CollUtil.isNotEmpty(mallMoneyFlows) ? mallMoneyFlows.size() : 0);
+
+        // todo 提现部分暂无
+
+        return new FebsResponse().success().data(apiSaleInfoVo);
+    }
+
+    @Override
+    public FebsResponse teamHeader() {
+        ApiTeamHeaderInfoVo apiTeamHeaderInfoVo = new ApiTeamHeaderInfoVo();
+
+        Long id = LoginUserUtil.getLoginUser().getId();
+        MallMember mallMember = this.baseMapper.selectById(id);
+
+        List<MallMember> mallMembers = this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId());
+        if(CollUtil.isEmpty(mallMembers)){
+            apiTeamHeaderInfoVo.setTotalCnt(0);
+            apiTeamHeaderInfoVo.setTotalAmount(BigDecimal.ZERO);
+        }else{
+            apiTeamHeaderInfoVo.setTotalCnt(mallMembers.size());
+            //stream流获取mallMembers的全部id的set集合
+            Set<Long> memberIds = mallMembers.stream().map(MallMember::getId).collect(Collectors.toSet());
+            List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectList(
+                    new LambdaQueryWrapper<MallOrderInfo>()
+                            .select(MallOrderInfo::getAmount)
+                            .in(MallOrderInfo::getMemberId, memberIds)
+                            .eq(MallOrderInfo::getStatus, OrderStatusEnum.FINISH.getValue())
+            );
+            if(CollUtil.isEmpty(mallOrderInfos)){
+                apiTeamHeaderInfoVo.setTotalAmount(BigDecimal.ZERO);
+            }else{
+                apiTeamHeaderInfoVo.setTotalAmount(
+                        mallOrderInfos.stream().map(MallOrderInfo::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add)
+                );
+            }
+        }
+        return new FebsResponse().success().data(apiTeamHeaderInfoVo);
+    }
+
+    @Override
+    public FebsResponse teamList(ApiTeamListInfoDto dto) {
+        Long id = LoginUserUtil.getLoginUser().getId();
+        MallMember mallMember = this.baseMapper.selectById(id);
+        dto.setInviteId(mallMember.getInviteId());
+
+        Page<ApiTeamListInfoVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+        IPage<ApiTeamListInfoVo> apiTeamListInfoVoIPage = this.baseMapper.selectTeamPage(page, dto);
+        return new FebsResponse().success().data(apiTeamListInfoVoIPage);
+    }
+
+    @Override
+    public FebsResponse saleHeader() {
+
+        ApiSaleHeaderInfoVo apiSaleHeaderInfoVo = new ApiSaleHeaderInfoVo();
+
+        Long id = LoginUserUtil.getLoginUser().getId();
+        List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(
+                new LambdaQueryWrapper<MallMoneyFlow>()
+                        .eq(MallMoneyFlow::getMemberId, id)
+                        .eq(MallMoneyFlow::getType, ScoreFlowTypeEnum.SALE_RECOMMEND.getValue())
+        );
+        apiSaleHeaderInfoVo.setTotalSaleAmount(
+                CollUtil.isNotEmpty(mallMoneyFlows)
+                        ? mallMoneyFlows.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add)
+                        : BigDecimal.ZERO);
+        apiSaleHeaderInfoVo.setOrderCnt(CollUtil.isNotEmpty(mallMoneyFlows) ? mallMoneyFlows.size() : 0);
+        return new FebsResponse().success().data(apiSaleHeaderInfoVo);
+    }
+
+    @Override
+    public FebsResponse saleList(ApiSaleListInfoDto dto) {
+
+        Long id = LoginUserUtil.getLoginUser().getId();
+        Page<ApiSaleListInfoVo> objectPage = new Page<>(dto.getPageNow(), dto.getPageSize());
+        dto.setMemberId(id);
+        Page<ApiSaleListInfoVo> mallAchieveRecordPage = this.baseMapper.selectSalePage(objectPage, dto);
+        return new FebsResponse().success().data(mallAchieveRecordPage);
+    }
+}
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 79e3519..2bbad1a 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -37,7 +37,7 @@
     @ApiModelProperty(value = "余额")
     private BigDecimal balance;
 
-    @ApiModelProperty(value = "代理等级")
+    @ApiModelProperty(value = "会员等级")
     private String levelName;
 
     @ApiModelProperty(value = "推荐人昵称")
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleHeaderInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleHeaderInfoVo.java
new file mode 100644
index 0000000..7757a68
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleHeaderInfoVo.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.vo.sale;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiSaleHeaderInfoVo", description = "")
+public class ApiSaleHeaderInfoVo {
+
+    @ApiModelProperty(value = "累计佣金")
+    private BigDecimal totalSaleAmount;
+
+    @ApiModelProperty(value = "分销订单")
+    private int orderCnt;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleInfoVo.java
new file mode 100644
index 0000000..aaa899c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleInfoVo.java
@@ -0,0 +1,52 @@
+package cc.mrbird.febs.mall.vo.sale;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiSaleInfoVo", description = "我的推广")
+public class ApiSaleInfoVo {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "昵称")
+    private String name;
+
+    @ApiModelProperty(value = "头像")
+    private String avatar;
+
+    @ApiModelProperty(value = "邀请码")
+    private String inviteId;
+
+    @ApiModelProperty(value = "分销等级")
+    private String storeMasterName;
+
+    @ApiModelProperty(value = "分销等级图片")
+    private String storeMasterPng;
+
+    @ApiModelProperty(value = "累计佣金")
+    private BigDecimal totalSaleAmount;
+
+    @ApiModelProperty(value = "总推广人(我的团队)")
+    private int totalCnt;
+
+    @ApiModelProperty(value = "分销订单")
+    private int orderCnt;
+
+    @ApiModelProperty(value = "佣金排行")
+    private int sortCnt;
+
+    @ApiModelProperty(value = "可提现")
+    private BigDecimal avaAmount;
+
+    @ApiModelProperty(value = "提现中")
+    private BigDecimal avaAmountIng;
+
+    @ApiModelProperty(value = "已提现")
+    private BigDecimal avaAmountDone;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleListInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleListInfoVo.java
new file mode 100644
index 0000000..d6695ae
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiSaleListInfoVo.java
@@ -0,0 +1,27 @@
+package cc.mrbird.febs.mall.vo.sale;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "ApiTeamListInfoVo", description = "")
+public class ApiSaleListInfoVo {
+
+    @ApiModelProperty(value = "订单编号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "返佣时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "返佣金额")
+    private BigDecimal costAmount;
+
+    @ApiModelProperty(value = "订单金额")
+    private BigDecimal amount;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiTeamHeaderInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiTeamHeaderInfoVo.java
new file mode 100644
index 0000000..e445449
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiTeamHeaderInfoVo.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.vo.sale;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiTeamHeaderInfoVo", description = "我的推广")
+public class ApiTeamHeaderInfoVo {
+
+    @ApiModelProperty(value = "总推广人")
+    private int totalCnt;
+
+    @ApiModelProperty(value = "累计订单金额")
+    private BigDecimal totalAmount;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiTeamListInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiTeamListInfoVo.java
new file mode 100644
index 0000000..b2c74f4
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/sale/ApiTeamListInfoVo.java
@@ -0,0 +1,28 @@
+package cc.mrbird.febs.mall.vo.sale;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "ApiTeamListInfoVo", description = "我的推广")
+public class ApiTeamListInfoVo {
+
+    @ApiModelProperty(value = "用户")
+    private String memberName;
+
+    @ApiModelProperty(value = "注册时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "下单数量")
+    private int orderCnt;
+
+    @ApiModelProperty(value = "订单金额")
+    private BigDecimal totalAmount;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
index c1f10c9..930ea76 100644
--- a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
@@ -291,12 +291,12 @@
                 multiply,
                 ScoreFlowTypeEnum.SALE_RECOMMEND.getValue(),
                 mallOrderInfo.getOrderNo(),
-                FlowTypeEnum.BALANCE.getValue(),
+                FlowTypeEnum.COMMISSION.getValue(),
                 StrUtil.format(ScoreFlowTypeEnum.SALE_RECOMMEND.getDesc(),multiply),
                 2
         );
         // 更新会员钱包中的余额
-        mallMemberWalletService.add(multiply, storeMasterMember.getId(), "balance");
+        mallMemberWalletService.add(multiply, storeMasterMember.getId(), "commission");
 
         MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
         mallAchieveRecord.setMemberId(mallOrderInfo.getMemberId());
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 307315a..f5daff9 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -492,4 +492,73 @@
         where id = #{id}
     </update>
 
+
+
+    <select id="selectTeamPage" resultType="cc.mrbird.febs.mall.vo.sale.ApiTeamListInfoVo">
+
+        SELECT
+                a.name memberName,
+                a.CREATED_TIME createdTime,
+                (
+                    SELECT
+                    count(c.id)
+                    FROM
+                    mall_order_info c
+                    where a.id = c.member_id
+                    AND c.STATUS = 4
+                ) orderCnt,
+                ifnull(
+                    (
+                        SELECT
+                            sum(b.amount)
+                        FROM
+                            mall_order_info b
+                        where a.id = b.member_id
+                        AND b.STATUS = 4
+                    ),
+                0) amount
+        FROM mall_member a
+        <where>
+            and find_in_set(#{record.inviteId}, a.referrer_ids)
+            <if test="record != null" >
+                <if test="record.startTime != null and record.startTime != ''">
+                    and a.CREATED_TIME &gt;= #{record.startTime}
+                </if>
+                <if test="record.endTime != null and record.endTime != ''">
+                    and a.CREATED_TIME &lt;= #{record.endTime}
+                </if>
+            </if>
+        </where>
+        order by a.CREATED_TIME desc
+    </select>
+
+
+
+    <select id="selectSalePage" resultType="cc.mrbird.febs.mall.vo.sale.ApiSaleListInfoVo">
+        SELECT
+            (
+                SELECT
+                c.order_no
+                FROM
+                mall_order_info c
+                where a.order_id = c.id
+            ) orderNo,
+            a.CREATED_TIME createdTime,
+            a.cost_amount costAmount,
+            a.amount amount
+        FROM mall_achieve_record a
+        <where>
+            and a.member_id = #{record.memberId}
+            <if test="record != null" >
+                <if test="record.startTime != null and record.startTime != ''">
+                    and a.CREATED_TIME &gt;= #{record.startTime}
+                </if>
+                <if test="record.endTime != null and record.endTime != ''">
+                    and a.CREATED_TIME &lt;= #{record.endTime}
+                </if>
+            </if>
+        </where>
+        order by a.CREATED_TIME desc
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1