KKSU
2025-03-12 d497710f15f38a293fbab685160a113923f7811b
refactor(mall): 优化直推人数统计逻辑

- 在统计直推人数时,排除了游客(YOUKE)级别的成员
- 提高了有效直推人数的统计准确性,以更好地评估代理级别
3 files modified
16 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 12 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -191,6 +191,9 @@
    @TableField(exist = false)
    private int directCnt = 0;
    @TableField(exist = false)
    private int directCntAvailable = 0;
    @TableField(exist = false)
    private int teamCnt = 0;
    @TableField(exist = false)
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -92,15 +92,21 @@
            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>()
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -258,6 +258,7 @@
                    {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'},