refactor(mall): 优化直推人数统计逻辑
- 在统计直推人数时,排除了游客(YOUKE)级别的成员
- 提高了有效直推人数的统计准确性,以更好地评估代理级别
| | |
| | | |
| | | @TableField(exist = false) |
| | | private int directCnt = 0; |
| | | |
| | | @TableField(exist = false) |
| | | private int directCntAvailable = 0; |
| | | @TableField(exist = false) |
| | | private int teamCnt = 0; |
| | | @TableField(exist = false) |
| | |
| | | DateTime endTime = DateUtil.date(); |
| | | records.forEach(item -> { |
| | | CompletableFuture<Void> uCompletableFuture = CompletableFuture.runAsync(() -> { |
| | | //获取直推 |
| | | Set<String> directInviteIds = mallMemberMapper.selectList( |
| | | List<MallMember> directMembers = mallMemberMapper.selectList( |
| | | new LambdaQueryWrapper<MallMember>() |
| | | .eq(MallMember::getReferrerId, item.getInviteId()) |
| | | ).stream() |
| | | ); |
| | | //获取直推 |
| | | Set<String> directInviteIds = directMembers.stream() |
| | | .map(MallMember::getInviteId) |
| | | .collect(Collectors.toSet()); |
| | | Set<String> directCntAvailableInviteIds = directMembers.stream() |
| | | .filter(member -> !"YOUKE".equals(member.getLevel())) |
| | | .map(MallMember::getInviteId) |
| | | .collect(Collectors.toSet()); |
| | | if(CollUtil.isNotEmpty(directInviteIds)){ |
| | | item.setDirectCnt(directInviteIds.size()); |
| | | item.setDirectCntAvailable(directCntAvailableInviteIds.size()); |
| | | //获取团队 |
| | | List<MallMember> allMembers = mallMemberMapper.selectList( |
| | | new LambdaQueryWrapper<MallMember>() |
| | |
| | | {field: 'balance', title: '碳币', minWidth: 100,align:'left', totalRow:true}, |
| | | {field: 'score', title: '碳积分', minWidth: 100,align:'left', totalRow:true}, |
| | | {field: 'directCnt', title: '直推', minWidth: 100,align:'left', totalRow:true}, |
| | | {field: 'directCntAvailable', title: '有效直推', minWidth: 100,align:'left', totalRow:true}, |
| | | {field: 'teamCnt', title: '团队', minWidth: 100,align:'left', totalRow:true}, |
| | | {field: 'achieveCnt', title: '业绩', minWidth: 100,align:'left', totalRow:true}, |
| | | {field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'}, |