| | |
| | | private final MallGoodsCouponMapper mallGoodsCouponMapper; |
| | | private final MallMemberCouponMapper mallMemberCouponMapper; |
| | | private final MallGoodsMapper mallGoodsMapper; |
| | | private final MallChargeMapper mallChargeMapper; |
| | | |
| | | private final MallVipConfigMapper mallVipConfigMapper; |
| | | private final RunVipMapper runVipMapper; |
| | |
| | | mallMemberVo.setWithdrawState(runVip.getWithdrawState()); |
| | | mallMemberVo.setInsideState(runVip.getInsideState()); |
| | | |
| | | |
| | | MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId()); |
| | | mallMemberVo.setBalance(wallet.getBalance()); |
| | | mallMemberVo.setScore(wallet.getScore()); |
| | | return new FebsResponse().success().data(mallMemberVo); |
| | | } |
| | | |
| | | private BigDecimal getDirectAchieve(String inviteId,Date startTime,Date endTime) { |
| | | |
| | | try { |
| | | // 获取直推成员和团队成员的ID集合 |
| | | Set<Long> memberIds = getTeamMemberIds(inviteId); |
| | | |
| | | if (CollUtil.isEmpty(memberIds)) { |
| | | return BigDecimal.ZERO; |
| | | } |
| | | |
| | | // 获取团队业绩(不包含本人业绩) |
| | | List<MallCharge> mallCharges = mallChargeMapper.selectList( |
| | | new LambdaQueryWrapper<MallCharge>() |
| | | .in(MallCharge::getMemberId, memberIds) |
| | | .eq(MallCharge::getState, YesOrNoEnum.YES.getValue()) |
| | | .ge(MallCharge::getCreatedTime, startTime) |
| | | .lt(MallCharge::getCreatedTime, endTime) |
| | | ); |
| | | |
| | | if (CollUtil.isEmpty(mallCharges)) { |
| | | return BigDecimal.ZERO; |
| | | } |
| | | |
| | | return mallCharges.stream() |
| | | .map(MallCharge::getAmount) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | } catch (Exception e) { |
| | | // 异常处理 |
| | | log.error("Error occurred while calculating direct achieve for member: {}", inviteId, e); |
| | | return BigDecimal.ZERO; |
| | | } |
| | | } |
| | | private Set<Long> getTeamMemberIds(String inviteId) { |
| | | Set<Long> memberIds = new HashSet<>(); |
| | | // 获取直推成员 |
| | | List<MallMember> directMembers = this.baseMapper.selectList( |
| | | new LambdaQueryWrapper<MallMember>() |
| | | .eq(MallMember::getReferrerId, inviteId) |
| | | ); |
| | | memberIds.addAll(directMembers.stream().map(MallMember::getId).collect(Collectors.toSet())); |
| | | |
| | | // 获取团队成员 |
| | | List<MallMember> teamMembers = this.baseMapper.selectList( |
| | | new LambdaQueryWrapper<MallMember>() |
| | | .in(MallMember::getReferrerId, directMembers.stream().map(MallMember::getInviteId).collect(Collectors.toSet())) |
| | | ); |
| | | memberIds.addAll(teamMembers.stream().map(MallMember::getId).collect(Collectors.toSet())); |
| | | |
| | | return memberIds; |
| | | } |
| | | |
| | | @Override |
| | |
| | | * 直属三级 |
| | | */ |
| | | MyTeamVo myTeamVo = new MyTeamVo(); |
| | | //节点和团队业绩 |
| | | myTeamVo.setDirector(mallMember.getDirector()); |
| | | if(mallMember.getDirector() == YesOrNoEnum.YES.getValue() && mallMember.getDirectorTime() != null){ |
| | | myTeamVo.setDirectorTime(mallMember.getDirectorTime()); |
| | | BigDecimal directAchieve = getDirectAchieve(mallMember.getInviteId(), mallMember.getDirectorTime(), DateUtil.date()); |
| | | myTeamVo.setDirectorAchieve(directAchieve); |
| | | }else{ |
| | | myTeamVo.setDirectorTime(mallMember.getCreatedTime()); |
| | | BigDecimal directAchieve = getDirectAchieve(mallMember.getInviteId(), mallMember.getCreatedTime(), DateUtil.date()); |
| | | myTeamVo.setDirectorAchieve(directAchieve); |
| | | } |
| | | //获取个人的碳币 |
| | | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); |
| | | myTeamVo.setMyBalance(mallMemberWallet.getBalance()); |