zhijiezhao 2 лет назад
Родитель
Сommit
4617ef1a3d

+ 2 - 0
src/main/java/com/caimei365/order/mapper/PayOrderMapper.java

@@ -279,4 +279,6 @@ public interface PayOrderMapper {
     List<QuickBankVo> findUnCodeBanks();
 
     QuickInfoVo findInfoById(Integer infoId);
+
+    QuickInfoVo findInfoNotDel(String infoId);
 }

+ 24 - 7
src/main/java/com/caimei365/order/service/impl/HeliPayServiceImpl.java

@@ -1391,7 +1391,10 @@ public class HeliPayServiceImpl implements HeliPayService {
         // 未成功删除cm_quickpay_info中预存的userInfo信息
         String[] s = res.getRt5_orderId().split("_");
         String infoId = s[3];
-        payOrderMapper.delQuickInfo(infoId);
+        QuickInfoVo infoNotDel = payOrderMapper.findInfoNotDel(infoId);
+        if (null == infoNotDel) {
+            payOrderMapper.delQuickInfo(infoId);
+        }
     }
 
     @Override
@@ -1499,9 +1502,12 @@ public class HeliPayServiceImpl implements HeliPayService {
                 return ResponseJson.error("请求失败");
             }
             String resultMsg = (String) resultMap.get("response");
+            QuickInfoVo infoById = payOrderMapper.findInfoNotDel(infoId);
             if (!MessageHandle.isJSON(resultMsg)) {
                 //失败删除info
-                payOrderMapper.delQuickInfo(infoId);
+                if (null == infoById) {
+                    payOrderMapper.delQuickInfo(infoId);
+                }
                 log.info("-------------------验证码校验失败!------------------");
                 return ResponseJson.error("验证码校验失败!");
             }
@@ -1512,7 +1518,9 @@ public class HeliPayServiceImpl implements HeliPayService {
             }
             if (!MessageHandle.checkSign(response)) {
                 //失败删除info
-                payOrderMapper.delQuickInfo(infoId);
+                if (null == infoById) {
+                    payOrderMapper.delQuickInfo(infoId);
+                }
                 log.info("------------验签失败---------------");
                 return ResponseJson.error("验签失败!");
             }
@@ -1523,7 +1531,9 @@ public class HeliPayServiceImpl implements HeliPayService {
                     return ResponseJson.error(-2, res.getRt3_retMsg());
                 } else if (!"0000".equals(res.getRt2_retCode())) {
                     //失败删除info
-                    payOrderMapper.delQuickInfo(infoId);
+                    if (null == infoById) {
+                        payOrderMapper.delQuickInfo(infoId);
+                    }
                     log.info("------------绑定失败---------------");
                     return ResponseJson.error("绑定失败!");
                 }
@@ -1562,13 +1572,18 @@ public class HeliPayServiceImpl implements HeliPayService {
                 } else {
                     infoId = s[3];
                 }
+                QuickInfoVo info = payOrderMapper.findInfoNotDel(infoId);
                 // 8015短信验证码错误或已过期
                 if ("8015".equals(res.getRt2_retCode())) {
-                    payOrderMapper.delQuickInfo(infoId);
+                    if (null == info) {
+                        payOrderMapper.delQuickInfo(infoId);
+                    }
                     log.info("------------下单支付验证码错误或过期---------------");
                     return ResponseJson.error(-2, res.getRt3_retMsg());
                 } else if (!"0000".equals(res.getRt2_retCode())) {
-                    payOrderMapper.delQuickInfo(infoId);
+                    if (null == info) {
+                        payOrderMapper.delQuickInfo(infoId);
+                    }
                     // 下单支付在回调中修改绑卡信息
                     log.info("------------下单支付验证码校验失败---------------");
                     return ResponseJson.error(res.getRt3_retMsg());
@@ -1647,7 +1662,9 @@ public class HeliPayServiceImpl implements HeliPayService {
 //                log.info("-----------------银行卡解绑失败---------------------");
 //                return ResponseJson.error("银行卡解绑失败!");
 //            }
-        // 解绑成功 cm_quickpay_info置为删除
+        /** 解绑成功 cm_quickpay_info置为删除
+         *  当前版本一次只能绑定/解绑一个商户号,请求解绑暂无意义
+         */
         payOrderMapper.delQuickInfo(cardId.toString());
 //            payOrderMapper.delQuickBindId(info.getQuickPaybindId());
 //        } catch (Exception e) {

+ 8 - 0
src/main/resources/mapper/PayOrderMapper.xml

@@ -604,4 +604,12 @@
         where cqi.id = #{infoId}
         limit 1
     </select>
+    <select id="findInfoNotDel" resultType="com.caimei365.order.model.vo.QuickInfoVo">
+        select bankNumber, bankType, cqb.bankName
+        from cm_quickpay_info cqi
+        left join cm_quickpay_bankcode cqb on cqi.quickPayBankCode = cqb.bankCode
+        where cqi.id = #{infoId}
+          and cqi.delflag = 0
+        limit 1
+    </select>
 </mapper>