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 >= #{record.startTime}
+ </if>
+ <if test="record.endTime != null and record.endTime != ''">
+ and a.CREATED_TIME <= #{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 >= #{record.startTime}
+ </if>
+ <if test="record.endTime != null and record.endTime != ''">
+ and a.CREATED_TIME <= #{record.endTime}
+ </if>
+ </if>
+ </where>
+ order by a.CREATED_TIME desc
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1