From 869ea72afdca9ad0f83a6f09659e4a4478012606 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 04 Apr 2023 10:59:41 +0800
Subject: [PATCH] 关于积分凭证

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java |  153 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 135 insertions(+), 18 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index b9e686b..f6248e1 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -4,8 +4,10 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
 import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.GreenScoreEnum;
 import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
 import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.AppContants;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.mall.dto.*;
@@ -36,6 +38,7 @@
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author wzy
@@ -68,6 +71,8 @@
     private final IMallMoneyFlowService mallMoneyFlowService;
     private final UnipayService unipayService;
     private final MallMemberBankMapper mallMemberBankMapper;
+    private final MallScoreRecordMapper mallScoreRecordMapper;
+    private final MallScoreAchieveReleaseMapper mallScoreAchieveReleaseMapper;
 
     @Override
     public IPage<MallMember> getMallMemberList(MallMember mallMember, QueryRequest request) {
@@ -110,7 +115,20 @@
         if (type == 1) {
             mallMember.setDirector(value);
         } else if (type == 2){
+            /**
+             * 线下服务商设置
+             *  团队下没有线下服务商,才能成为线下服务商
+             */
+//            List<MallMember> mallMembers = mallMemberMapper.selectAllChildAgentListByInviteIdAndStoreMaster(mallMember.getInviteId(), 1);
+//            if(CollUtil.isNotEmpty(mallMembers)){
+//                List<String> phoneList = mallMembers.stream().map(MallMember::getPhone).collect(Collectors.toList());
+//                throw new FebsException("团队存在线下服务中心,账号为【"+phoneList.toString()+"】");
+//            }
             mallMember.setStoreMaster(value);
+        }else if (type == 3){
+            mallMember.setCreater(value);
+        } else if (type == 4){
+            mallMember.setPartner(value);
         } else {
             throw new FebsException("参数错误");
         }
@@ -158,24 +176,36 @@
         }
 
         Long wtihdrawTypeId = mallMemberWithdraw.getWtihdrawTypeId();
-        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId);
+//        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId);
         /**
          * 调用汇聚代付
          */
-        SinglePayDto singlePayDto = new SinglePayDto();
-        singlePayDto.setMerchantOrderNo(mallMemberWithdraw.getWithdrawNo());
-        singlePayDto.setReceiverAccountNoEncBankNo(mallMemberBank.getBankNo());
-        singlePayDto.setReceiverAccountNoEncName(mallMemberBank.getName());
-        singlePayDto.setReceiverAccountType("201");
-        BigDecimal paidAmount = mallMemberWithdraw.getAmount().subtract(mallMemberWithdraw.getAmountFee()).setScale(2, BigDecimal.ROUND_DOWN);
-        singlePayDto.setPaidAmount(paidAmount);
-        singlePayDto.setCurrency("201");
-        singlePayDto.setIsChecked("202");
-        singlePayDto.setPaidDesc("用户提现");
-        singlePayDto.setPaidUse("202");
-        String singlePayRep = unipayService.singlePay(singlePayDto);
-        if(!mallMemberWithdraw.getWithdrawNo().equals(singlePayRep)){
-            return new FebsResponse().fail().message("提现失败,请稍后查看错误信息一览");
+//        SinglePayDto singlePayDto = new SinglePayDto();
+//        singlePayDto.setMerchantOrderNo(mallMemberWithdraw.getWithdrawNo());
+//        singlePayDto.setReceiverAccountNoEncBankNo(mallMemberBank.getBankNo());
+//        singlePayDto.setReceiverAccountNoEncName(mallMemberBank.getName());
+//        singlePayDto.setReceiverAccountType("201");
+//        BigDecimal paidAmount = mallMemberWithdraw.getAmount().subtract(mallMemberWithdraw.getAmountFee()).setScale(2, BigDecimal.ROUND_DOWN);
+//        singlePayDto.setPaidAmount(paidAmount);
+//        singlePayDto.setCurrency("201");
+//        singlePayDto.setIsChecked("202");
+//        singlePayDto.setPaidDesc("用户提现");
+//        singlePayDto.setPaidUse("202");
+//        String singlePayRep = unipayService.singlePay(singlePayDto);
+//        if(!mallMemberWithdraw.getWithdrawNo().equals(singlePayRep)){
+//            return new FebsResponse().fail().message("提现失败,请稍后查看错误信息一览");
+//        }
+
+        mallMemberWithdraw.setStatus(2);
+        mallMemberWithdrawMapper.updateById(mallMemberWithdraw);
+
+        QueryWrapper<MallMoneyFlow> flowQueryWrapper = new QueryWrapper<>();
+        flowQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo());
+        flowQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue());
+        MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(flowQueryWrapper);
+        if(ObjectUtil.isNotEmpty(mallMoneyFlow)){
+            mallMoneyFlow.setStatus(2);
+            mallMoneyFlowMapper.updateById(mallMoneyFlow);
         }
 
         return new FebsResponse().success();
