From 69dfb824a15e1273e9034eea7ab0a189a5ebefe4 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 02 Sep 2022 14:21:36 +0800
Subject: [PATCH] 20220822

---
 src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java                  |    2 +
 src/main/java/cc/mrbird/febs/mall/dto/WithdrawalDto.java                          |    4 ++
 src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java              |    5 ++
 src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java |   28 ++++++++------
 src/main/java/cc/mrbird/febs/pay/service/UnipayService.java                       |   12 ++++--
 src/main/java/cc/mrbird/febs/pay/model/SinglePayDto.java                          |    9 ++++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java    |    6 ++-
 src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java                 |   25 ------------
 8 files changed, 48 insertions(+), 43 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalDto.java b/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalDto.java
index f9aa0b6..e4af5b3 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalDto.java
@@ -31,4 +31,8 @@
 
     @ApiModelProperty(value = "姓名")
     private String name;
+
+    @NotNull(message = "银行卡不能为空")
+    @ApiModelProperty(value = "用户银行卡ID")
+    private Long bankId;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
index 70a2624..0e664a4 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
@@ -14,6 +14,8 @@
 @TableName("mall_member_withdraw")
 public class MallMemberWithdraw extends BaseEntity {
 
+    private Long wtihdrawTypeId;
+
     private Long memberId;
 
     private BigDecimal amount;
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 53c42b4..71684cc 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
@@ -175,6 +175,8 @@
         if(1 != mallMemberWithdraw.getStatus()){
             return new FebsResponse().fail().message("当前状态不是提现中");
         }
+
+
         mallMemberWithdraw.setStatus(3);
         mallMemberWithdrawMapper.updateById(mallMemberWithdraw);
 
@@ -185,8 +187,8 @@
         mallMoneyFlow.setStatus(3);
         mallMoneyFlowMapper.updateById(mallMoneyFlow);
 
-        //用户钱包增加对应的余额
-        iApiMallMemberWalletService.addBalance(mallMoneyFlow.getAmount().negate(),mallMoneyFlow.getMemberId());
+        //用户佣金增加对应的余额
+        iApiMallMemberWalletService.add(mallMemberWithdraw.getAmount().negate(),mallMemberWithdraw.getMemberId(),"commission");
         return new FebsResponse().success();
     }
 
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
index 9d16081..02e5fbb 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
@@ -14,6 +14,7 @@
 import cc.mrbird.febs.mall.service.IMallMemberWithdrawService;
 import cc.mrbird.febs.mall.service.MallMemberService;
 import cc.mrbird.febs.mall.vo.CashOutSettingVo;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.SecureUtil;
 import com.alibaba.fastjson.JSONObject;
@@ -21,6 +22,7 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 
@@ -39,8 +41,10 @@
     private final IApiMallMemberWalletService walletService;
     private final MallMemberPaymentMapper mallMemberPaymentMapper;
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+    private final MallMemberBankMapper mallMemberBankMapper;
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void withdrawal(WithdrawalDto withdrawalDto) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
         MallMember mallMember = mallMemberService.getById(memberId);
@@ -52,13 +56,19 @@
             throw new FebsException("支付密码错误");
         }
 
-        if (withdrawalDto.getAmount().compareTo(BigDecimal.valueOf(100)) < 0) {
-            throw new FebsException("最小提现金额为100");
+        CashOutSettingVo cashOutSettingVo = new CashOutSettingVo();
+        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode());
+        if (dic != null) {
+            cashOutSettingVo = JSONObject.parseObject(dic.getValue(), CashOutSettingVo.class);
         }
 
-        MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(memberId);
-        if (payment == null) {
-            throw new FebsException("未设置收款方式");
+        if (withdrawalDto.getAmount().compareTo(cashOutSettingVo.getMinCashOut()) < 0) {
+            throw new FebsException("最小提现金额为"+cashOutSettingVo.getMinCashOut().setScale(2,BigDecimal.ROUND_DOWN));
+        }
+
+        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(withdrawalDto.getBankId());
+        if(ObjectUtil.isEmpty(mallMemberBank)){
+            throw new FebsException("未找到银行卡信息");
         }
 
         BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId);
@@ -72,14 +82,7 @@
             }
         }
 
-        CashOutSettingVo cashOutSettingVo = new CashOutSettingVo();
-        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode());
-        if (dic != null) {
-            cashOutSettingVo = JSONObject.parseObject(dic.getValue(), CashOutSettingVo.class);
-        }
-
         BigDecimal serviceFee = cashOutSettingVo.getServiceFee().multiply(BigDecimal.valueOf(0.01));
-
         walletService.reduce(withdrawalDto.getAmount(), memberId, "commission");
         String orderNo = MallUtils.getOrderNum("W");
 
@@ -89,6 +92,7 @@
         withdraw.setAmount(withdrawalDto.getAmount());
         withdraw.setStatus(1);
         withdraw.setAmountFee(serviceFee.multiply(withdrawalDto.getAmount()));
