KKSU
2024-12-23 700e52d5ef6e52b4292724165adfa60e24d76838
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -130,16 +130,26 @@
        //对于邀请码的验证和上级联系人的验证
        Integer count = this.baseMapper.selectCount(null);
        if (count != null && count != 0) {
            if(!StrUtil.isEmpty(registerDto.getInviteId())){
                String inviteId = registerDto.getInviteId();
                MallMember inviteMember = this.baseMapper.selectInfoByInviteId(inviteId);
                if (inviteMember == null) {
                    throw new FebsException("邀请码不存在");
                }
                mallMember.setReferrerId(registerDto.getInviteId());
            if(StrUtil.isEmpty(registerDto.getInviteId())){
                throw new FebsException("请输入邀请码");
            }
            String inviteId = registerDto.getInviteId();
            MallMember inviteMember = this.baseMapper.selectInfoByInviteId(inviteId);
            if (inviteMember == null) {
                throw new FebsException("邀请码不存在");
            }
            mallMember.setReferrerId(registerDto.getInviteId());
//            if(!StrUtil.isEmpty(registerDto.getInviteId())){
//                String inviteId = registerDto.getInviteId();
//                MallMember inviteMember = this.baseMapper.selectInfoByInviteId(inviteId);
//                if (inviteMember == null) {
//                    throw new FebsException("邀请码不存在");
//                }
//                mallMember.setReferrerId(registerDto.getInviteId());
//            }
        }
        mallMember.setName(account);
        mallMember.setAvatar("https://res.runstep.cc/rslogo.png");
        mallMember.setAccountStatus(YesOrNoEnum.YES.getValue());
        mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
        mallMember.setSex("男");
@@ -276,39 +286,12 @@
        RunVip runVip = runVipMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, mallMemberVo.getLevel()));
        mallMemberVo.setLevelName(runVip.getVipName());
        mallMemberVo.setLevelPng(runVip.getVipPng());
        mallMemberVo.setChangeState(runVip.getChangeState());
        mallMemberVo.setWithdrawState(runVip.getWithdrawState());
        MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId());
        mallMemberVo.setBalance(wallet.getBalance());
        mallMemberVo.setScore(wallet.getScore());
        mallMemberVo.setMinScore(
                new BigDecimal(
                        dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                            RunVipDataDictionaryEnum.RUN_VIP_SCORE_MIN.getType(),
                            RunVipDataDictionaryEnum.RUN_VIP_SCORE_MIN.getCode()).getValue()
                ).setScale(0,BigDecimal.ROUND_DOWN)
        );
        mallMemberVo.setScoreBalance(
                new BigDecimal(
                        dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                RunVipDataDictionaryEnum.RUN_VIP_SCORE_TO_BALANCE.getType(),
                                RunVipDataDictionaryEnum.RUN_VIP_SCORE_TO_BALANCE.getCode()).getValue()
                ).setScale(2, BigDecimal.ROUND_DOWN)
        );
        mallMemberVo.setBalanceCoin(
                new BigDecimal(
                        dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getType(),
                                RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getCode()).getValue()
                ).setScale(2, BigDecimal.ROUND_DOWN)
        );
        mallMemberVo.setBalanceCoinPercent(
                new BigDecimal(
                        dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN_PERCENT.getType(),
                                RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN_PERCENT.getCode()).getValue()
                ).setScale(4, BigDecimal.ROUND_DOWN)
        );
        return new FebsResponse().success().data(mallMemberVo);
    }
@@ -361,7 +344,7 @@
            mallMember.setAvatar(modifyMemberInfoDto.getPhoto());
        }
        this.baseMapper.updateById(mallMember);
        this.baseMapper.updateNameAndAvatar(member.getId(),modifyMemberInfoDto.getName(),modifyMemberInfoDto.getPhoto());
        return new FebsResponse().success().message("修改成功");
    }
@@ -409,9 +392,10 @@
            }else{
                item.setMyTeamCnt(mallMemberRefs.size());
                //获取mallMembers的所有id
                myTeamVo.setMyTeamBalance(getTeamBalance(mallMemberRefs));
                item.setMyTeamBalance(getTeamBalance(mallMemberRefs));
            }
        });
        myTeamVo.setTeam(teamListVos);
        return new FebsResponse().success().data(myTeamVo);
