From 0e3064b8722b33ee2cf67f8fac581a8b0e04832b Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 22 Dec 2023 18:15:58 +0800
Subject: [PATCH] 富文本框输入版本变化

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java       |    9 ++
 src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java               |    2 
 src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java        |  136 +++++++++++++++++++++++++--------------------
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |    4 
 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java     |   14 ++--
 src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java               |    2 
 src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java                     |    2 
 7 files changed, 94 insertions(+), 75 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
index 6074666..a3ec9a6 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
@@ -32,7 +32,7 @@
 
     private String payOrderNo;
 
-    private String payResult;
+    private Integer payResult;
 
     /**
      * 状态 1-待支付2-待发货3-待收货4-已完成5-退款中6-已退款7-已取消
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
index 1e55041..eab70aa 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
@@ -123,6 +123,7 @@
         orderInfo.setIsApp(AppContants.IS_APP_ORDER);
         orderInfo.setOrderTime(new Date());
         orderInfo.setMemberId(addOrderDto.getMemberId());
+        orderInfo.setPayResult(2);
         //会员结算
         orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
         mallOrderInfoMapper.insert(orderInfo);
@@ -212,6 +213,7 @@
         orderInfo.setIsApp(AppContants.IS_APP_ORDER);
         orderInfo.setOrderTime(new Date());
         orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
+        orderInfo.setPayResult(2);
         if (CollUtil.isEmpty(addOrderDto.getItems())) {
             throw new FebsException("商品明细不能为空。");
         }
@@ -256,6 +258,7 @@
         orderInfo.setIsApp(AppContants.IS_APP_ORDER);
         orderInfo.setOrderTime(new Date());
         orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
+        orderInfo.setPayResult(2);
         if (CollUtil.isEmpty(addOrderDto.getItems())) {
             throw new FebsException("商品明细不能为空。");
         }
@@ -333,8 +336,10 @@
         if(!flag){
             throw new FebsException("请打开微信付款码!");
         }
-
         MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
+        if(OrderStatusEnum.FINISH.getValue() == (mallOrderInfo.getStatus())){
+            throw new FebsException("已支付");
+        }
         mallOrderInfo.setTakeCode(wxPayCode);
         List<ApiGetOrderOrderItemVo> appOrderItemByOrderId = mallOrderItemMapper.getAppOrderItemByOrderId(orderId);
         if(CollUtil.isEmpty(appOrderItemByOrderId)){
@@ -342,7 +347,7 @@
         }else{
             mallOrderInfo.setName(appOrderItemByOrderId.get(0).getGoodsName());
         }
-        mallOrderInfo.setPayResult("2");
+//        mallOrderInfo.setPayResult(2);
         mallOrderInfoMapper.updateById(mallOrderInfo);
         // 发起付款码支付请求
         String payResult = xcxCodePayService.pay(mallOrderInfo);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 4516640..e8d3ee8 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -379,7 +379,7 @@
                 orderInfo.setPayMethod("余额支付");
                 orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
                 orderInfo.setPayTime(new Date());
-                orderInfo.setPayResult("1");
+                orderInfo.setPayResult(1);
                 orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
 
 //                boolean hasTc = false;
@@ -430,7 +430,7 @@
                 orderInfo.setPayMethod("积分支付");
                 orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
                 orderInfo.setPayTime(new Date());
-                orderInfo.setPayResult("1");
+                orderInfo.setPayResult(1);
 
                 mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(),  FlowTypeEnum.PRIZE_SCORE.getValue());
                 break;
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index 4e0702e..a2612c3 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -480,19 +480,17 @@
 
     @Override
     public void syAppOrderPayDoneQueue(String orderNo) {
-        LambdaQueryWrapper<MallOrderInfo> query = new LambdaQueryWrapper<>();
-        query.eq(MallOrderInfo::getOrderNo, orderNo);
-        MallOrderInfo orderInfo = mallOrderInfoMapper.selectOne(query);
+        MallOrderInfo orderInfo = mallOrderInfoMapper.selectByOrderNo(orderNo);
         if(ObjectUtil.isEmpty(orderInfo)){
             return;
         }
-        if ("1".equals(orderInfo.getPayResult())) {
+        if (OrderStatusEnum.FINISH.getValue() == orderInfo.getStatus()) {
             return;
         }
-        orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
-        orderInfo.setPayResult("1");
-        orderInfo.setPayTime(DateUtil.date());
-        mallOrderInfoMapper.updateById(orderInfo);
+//        orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
+//        orderInfo.setPayResult(1);
+//        orderInfo.setPayTime(DateUtil.date());
+//        mallOrderInfoMapper.updateById(orderInfo);
 
         if(ObjectUtil.isEmpty(orderInfo.getMemberId())){
             return;
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
index de14692..c0d2b1d 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -254,7 +254,7 @@
                         if (order != null && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()) {
                             log.debug("检查支付金额payMoney={},order.getPayMoney()={}", payMoney, order.getAmount());
                             order.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
-                            order.setPayResult("1");
+                            order.setPayResult(1);
                             order.setPayTime(new Date());
                             order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
                             mallOrderInfoMapper.updateById(order);
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
index 71ad72c..6a403c6 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
@@ -100,7 +100,7 @@
         }
 
         orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
-        orderInfo.setPayResult("1");
+        orderInfo.setPayResult(1);
         orderInfo.setPayTime(new Date());
         orderInfo.setPayTradeNo(params.get("trade_no"));
         orderInfoMapper.updateById(orderInfo);
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
index 950130a..f5980d6 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
@@ -13,6 +13,7 @@
 import cc.mrbird.febs.pay.util.WeixinServiceUtil;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -46,43 +47,45 @@
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final WeixinServiceUtil weixinServiceUtil;
     private final AgentProducer agentProducer;
+    private final WxPayService wxPayService;
     private static final String PAY_SUCCESS = "SUCCESS";
     private static final String PAY_USERPAYING = "USERPAYING";
+    private static final String PAY_FAIL = "FAIL";
     @Override
     public String pay(MallOrderInfo mallOrderInfo) {
 
-        String appId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                DataDictionaryEnum.XCX_APP_ID.getType(),
-                DataDictionaryEnum.XCX_APP_ID.getCode()
-        ).getValue();
-        String mchId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                DataDictionaryEnum.XCX_MCH_ID.getType(),
-                DataDictionaryEnum.XCX_MCH_ID.getCode()
-        ).getValue();
-        String paySecret = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                DataDictionaryEnum.XCX_MCH_KEY.getType(),
-                DataDictionaryEnum.XCX_MCH_KEY.getCode()
-        ).getValue();
-        String keyPath = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getType(),
-                DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getCode()
-        ).getValue();
-        String notifyUrl = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                DataDictionaryEnum.XCX_NOTICE_URL.getType(),
-                DataDictionaryEnum.XCX_NOTICE_URL.getCode()
-        ).getValue();
-        WxPayConfig payConfig = new WxPayConfig();
-        payConfig.setAppId(StrUtil.trim(appId));
-        payConfig.setMchId(StrUtil.trim(mchId));
-        payConfig.setMchKey(StrUtil.trim(paySecret));
-        payConfig.setKeyPath(StrUtil.trim(keyPath));
-        payConfig.setNotifyUrl(StrUtil.trim(notifyUrl));
+//        String appId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                DataDictionaryEnum.XCX_APP_ID.getType(),
+//                DataDictionaryEnum.XCX_APP_ID.getCode()
+//        ).getValue();
+//        String mchId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                DataDictionaryEnum.XCX_MCH_ID.getType(),
+//                DataDictionaryEnum.XCX_MCH_ID.getCode()
+//        ).getValue();
+//        String paySecret = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                DataDictionaryEnum.XCX_MCH_KEY.getType(),
+//                DataDictionaryEnum.XCX_MCH_KEY.getCode()
+//        ).getValue();
+//        String keyPath = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getType(),
+//                DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getCode()
+//        ).getValue();
+//        String notifyUrl = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                DataDictionaryEnum.XCX_NOTICE_URL.getType(),
+//                DataDictionaryEnum.XCX_NOTICE_URL.getCode()
+//        ).getValue();
+//        WxPayConfig payConfig = new WxPayConfig();
+//        payConfig.setAppId(StrUtil.trim(appId));
+//        payConfig.setMchId(StrUtil.trim(mchId));
+//        payConfig.setMchKey(StrUtil.trim(paySecret));
+//        payConfig.setKeyPath(StrUtil.trim(keyPath));
+//        payConfig.setNotifyUrl(StrUtil.trim(notifyUrl));
 
         // 可以指定是否使用沙箱环境
-        payConfig.setUseSandboxEnv(false);
-
-        WxPayService wxPayService = new WxPayServiceImpl();
-        wxPayService.setConfig(payConfig);
+//        payConfig.setUseSandboxEnv(false);
+//
+//        WxPayService wxPayService = new WxPayServiceImpl();
+//        wxPayService.setConfig(payConfig);
         WxPayMicropayRequest request = new WxPayMicropayRequest();
         /**
          *
@@ -99,8 +102,8 @@
          String sign = WXPayUtil.generateSignature(map, config.getKey());
          map.put("sign", sign);
          */