@@ -203,7 +233,10 @@
         mallMoneyFlowMapper.updateById(mallMoneyFlow);
 
         //用户佣金增加对应的余额
-        iApiMallMemberWalletService.add(mallMemberWithdraw.getAmount(),mallMemberWithdraw.getMemberId(),"commission");
+        iApiMallMemberWalletService.add(mallMemberWithdraw.getAmount(),mallMemberWithdraw.getMemberId(),"balance");
+        if(AppContants.MEMBER_WITHDRAW_VOUCHER.equals(mallMemberWithdraw.getRemark())){
+            iApiMallMemberWalletService.add(mallMemberWithdraw.getAmountFee(),mallMemberWithdraw.getMemberId(),"voucher_cnt");
+        }
         return new FebsResponse().success();
     }
 
@@ -359,7 +392,7 @@
         if(StrUtil.isEmpty(level) || !AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())){
             return new FebsResponse().fail().message("该用户无法激活");
         }
-        mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+        mallMember.setLevel(AgentLevelEnum.SECOND_LEVEL.name());
         mallMemberMapper.updateById(mallMember);
         return new FebsResponse().success();
     }
@@ -450,7 +483,7 @@
 
             // 重置交易密码
             if (type == 1) {
-                String payPwd = SecureUtil.md5("654321");
+                String payPwd = SecureUtil.md5("123456");
                 member.setTradePassword(payPwd);
                 // 重置登录密码
             } else {
@@ -615,10 +648,94 @@
         if(ObjectUtil.isNotEmpty(mallMemberBank)){
             adminMallMemberPaymentVo.setBankNo(mallMemberBank.getBankNo());
             adminMallMemberPaymentVo.setBankName(mallMemberBank.getName());
+            adminMallMemberPaymentVo.setDigitalNo(mallMemberBank.getDigitalNo());
+            adminMallMemberPaymentVo.setBank(mallMemberBank.getBankName());
         }
         return adminMallMemberPaymentVo;
     }
 
