From b6a76de40ec625b440b28d8ec7977d355eec01c8 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 02 Sep 2022 17:08:11 +0800
Subject: [PATCH] 20220902

---
 src/main/java/cc/mrbird/febs/pay/model/SinglePayCallBackDto.java               |   22 +++++++++++
 src/test/java/cc/mrbird/febs/ProfitTest.java                                   |    2 
 src/main/java/cc/mrbird/febs/pay/model/SinglePayCallBackVo.java                |    9 ++++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java |   10 -----
 src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java              |   44 ++++++++++++++++++++--
 5 files changed, 72 insertions(+), 15 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 d7d88f3..c3503d4 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
@@ -178,16 +178,6 @@
             return new FebsResponse().fail().message("提现失败,请联系技术人员");
         }
 
-        mallMemberWithdraw.setStatus(2);
-        mallMemberWithdrawMapper.updateById(mallMemberWithdraw);
-
-        QueryWrapper<MallMoneyFlow> objectQueryWrapper = new QueryWrapper<>();
-        objectQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo());
-        objectQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue());
-        MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(objectQueryWrapper);
-        mallMoneyFlow.setStatus(2);
-        mallMoneyFlowMapper.updateById(mallMoneyFlow);
-
         return new FebsResponse().success();
     }
 
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 d7779f7..4a10555 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
@@ -14,10 +14,7 @@
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.mall.service.IMallAchieveService;
 import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
-import cc.mrbird.febs.pay.model.AgreeMentPayCallBackDto;
-import cc.mrbird.febs.pay.model.AgreeMentPaySmsDto;
-import cc.mrbird.febs.pay.model.AgreementSignDto;
-import cc.mrbird.febs.pay.model.UniPayCallBackDto;
+import cc.mrbird.febs.pay.model.*;
 import cc.mrbird.febs.pay.service.UnipayService;
 import cc.mrbird.febs.pay.util.JsonUtil;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
@@ -27,6 +24,7 @@
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -75,6 +73,10 @@
     private MallMemberBankMapper mallMemberBankMapper;
     @Autowired
     private MallMemberBankSignMapper mallMemberBankSignMapper;
+    @Autowired
+    private MallMemberWithdrawMapper mallMemberWithdrawMapper;
+    @Autowired
+    private MallMoneyFlowMapper mallMoneyFlowMapper;
 
     @GetMapping(value = "/unipayCallBack")
     public String unipayCallBack(HttpServletRequest request, UniPayCallBackDto uniPayCallBackDto){
@@ -254,4 +256,38 @@
         return "success";
     }
 
+    @PostMapping(value = "/singlePayCallBack")
+    public SinglePayCallBackVo singlePayCallBack(@RequestBody SinglePayCallBackDto singlePayCallBackDto){
+        log.info("进入汇聚支付代付回调"+ JSONUtil.parseObj(singlePayCallBackDto));
+        String status = singlePayCallBackDto.getStatus();
+        BigDecimal paidAmount = singlePayCallBackDto.getPaidAmount();
+        BigDecimal paidAmountFee = singlePayCallBackDto.getFee();
+        String errorCode = singlePayCallBackDto.getErrorCode();
+        String merchantOrderNo = singlePayCallBackDto.getMerchantOrderNo();
+
+        log.info("进入汇聚支付代付回调"+status+";"+paidAmount+";"+paidAmountFee+";");
+        if("205".equals(status) && "".equals(errorCode)){
+            QueryWrapper<MallMemberWithdraw> objectQueryWrapper = new QueryWrapper<>();
+            objectQueryWrapper.eq("withdraw_no",merchantOrderNo);
+            MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectOne(objectQueryWrapper);
+            if(ObjectUtil.isNotEmpty(mallMemberWithdraw)){
+                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);
+                }
+            }
+        }
+        SinglePayCallBackVo singlePayCallBackVo = new SinglePayCallBackVo();
+        singlePayCallBackVo.setStatusCode("2001");
+        singlePayCallBackVo.setMessage("成功");
+        return singlePayCallBackVo;
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/pay/model/SinglePayCallBackDto.java b/src/main/java/cc/mrbird/febs/pay/model/SinglePayCallBackDto.java
new file mode 100644
index 0000000..f97407b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/model/SinglePayCallBackDto.java
@@ -0,0 +1,22 @@
+package cc.mrbird.febs.pay.model;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SinglePayCallBackDto {
+
+    private String status;//交易状态
+    private String errorCode;//错误码
+    private String errorCodeDesc;//错误描述
+    private String userNo;//商户编号
+    private String tradeMerchantNo;//报备商户号
+    private String merchantOrderNo;//商户订单号
+    private String platformSerialNo;//平台流水号
+    private String receiverAccountNoEnc;//收款账户号
+    private String receiverNameEnc;//收款人
+    private BigDecimal paidAmount;//交易金额
+    private BigDecimal fee;//手续费
+    private String hmac;//签名数据
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/model/SinglePayCallBackVo.java b/src/main/java/cc/mrbird/febs/pay/model/SinglePayCallBackVo.java
new file mode 100644
index 0000000..f130d1f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/model/SinglePayCallBackVo.java
@@ -0,0 +1,9 @@
+package cc.mrbird.febs.pay.model;
+
+import lombok.Data;
+
+@Data
+public class SinglePayCallBackVo {
+    private String statusCode;
+    private String message;
+}
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index c9d6132..2530112 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -188,7 +188,7 @@
         String orderNo = MallUtils.getOrderNum("W");
         SinglePayDto singlePayDto = new SinglePayDto();
         singlePayDto.setMerchantOrderNo(orderNo);
-        singlePayDto.setReceiverAccountNoEncBankNo("6222031901002389639");
+        singlePayDto.setReceiverAccountNoEncBankNo("6222031903210023839639");
         singlePayDto.setReceiverAccountNoEncName("肖永");
         singlePayDto.setReceiverAccountType("201");
         BigDecimal paidAmount = new BigDecimal(1.00);

--
Gitblit v1.9.1