-        request.setAppid(appId);
-        request.setMchId(mchId);
+//        request.setAppid(appId);
+//        request.setMchId(mchId);
         request.setNonceStr(RandomStringGenerator.getRandomStringByLength(32));
         request.setBody(mallOrderInfo.getName());
         request.setOutTradeNo(mallOrderInfo.getOrderNo());
@@ -110,7 +113,7 @@
         request.setAuthCode(mallOrderInfo.getTakeCode());
 
         try {
-            request.setSign(Signature.getSign(request,paySecret));
+            request.setSign(Signature.getSign(request,wxPayService.getConfig().getMchKey()));
         } catch (IllegalAccessException e) {
             e.printStackTrace();
             throw new FebsException("签名异常");
@@ -128,38 +131,51 @@
 
             if(PAY_SUCCESS.equals(returnCode) && PAY_SUCCESS.equals(resultCode)){
                 log.info("微信免密支付成功");
+                MallOrderInfo orderInfo = mallOrderInfoMapper.selectByOrderNo(mallOrderInfo.getOrderNo());
+                if(ObjectUtil.isNotEmpty(orderInfo)){
+                    if (OrderStatusEnum.FINISH.getValue() != orderInfo.getStatus()) {
+                        orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
+                        orderInfo.setPayResult(1);
+                        orderInfo.setPayTime(DateUtil.date());
+                        mallOrderInfoMapper.updateById(orderInfo);
+                    }
+                }
                 agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
                 return PAY_SUCCESS;
-            } else if (PAY_USERPAYING.equals(errCode)){//等待用户输入密码
-                for(int i = 0; i < 4; i++){
-                    try {
-                        Thread.sleep(5000);
-                    } catch (InterruptedException e) {
-                        e.printStackTrace();
-                    }
-                    //调用微信的查询接口
-                    /**
-                     * 交易成功判断条件: return_code、result_code和trade_state都为SUCCESS
-                     */
-                    WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest();
-                    wxPayOrderQueryRequest.setOutTradeNo(outTradeNo);
-                    WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest);
-                    String returnCodePaying = wxPayOrderQueryResult.getReturnCode();
-                    String resultCodePaying = wxPayOrderQueryResult.getResultCode();
-                    String tradeTypePaying = wxPayOrderQueryResult.getTradeType();
-                    if(PAY_SUCCESS.equals(tradeTypePaying)&& PAY_SUCCESS.equals(returnCodePaying)&& PAY_SUCCESS.equals(resultCodePaying)){
-                        log.info("微信加密支付成功!");
-                        agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
-                        return PAY_SUCCESS;
-                    }
-                    log.info("正在支付" + wxPayOrderQueryResult.getDetail());
-                }
             }
