Browse Source

功能代码逻辑修复

hyq 7 years ago
parent
commit
8dfa865fc2

+ 3 - 5
src/main/java/com/emato/cuspay/biz/merch/MerchantNoticeBiz.java

@@ -84,15 +84,13 @@ public class MerchantNoticeBiz implements CuspayBiz{
                     result = OkHttpUtils.post(request);
                     noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_2.getItem()); //通知发送成功
                     noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());//停止通知
-                    noticeList.add(noti);
                     break;
                 }catch (IOException e) {
-                    logger.error("商户回调通知异常"+e.getMessage());
+                    logger.error("商户回调通知异常", e);
+                    noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
+                    noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
                 }
-
             }
-            noti.setNotiStatue(MerchNoticeDict.NoticeStatus.i_3.getItem()); //发送失败
-            noti.setIsStoped(MerchNoticeDict.IsStopStatus.i_1.getItem());
             noticeList.add(noti);
         });
 

+ 8 - 12
src/main/java/com/emato/cuspay/biz/wx/WxCusDeclareBiz.java

@@ -175,6 +175,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
                 errors.add(wxPayError);
             }
 
+            MerchNoti merchNoti = new MerchNoti();
             try {
                 wxCbPayDoc.setResultCode(wxResponseMsgDto.getResultCode());
                 wxCbPayDoc.setReturnCode(wxResponseMsgDto.getReturnCode());
@@ -184,7 +185,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
                 if (WxContants.SUCCESS.equals(wxResponseMsgDto.getReturnCode())) {
                     if (WxContants.SUCCESS.equals(wxResponseMsgDto.getResultCode())) {
                         //订购人与支付人校验结果
-                        if (wxResponseMsgDto.getCertCheckResult() != null) {
+                        if (!StringUtils.isEmpty(wxResponseMsgDto.getCertCheckResult())) {
                             if ("UNCHECKED".equals(wxResponseMsgDto.getCertCheckResult())) { //未知
                                 builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_0.getItem());
                                 wxCbPayDoc.setBuyerPayerCheck(MerchNoticeDict.BuyerPayerCheckStatus.i_0.getItem());
@@ -197,12 +198,7 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
                                 builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_2.getItem());
                                 wxCbPayDoc.setBuyerPayerCheck(MerchNoticeDict.BuyerPayerCheckStatus.i_2.getItem());
                             }
-                            if(StringUtils.isEmpty(wxResponseMsgDto.getCertCheckResult())){//校验异常
-                                builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_3.getItem());
-                                wxCbPayDoc.setBuyerPayerCheck(MerchNoticeDict.BuyerPayerCheckStatus.i_3.getItem());
-                            }
                         }
-                        MerchNoti merchNoti = new MerchNoti();
                         //返回状态未申报
                         if (WxDict.ResponseMsgState.UNDECLARED.getItem().equals(wxResponseMsgDto.getState())) {
                             wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_10.getItem());
@@ -242,19 +238,20 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
                                     .cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
                                     .build();
                         }
-                        merchNotis.add(merchNoti);
                         wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
                     } else {//返回状态码为成功 业务结果失败
                         wxCbPayDoc.setErrCode(wxResponseMsgDto.getErrCode());
                         wxCbPayDoc.setErrCodeDes(wxResponseMsgDto.getErrCodeDes());
                         wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_13.getItem());
+                        wxCbPayDoc.setBuyerPayerCheck(MerchNoticeDict.BuyerPayerCheckStatus.i_3.getItem());
+
                         wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
 
-                        MerchNoti merchNoti = builder.code(wxResponseMsgDto.getErrCode())
+                        builder.certCheckResult(MerchNoticeDict.BuyerPayerCheckStatus.i_3.getItem());
+                        merchNoti = builder.code(wxResponseMsgDto.getErrCode())
                                 .msg(wxResponseMsgDto.getErrCodeDes())
                                 .cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
                                 .build();
-                        merchNotis.add(merchNoti);
                     }
                 }
                 ///返回状态码为失败
@@ -265,17 +262,16 @@ public class WxCusDeclareBiz extends AbstractCusDeclareBiz implements CuspayBiz
                     wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
 
                     //通知商户
-                    MerchNoti merchNoti = builder.code(WxContants.ERROR_FAIL)
+                    merchNoti = builder.code(WxContants.ERROR_FAIL)
                             .msg(wxResponseMsgDto.getReturnMsg())
                             .cusDeclStatus(WxDict.MerchNoticeStatus.i_13.getItem())
                             .build();
-                    merchNotis.add(merchNoti);
                 }
             } catch (Exception e) {
                 logger.error("更新支付单证入库信息状态异常", e);
                 return;
             }
-
+            merchNotis.add(merchNoti);
         });
 
         //持久化商户通知数据

+ 9 - 5
src/main/java/com/emato/cuspay/biz/wx/WxCusDeclareQueryBiz.java

@@ -110,7 +110,6 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
             if (merchPayCfg == null) {
                 wxCbPayDoc.setReturnCode("FAIL");
                 wxCbPayDoc.setReturnMsg("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在");
-                wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_13.getItem());
                 wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
                 logger.error("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付配置信息不存在 ");
                 return;
