KKSU
2024-06-27 cd59cd93b4eceee7b5f948a19d4e78371348fcd0
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -11,6 +11,7 @@
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.entity.MallNewsInfo;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.AsyncService;
import cc.mrbird.febs.mall.service.IAdminMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
@@ -36,8 +37,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -293,23 +293,70 @@
    }
    @Override
    public IPage<AdminAgentVo> getAgentList(AgentDto agentDto, QueryRequest request) {
        Page<AdminAgentVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminAgentVo> adminAgentVos = this.baseMapper.getAgentListInPage(page, agentDto);
        List<AdminAgentVo> records = adminAgentVos.getRecords();
        if(CollUtil.isNotEmpty(records)){
            for(AdminAgentVo adminAgentVo : records){
                String inviteId = adminAgentVo.getInviteId();
                //直接下级
                List<MallMember> mallMembers = mallMemberMapper.selectChildAgentListByInviteId(inviteId);
                adminAgentVo.setMemberNum(CollUtil.isEmpty(mallMembers) ? 0 : mallMembers.size());
    public FebsResponse getAgentList(AgentDto agentDto, QueryRequest request) {
        List<AdminMallMemberVo> adminMallMemberVos = new ArrayList<>();
        if(StrUtil.isEmpty(agentDto.getAccountLogin())){
            return new FebsResponse().success().data(adminMallMemberVos);
        }
        String accountLogin = agentDto.getAccountLogin();
        MallMember mallMember = this.baseMapper.selectByAccountLogin(accountLogin);
        if(ObjectUtil.isEmpty(mallMember)){
            return new FebsResponse().success().data(adminMallMemberVos);
        }
                //获取总数
                List<MallMember> allMallMembers =mallMemberMapper.selectAllChildAgentListByInviteId(inviteId);
                adminAgentVo.setAllMemberNum(CollUtil.isEmpty(allMallMembers) ? 0 : allMallMembers.size());
        ArrayList<Long> memberIdList = new ArrayList<>();
        memberIdList.add(mallMember.getId());
        QueryWrapper<MallMember> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("referrer_id",mallMember.getInviteId());
        List<MallMember> mallMembers = this.baseMapper.selectList(objectQueryWrapper);
        if(CollUtil.isNotEmpty(mallMembers)){
            for(MallMember directMember : mallMembers){
                //第一代
                memberIdList.add(directMember.getId());
                QueryWrapper<MallMember> directWrapper = new QueryWrapper<>();
                directWrapper.eq("referrer_id",directMember.getInviteId());
                List<MallMember> refMembers = this.baseMapper.selectList(directWrapper);
                if(CollUtil.isNotEmpty(refMembers)){
                    for(MallMember refMember : refMembers){
                        //第二代
                        memberIdList.add(refMember.getId());
                    }
                }
            }
        }
        return adminAgentVos;
        for(Long id : memberIdList){
            AdminMallMemberVo adminMallMemberVo = new AdminMallMemberVo();
            MallMember member = this.baseMapper.selectById(id);
            adminMallMemberVo.setAccountLogin(member.getAccountLogin());
            BigDecimal chargeAmount = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_CHARGE.getValue());
            adminMallMemberVo.setChargeAmount(chargeAmount);
            BigDecimal withDrawAmount = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_WITHDRAW.getValue());
            adminMallMemberVo.setWithDrawAmount(withDrawAmount);
            MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(id);
            adminMallMemberVo.setBalance(mallMemberWallet.getBalance());
            BigDecimal amountBuy = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_PICK_NUM.getValue());
            adminMallMemberVo.setAmountBuy(amountBuy);
            BigDecimal playerPerk = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_PERK.getValue());
            BigDecimal ownerPerk = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.OWNER_PERK.getValue());
            BigDecimal add = amountBuy.add(playerPerk).add(ownerPerk);
            adminMallMemberVo.setAmountPerk(add);
            adminMallMemberVos.add(adminMallMemberVo);
        }
        Map<String, Object> data = new HashMap<>(2);
        data.put("rows", adminMallMemberVos);
        data.put("total", adminMallMemberVos.size());
        return new FebsResponse().success().data(data);
    }
    @Override
@@ -474,7 +521,12 @@
        } else {
            iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType);
        }
        mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, type);
        mallMoneyFlowService.addMoneyFlow(
                memberId,
                bigDecimal,
                GameFlowTypeEnum.PLAYER_CHARGE.getValue(),
                MallUtils.getOrderNum("CZ"),
                GameFlowTypeEnum.PLAYER_CHARGE.getDescrition());
        return new FebsResponse().success();
    }
@@ -639,6 +691,7 @@
        return this.baseMapper.selectInfoByInviteId(inviteId);
    }
    private final AsyncService asyncService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void modifyReferer(MallMember member) {
@@ -664,6 +717,15 @@
        for (MallMember child : childs) {
            child.setReferrerIds(member.getInviteId() + "," + refererIds);
            this.baseMapper.updateById(child);
        }
        log.info("异步更新用户信息");
        List<MallMember> mallMembers = this.baseMapper.selectList(null);
        if(CollUtil.isEmpty(mallMembers)){
            return;
        }
        for(MallMember mallMemberDown : mallMembers){
            asyncService.updateAllMemberReferrerId(mallMemberDown);
        }
    }
@@ -877,6 +939,24 @@
    public IPage<AdminMallMemberVo> getFcmMallMemberList(MallMember mallMember, QueryRequest request) {
        Page<AdminMallMemberVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallMemberVo> adminMallMemberVoIPage = this.baseMapper.getFcmMallMemberList(page, mallMember);
        List<AdminMallMemberVo> records = adminMallMemberVoIPage.getRecords();
        if(CollUtil.isNotEmpty(records)){
            for(AdminMallMemberVo adminMallMemberVo : records){
                Long id = adminMallMemberVo.getId();
                BigDecimal chargeAmount = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_CHARGE.getValue());
                adminMallMemberVo.setChargeAmount(chargeAmount);
                BigDecimal withDrawAmount = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_WITHDRAW.getValue());
                adminMallMemberVo.setWithDrawAmount(withDrawAmount);
                BigDecimal amountBuy = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_PICK_NUM.getValue());
                adminMallMemberVo.setAmountBuy(amountBuy);
                BigDecimal playerPerk = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_PERK.getValue());
                BigDecimal ownerPerk = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.OWNER_PERK.getValue());
                BigDecimal add = amountBuy.add(playerPerk).add(ownerPerk);
                adminMallMemberVo.setAmountPerk(add);
            }
        }
        return adminMallMemberVoIPage;
    }
@@ -948,6 +1028,20 @@
        return mallMemberVo;
    }
    @Override
    public IPage<MallMemberCharge> memberChargeList(MoneyChargeListDto moneyChargeListDto, QueryRequest request) {
        Page<MallMemberCharge> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<MallMemberCharge> mallMemberChargeIPage = mallMemberMapper.getMemberChargeListInPage(page, moneyChargeListDto);
        return mallMemberChargeIPage;
    }
    @Override
    public IPage<MallMemberWithdraw> memberWithDrawList(MoneyChargeListDto moneyChargeListDto, QueryRequest request) {
        Page<MallMemberWithdraw> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<MallMemberWithdraw> mallMemberWithdrawIPage = mallMemberMapper.getMemberWithDrawListInPage(page, moneyChargeListDto);
        return mallMemberWithdrawIPage;
    }
    private String refererIds(String parentId) {
        boolean flag = false;
        if (StrUtil.isBlank(parentId)) {