-            log.error("微信支付失败!");
+//            else if (PAY_USERPAYING.equals(errCode)){//等待用户输入密码
+//                for(int i = 0; i < 4; i++){
+//                    try {
+//                        Thread.sleep(5000);
+//                    } catch (InterruptedException e) {
+//                        e.printStackTrace();
+//                    }
+//                    //调用微信的查询接口
+//                    /**
+//                     * 交易成功判断条件: return_code、result_code和trade_state都为SUCCESS
+//                     */
+//                    WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest();
+//                    wxPayOrderQueryRequest.setOutTradeNo(outTradeNo);
+//                    log.info("付款码支付订单查询");
+//                    WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest);
+//                    String returnCodePaying = wxPayOrderQueryResult.getReturnCode();
+//                    String resultCodePaying = wxPayOrderQueryResult.getResultCode();
+//                    String tradeTypePaying = wxPayOrderQueryResult.getTradeType();
+//                    if(PAY_SUCCESS.equals(tradeTypePaying)&& PAY_SUCCESS.equals(returnCodePaying)&& PAY_SUCCESS.equals(tradeTypePaying)){
+//                        log.info("微信加密支付成功!");
+//                        agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
+//                        return PAY_SUCCESS;
+//                    }
+//                    log.info("正在支付" + wxPayOrderQueryResult.getDetail());
+//                }
+//            }
+            else if(PAY_FAIL.equals(resultCode)){
+                return errCodeDes;
+            }
             return errCodeDes;
         } catch (WxPayException e) {
             e.printStackTrace();
-            throw new FebsException("支付异常");
+            throw new FebsException(e.getErrCodeDes());
         }
     }
 
@@ -174,7 +190,7 @@
             return;
         }
         orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
-        orderInfo.setPayResult("1");
+        orderInfo.setPayResult(1);
         orderInfo.setPayTime(DateUtil.date());
         orderInfo.setPayTradeNo(params.get("transaction_id"));
         mallOrderInfoMapper.updateById(orderInfo);

--
Gitblit v1.9.1