@@ -511,7 +495,7 @@
         * 用户的等级level是否允许兑换碳币
         */
        RunVip runVip = runVipMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, loginMember.getLevel()));
        if(ObjectUtil.isEmpty(runVip) || runVip.getChangeState() != YesOrNoEnum.YES.getValue()){
        if(ObjectUtil.isEmpty(runVip) || runVip.getInsideState() != YesOrNoEnum.YES.getValue()){
            throw new FebsException("请先升级会员");
        }
@@ -554,6 +538,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void withdrawal(WithdrawalDto withdrawalDto) {
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallMember loginMember = this.baseMapper.selectById(memberId);
@@ -599,6 +584,8 @@
        /**
         *  减少碳币,增加进行中提现记录
         */
        walletService.reduceBalance(withdrawalDto.getAmount(), loginMember.getId());
        BigDecimal withdrawalAmount = withdrawalDto.getAmount().multiply(balanceToCoin).setScale(2, BigDecimal.ROUND_DOWN);
        BigDecimal fee = balanceToCoinPercent.multiply(withdrawalAmount).setScale(2, BigDecimal.ROUND_DOWN);
        BigDecimal withdrawalAmountReal = withdrawalAmount.subtract(fee);
@@ -611,9 +598,9 @@
        withdraw.setAmountFee(fee);
        withdraw.setName(mallMemberPayment.getBank());
        withdraw.setType(mallMemberPayment.getBankNo());
        withdraw.setWithdrawTimes(withdrawalDto.getAmount());
        mallMemberWithdrawMapper.insert(withdraw);
        walletService.reduceBalance(withdrawalDto.getAmount(), loginMember.getId());
        this.runVipMoneyFlowAdd(
                loginMember.getId(),
                loginMember.getId(),
@@ -628,6 +615,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void commissionChange(CommissionChangeDto commissionChange) {
        Long memberId = LoginUserUtil.getLoginUser().getId();
        BigDecimal minScore = new BigDecimal(
@@ -652,6 +640,11 @@
        RunVip runVip = runVipMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, loginMember.getLevel()));
        if(ObjectUtil.isEmpty(runVip) || runVip.getChangeState() != YesOrNoEnum.YES.getValue()){
            throw new FebsException("请先升级会员");
        }
        MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
        if(minScore.compareTo(mallMemberWallet.getScore()) > 0){
            throw new FebsException("碳积分不足");
        }
        BigDecimal scoreBalancePercent = new BigDecimal(
@@ -691,20 +684,24 @@
    @Override
    public void setPayment(ApiMallMemberPaymentDto apiMallMemberPaymentDto) {
        List<MallMemberPayment> mallMemberPayments = mallMemberPaymentMapper.selectList(
                new LambdaQueryWrapper<MallMemberPayment>().eq(MallMemberPayment::getBank, apiMallMemberPaymentDto.getBank()));
        if(CollUtil.isNotEmpty(mallMemberPayments)){
            throw new FebsException("地址已使用");
        }
        MallMember member = LoginUserUtil.getLoginUser();
        if(null == apiMallMemberPaymentDto.getId()){//新增
            List<MallMemberPayment> mallMemberPayments = mallMemberPaymentMapper.selectList(
                    new LambdaQueryWrapper<MallMemberPayment>().eq(MallMemberPayment::getBank, apiMallMemberPaymentDto.getBank()));
            if(CollUtil.isNotEmpty(mallMemberPayments)){
                throw new FebsException("地址已使用");
            }
            MallMemberPayment mallMemberPayment = new MallMemberPayment();
            mallMemberPayment.setMemberId(member.getId());
            mallMemberPayment.setBankNo(apiMallMemberPaymentDto.getBankNo());
            mallMemberPayment.setBank(apiMallMemberPaymentDto.getBank());
            mallMemberPaymentMapper.insert(mallMemberPayment);
        }else{
            List<MallMemberPayment> mallMemberPayments = mallMemberPaymentMapper.selectList(
                    new LambdaQueryWrapper<MallMemberPayment>().eq(MallMemberPayment::getBank, apiMallMemberPaymentDto.getBank()));
            if(CollUtil.isNotEmpty(mallMemberPayments) && mallMemberPayments.size() > 1){
                throw new FebsException("地址已使用");
            }
            MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectById(apiMallMemberPaymentDto.getId());
            mallMemberPayment.setMemberId(member.getId());
            mallMemberPayment.setBankNo(apiMallMemberPaymentDto.getBankNo());
@@ -1561,6 +1558,18 @@
        return new FebsResponse().success().data(data);
    }
    public static String hidePhoneNumber(String phoneNumber) {
        //判断字符串的长度小于4就直接返回
        if (phoneNumber.length() < 4) {
            return phoneNumber;
        }
        // 获取前3位和后4位
        String prefix = phoneNumber.substring(0, 3);
        // 生成隐藏的电话号码
        return prefix + "****";
    }
    @Override
    public List<ApiChartVo> dayRecord(ApiRecordDto apiRecordDto) {
        /**
@@ -1576,7 +1585,11 @@
            mallMoneyFlowLambdaQueryWrapper.ge(MallMoneyFlow :: getCreatedTime , dateTime);
        }
        mallMoneyFlowLambdaQueryWrapper.eq(MallMoneyFlow :: getFlowType, FlowTypeEnum.SCORE.getValue());
        mallMoneyFlowLambdaQueryWrapper.eq(MallMoneyFlow :: getType, RunVipMoneyFlowTypeEnum.SCORE_OUT_BALANCE.getValue());
        mallMoneyFlowLambdaQueryWrapper.in(
                MallMoneyFlow :: getType,
                RunVipMoneyFlowTypeEnum.GET_SCORE.getValue(),
                RunVipMoneyFlowTypeEnum.SYS_SCORE.getValue()
        );
        List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(mallMoneyFlowLambdaQueryWrapper);
        List<ApiChartVo> apiChartVos = new ArrayList<>();
@@ -1602,7 +1615,7 @@
        sortedList.forEach(entry -> {
            ApiChartVo apiChartVo = new ApiChartVo();
            MallMember mallMember = this.baseMapper.selectById(entry.getKey());
            apiChartVo.setPhone(mallMember.getPhone());
            apiChartVo.setName(hidePhoneNumber(mallMember.getName()));
            apiChartVo.setAvatar(mallMember.getAvatar());
            apiChartVo.setScore(entry.getValue());
            apiChartVos.add(apiChartVo);