@@ -119,7 +118,6 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
             if (merchPayCfg.getMerchWxApiKey() == null) {
                 wxCbPayDoc.setReturnCode(WxContants.ERROR_NO_INFOMATION);
                 wxCbPayDoc.setReturnMsg("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付信息api密钥为空");
-                wxCbPayDoc.setDocStatus(WxDict.PaymentDocStatus.i_13.getItem());
                 wxCbPayDocService.updateWxCbPay(wxCbPayDoc);
                 logger.error("商户编号为【"+wxCbPayDoc.getMerchSn()+"】的商户支付信息api密钥为空 ");
                 return;
@@ -158,6 +156,8 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
                     wxCbPayDoc.setResultCode(wxQueryResponseMsg.getResultCode());
                     wxCbPayDoc.setReturnCode(wxQueryResponseMsg.getReturnCode());
                     wxCbPayDoc.setReturnMsg(wxQueryResponseMsg.getReturnMsg());
+                    wxCbPayDoc.setErrCode(wxQueryResponseMsg.getErrCode());
+                    wxCbPayDoc.setErrCodeDes(wxQueryResponseMsg.getErrCodeDes());
                     //业务状态码为成功
                     if(WxContants.SUCCESS.equals(wxQueryResponseMsg.getResultCode())){
                         wxCbPayDoc.setTransactionId(wxQueryResponseMsg.getTransactionId());
@@ -263,7 +263,11 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
 
             List<MerchNoti> mchNotiList = null;
             try {
-                mchNotiList = merchNotiService.getMerchNotiByCode(wxQueryResponseMsg.getErrCode());
+                MerchNoti noti = new MerchNoti();
+                noti.setCode(wxQueryResponseMsg.getErrCode());
+                noti.setAllPayNo(wxQueryResponseMsg.getTransactionId());
+                noti.setCusDeclStatus(merchNoti.getCusDeclStatus());
+                mchNotiList = merchNotiService.getMerchNotiByCodeAndOrderNo(noti);
             } catch (Exception e) {
                 logger.error("根据code查询商户通知信息异常", e);
                 return;
@@ -274,7 +278,7 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
                     merchNoti.setNotiSn(mchNotiList.get(0).getNotiSn());
                     merchNotiService.update(merchNoti);
                 }else{
-                    merchNotiService.insert(merchNoti);//有问题
+                    merchNotiService.insert(merchNoti);
                 }
             } catch (Exception e) {
                 logger.error("操作商户通知数据异常", e);
@@ -286,7 +290,7 @@ public class WxCusDeclareQueryBiz extends AbstractCusDeclareBiz implements Cuspa
         //存储异常记录
         try {
             if (errorList != null && !errorList.isEmpty()) {
-                int errResult = wxPayErrorService.insertWxPayErrorBatch(errorList);//有问题
+                int errResult = wxPayErrorService.insertWxPayErrorBatch(errorList);
                 if (errResult == 0) {
                     logger.error("持久化支付申报异常数据失败data:" + errorList);
                     throw new Exception("持久化支付申报异常数据失败data:" + errorList);

+ 1 - 1
src/main/java/com/emato/cuspay/dao/mapper/merch/MerchNotiMapper.java

@@ -25,5 +25,5 @@ public interface MerchNotiMapper {
 
     int updateBatch(List<MerchNoti> records);
 
-    List<MerchNoti> getMerchNotiByCode(String code);
+    List<MerchNoti> getMerchNotiByCodeAndOrderNo(MerchNoti merchNoti);
 }

+ 1 - 1
src/main/java/com/emato/cuspay/service/MerchNotiService.java

@@ -18,7 +18,7 @@ public interface MerchNotiService {
      */
     int insertBatch(List<MerchNoti> merchNotis);
 
-    List<MerchNoti> getMerchNotiByCode(String code);
+    List<MerchNoti> getMerchNotiByCodeAndOrderNo(MerchNoti merchNoti);
 
     MerchNoti insert(MerchNoti merchNoti);
 

+ 3 - 2
src/main/java/com/emato/cuspay/service/impl/MerchNotiServiceImpl.java

@@ -28,8 +28,9 @@ public class MerchNotiServiceImpl implements MerchNotiService {
     }
 
 
-    public List<MerchNoti> getMerchNotiByCode(String code) {
-        return merchNotiMapper.getMerchNotiByCode(code);
+    public List<MerchNoti> getMerchNotiByCodeAndOrderNo(MerchNoti merchNoti) {
+
+        return merchNotiMapper.getMerchNotiByCodeAndOrderNo(merchNoti);
     }
 
     public MerchNoti insert(MerchNoti record){

+ 2 - 2
src/main/resources/mybatis/mapper/MerchNotiMapper.xml

@@ -44,11 +44,11 @@
     from merch_noti
     where noti_sn = #{notiSn,jdbcType=VARCHAR}
   </select>
-  <select id="getMerchNotiByCode" resultMap="BaseResultMap" parameterType="java.lang.String" >
+  <select id="getMerchNotiByCodeAndOrderNo" resultMap="BaseResultMap" parameterType="com.emato.cuspay.entity.merch.MerchNoti" >
     select
     <include refid="Base_Column_List" />
     from merch_noti
-    where code = #{code,jdbcType=VARCHAR}
+    where code = #{code,jdbcType=VARCHAR} and all_pay_no = #{allPayNo,jdbcType=VARCHAR} and cus_decl_status = #{cusDeclStatus,jdbcType=VARCHAR}
   </select>
 
   <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >