From 6169d137461b01b47def5e3ab6353bbdcddbcc97 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 30 Dec 2024 17:18:39 +0800
Subject: [PATCH] feat(mall): 添加节点身份管理和显示功能

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |   66 ++++++++++++++++++++++++++-------
 1 files changed, 52 insertions(+), 14 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index a434905..9b9e219 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/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("男");
@@ -278,6 +288,7 @@
         mallMemberVo.setLevelPng(runVip.getVipPng());
         mallMemberVo.setChangeState(runVip.getChangeState());
         mallMemberVo.setWithdrawState(runVip.getWithdrawState());
+        mallMemberVo.setInsideState(runVip.getInsideState());
 
         MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId());
         mallMemberVo.setBalance(wallet.getBalance());
@@ -485,7 +496,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("请先升级会员");
         }
 
@@ -528,6 +539,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void withdrawal(WithdrawalDto withdrawalDto) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
         MallMember loginMember = this.baseMapper.selectById(memberId);
@@ -569,13 +581,21 @@
                 dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                         RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN_PERCENT.getType(),
                         RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN_PERCENT.getCode()).getValue()
-        ).setScale(4, BigDecimal.ROUND_DOWN);
+        ).setScale(2, BigDecimal.ROUND_DOWN);
+
+        BigDecimal withdrawalAmount = withdrawalDto.getAmount().multiply(balanceToCoin).setScale(2, BigDecimal.ROUND_DOWN);
+        BigDecimal fee = balanceToCoinPercent;
+//        BigDecimal fee = balanceToCoinPercent.multiply(withdrawalAmount).setScale(2, BigDecimal.ROUND_DOWN);
+        BigDecimal withdrawalAmountReal = withdrawalAmount.subtract(fee);
+        if(BigDecimal.ZERO.compareTo(withdrawalAmountReal) >= 0){
+            throw new FebsException(minCnt+"手续费不足");
+        }
+
         /**
          *  减少碳币,增加进行中提现记录
          */
-        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);
+        walletService.reduceBalance(withdrawalDto.getAmount(), loginMember.getId());
+
         String orderNo = MallUtils.getOrderNum("TX");
         MallMemberWithdraw withdraw = new MallMemberWithdraw();
         withdraw.setWithdrawNo(orderNo);
@@ -585,9 +605,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(),
@@ -602,6 +622,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void commissionChange(CommissionChangeDto commissionChange) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
         BigDecimal minScore = new BigDecimal(
@@ -626,6 +647,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(
@@ -1539,6 +1565,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) {
         /**
@@ -1584,7 +1622,7 @@
         sortedList.forEach(entry -> {
             ApiChartVo apiChartVo = new ApiChartVo();
             MallMember mallMember = this.baseMapper.selectById(entry.getKey());
-            apiChartVo.setName(mallMember.getName());
+            apiChartVo.setName(hidePhoneNumber(mallMember.getName()));
             apiChartVo.setAvatar(mallMember.getAvatar());
             apiChartVo.setScore(entry.getValue());
             apiChartVos.add(apiChartVo);

--
Gitblit v1.9.1