+        withdraw.setWtihdrawTypeId(mallMemberBank.getId());
         this.baseMapper.insert(withdraw);
 
         mallMemberService.addMoneyFlow(memberId, withdrawalDto.getAmount().negate(), MoneyFlowTypeEnum.WITHDRAWAL.getValue(), orderNo, null, null, null, 1, FlowTypeEnum.COMMISSION.getValue());
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
index 50a4882..d7779f7 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
@@ -141,23 +141,6 @@
         return "success";
     }
 
-//    public static void main(String[] args) {
-//        String output = "https://www.baidu.com?r1_MerchantNo=888000000000000&r2_OrderNo=2020100000000000000&r3_Amount=10.00&r4_Cur=1&r5_Mp=goods&r6_Status=100&r7_TrxNo=100220100000000000&r8_BankOrderNo=100220100000000000&r9_BankTrxNo=4200000000202000000000000000&ra_PayTime=2022-08-11%2B16%253A14%253A39&rb_DealTime=2022-08-11%2B16%253A14%253A39&rc_BankCode=WEIXI_GZH&hmac=14c3819b5cc7bb80635901934f76c7a4";
-//        String params = StrUtil.subAfter(output, "?", true);
-//        System.out.println(params);
-//        List<String> paramStrList = StrUtil.splitTrim(params, "&");
-//        String orderNo = "";
-//        if(CollUtil.isNotEmpty(paramStrList)){
-//            for(String paramStr :paramStrList){
-//                boolean r2_orderNo = paramStr.startsWith("r2_OrderNo");
-//                if(r2_orderNo){
-//                    orderNo = StrUtil.subAfter(paramStr, "=", true);
-//                }
-//            }
-//        }
-//        System.out.println(orderNo);
-//    }
-
     @ApiOperation(value = "获取协议支付签约短信", notes = "获取协议支付签约短信")
     @PostMapping(value = "getAgreeMentPaySms")
     public FebsResponse getAgreeMentPaySms(@RequestBody AgreeMentPaySmsDto agreeMentPaySmsDto) {
@@ -202,14 +185,6 @@
             }
         }
     }
-
-//    public static void main(String[] args) {
-//        String data = "{\\\"bank_trx_no\\\":\\\"0825144603229910\\\",\\\"jp_order_no\\\":\\\"100120220825446322447537651712\\\",\\\"mch_order_no\\\":\\\"2022082514435329133\\\",\\\"order_amount\\\":0.10,\\\"order_desc\\\":\\\"测试\\\",\\\"order_status\\\":\\\"P1000\\\",\\\"pay_success_time\\\":\\\"2022-08-25 14:46:04\\\"}";
-//        JSONObject jsonObject = JSONUtil.parseObj(data);
-//        String orderNo = jsonObject.get("mch_order_no").toString();
-//        String pay_success_time = jsonObject.get("pay_success_time").toString();
-//        System.out.println(orderNo +"222"+pay_success_time);
-//    }
 
     @PostMapping(value = "/agreeMentPayCallBack")
     public String agreeMentPayCallBack(@RequestBody AgreeMentPayCallBackDto agreeMentPayCallBackDto){
diff --git a/src/main/java/cc/mrbird/febs/pay/model/SinglePayDto.java b/src/main/java/cc/mrbird/febs/pay/model/SinglePayDto.java
new file mode 100644
index 0000000..e3de02f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/model/SinglePayDto.java
@@ -0,0 +1,9 @@
+package cc.mrbird.febs.pay.model;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "SinglePayDto", description = "汇聚支付代付接收参数类")
+public class SinglePayDto {
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/UnipayService.java b/src/main/java/cc/mrbird/febs/pay/service/UnipayService.java
index b61ed57..e0e134b 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/UnipayService.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/UnipayService.java
@@ -1,9 +1,6 @@
 package cc.mrbird.febs.pay.service;
 
-import cc.mrbird.febs.pay.model.AgreeMentPaySmsDto;
-import cc.mrbird.febs.pay.model.AgreementPayDto;
-import cc.mrbird.febs.pay.model.AgreementSignDto;
-import cc.mrbird.febs.pay.model.UnipayDto;
+import cc.mrbird.febs.pay.model.*;
 
 public interface UnipayService {
     /**
@@ -40,4 +37,11 @@
      */
     String agreementPay(AgreementPayDto agreementPayDto);
 
+    /**
+     * 代付
+     * @param singlePayDto
+     * @return
+     */
+    String singlePay(SinglePayDto singlePayDto);
+
 }
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java
index 8687d41..1112631 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/UnipayServiceImpl.java
@@ -232,6 +232,11 @@
         }
     }
 
+    @Override
+    public String singlePay(SinglePayDto singlePayDto) {
+        return null;
+    }
+
     public static void main(String[] args) {
 //        BigDecimal value = new BigDecimal("0.10858").setScale(2,BigDecimal.ROUND_HALF_UP);
         BigDecimal value = new BigDecimal("1231.1").setScale(2, BigDecimal.ROUND_DOWN);

--
Gitblit v1.9.1