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);
|
}
|
}
|