+    @Override
+    public FebsResponse updateVoucher(MallSystemPayDto mallSystemPayDto) {
+        Long memberId = mallSystemPayDto.getId();
+        MallMember mallMember = mallMemberMapper.selectById(memberId);
+        if(ObjectUtil.isEmpty(mallMember)){
+            return new FebsResponse().fail().message("系统繁忙,请刷新页面重试");
+        }
+
+        BigDecimal addBalance = mallSystemPayDto.getAddBalance();
+        if(addBalance.compareTo(BigDecimal.ZERO) <= 0){
+            return new FebsResponse().fail().message("请输入正确的数量");
+        }
+
+        DataDictionaryCustom totalCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                GreenScoreEnum.TOTAL_CNT.getType(),
+                GreenScoreEnum.TOTAL_CNT.getCode()
+        );
+
+        BigDecimal totalCnt = new BigDecimal(totalCntDic.getValue());
+        //凭证占总数的10%
+        BigDecimal roleCnt = totalCnt.multiply(new BigDecimal(0.1));
+        //获取已卖出的凭证数量
+        BigDecimal roleCntSale = mallScoreRecordMapper.selectSumScoreCnt().setScale(2,BigDecimal.ROUND_DOWN);
+        roleCntSale = roleCntSale.add(addBalance);
+
+        if(roleCnt.compareTo(roleCntSale) < 0){
+            return new FebsResponse().fail().message("已拨付:"+roleCntSale);
+        }
+        /**
+         * 增加一条会员购买记录
+         * mall_score_record
+         */
+        MallScoreRecord mallScoreRecord = new MallScoreRecord();
+        mallScoreRecord.setMemberId(memberId);
+        mallScoreRecord.setScoreNo(MallUtils.getOrderNum("MSR"));
+        mallScoreRecord.setScoreCnt(addBalance);
+        mallScoreRecord.setSurplusCnt(addBalance);
+        mallScoreRecordMapper.insert(mallScoreRecord);
+        /**
+         * 减少剩余绿色凭证数量
+         */
+        DataDictionaryCustom surplusCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                GreenScoreEnum.SURPLUS_CNT.getType(),
+                GreenScoreEnum.SURPLUS_CNT.getCode()
+        );
+        BigDecimal surplusCnt = new BigDecimal(surplusCntDic.getValue());
+        surplusCnt = surplusCnt.subtract(addBalance);
+        surplusCntDic.setValue(surplusCnt.toString());
+        dataDictionaryCustomMapper.updateById(surplusCntDic);
+        return new FebsResponse().success();
+    }
+
+    @Override
+    public IPage<MallScoreRecord> gerRoleReleaseList(AdminRoleReleaseDto roleReleaseDto, QueryRequest request) {
+        Page<MallScoreRecord> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<MallScoreRecord> mallScoreRecordIPage = mallScoreRecordMapper.gerRoleReleaseListInPage(page, roleReleaseDto);
+        return mallScoreRecordIPage;
+    }
+
+    @Override
+    public IPage<MallMoneyFlow> roleReleaseChild(QueryRequest request, MallScoreRecord mallScoreRecord) {
+        Page<MallMoneyFlow> page = new Page<>(request.getPageNum(), request.getPageSize());
+        MallScoreRecord mallScore = mallScoreRecordMapper.selectById(mallScoreRecord.getId());
+        IPage<MallMoneyFlow> mallMoneyFlowIPage = mallScoreRecordMapper.gerRoleReleaseChildInPage(page, mallScore);
+        return mallMoneyFlowIPage;
+    }
+
+    @Override
+    public IPage<MallScoreAchieveRelease> gerAchieveReleaseList(AdminRoleReleaseDto roleReleaseDto, QueryRequest request) {
+        Page<MallScoreAchieveRelease> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<MallScoreAchieveRelease> MallScoreAchieveReleases = mallScoreAchieveReleaseMapper.gerAchieveReleaseListInPage(page, roleReleaseDto);
+        return MallScoreAchieveReleases;
+    }
+
+    @Override
+    public IPage<MallMoneyFlow> achieveReleaseChild(QueryRequest request, MallScoreAchieveRelease mallScoreAchieveRelease) {
+        Page<MallMoneyFlow> page = new Page<>(request.getPageNum(), request.getPageSize());
+        MallScoreAchieveRelease mallScoreAchieve = mallScoreAchieveReleaseMapper.selectById(mallScoreAchieveRelease.getId());
+        IPage<MallMoneyFlow> mallMoneyFlowIPage = mallScoreAchieveReleaseMapper.gerAchieveReleaseChildInPage(page, mallScoreAchieve);
+        return mallMoneyFlowIPage;
+    }
+
     private String refererIds(String parentId) {
         boolean flag = false;
         if (StrUtil.isBlank(parentId)) {

--
Gitblit v1.9.1