lighter 2 роки тому
батько
коміт
0c885789c1

+ 3 - 2
src/main/java/thyyxxk/wxservice_server/dao/WxApiDao.java

@@ -20,8 +20,9 @@ public interface WxApiDao {
     WxPayOrder selectSameGhOrder(@Param("patientId") String patientId,
                                  @Param("mzyRequestId") Integer mzyRequestId);
 
-    @Select("select top 1 * from t_wechat_pay_order with(nolock) where his_ord_num=#{hisOrdNum} order by create_datetime desc")
-    WxPayOrder selectSameMzPayOrder(@Param("hisOrdNum") String hisOrdNum);
+    @Select("select top 1 * from t_wechat_pay_order with(nolock) where his_ord_num=#{hisOrdNum} " +
+            "and total_fee=#{cost} order by create_datetime desc")
+    WxPayOrder selectSameMzPayOrder(@Param("hisOrdNum") String hisOrdNum, @Param("cost") double cost);
 
     @Select("select count(1) from mzy_reqrec WITH(NOLOCK) where psordnum=#{tradeNo} and cancel_mark=0")
     int alreadyPaidRegisterFee(@Param("tradeNo") String tradeNo);

+ 9 - 10
src/main/java/thyyxxk/wxservice_server/service/WxApiService.java

@@ -68,22 +68,21 @@ public class WxApiService {
         if (param.getOrderType() == OrderType.REGISTRATION.getCode()) {
             existOrder = dao.selectSameGhOrder(param.getPatientId(), param.getMzyRequestId());
         } else if (param.getOrderType() == OrderType.OUTPATIENT.getCode()) {
-            existOrder = dao.selectSameMzPayOrder(param.getHisOrdNum());
+            existOrder = dao.selectSameMzPayOrder(param.getHisOrdNum(), param.getTotalFee().doubleValue());
         }
         if (null != existOrder) {
             if (existOrder.getPayStatus() == TradeState.SUCCESS.getCode()) {
-                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您已成功支付过一笔相同金额的订单,请勿重复支付。");
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您已支付过一笔相同金额的订单,请勿重复支付。");
             }
-            if (StringUtil.notBlank(existOrder.getPaySign()) && StringUtil.notBlank(existOrder.getPrepayId())) {
-                if (existOrder.getPayStatus() == TradeState.NEWORDER.getCode() || existOrder.getPayStatus() == TradeState.NOTPAY.getCode()) {
-                    if (DateUtil.orderValid(existOrder.getCreateDatetime())) {
-                        return ResultVoUtil.success(existOrder);
-                    }
-                }
-                if (null == param.getYjReqNo()) {
-                    param.setYjReqNo(existOrder.getYjReqNo());
+            if (existOrder.getPayStatus() == TradeState.NEWORDER.getCode() ||
+                    existOrder.getPayStatus() == TradeState.NOTPAY.getCode()) {
+                if (DateUtil.orderValid(existOrder.getCreateDatetime())) {
+                    return ResultVoUtil.success(existOrder);
                 }
             }
+            if (null == param.getYjReqNo()) {
+                param.setYjReqNo(existOrder.getYjReqNo());
+            }
         }
         String appId = PropertiesUtil.getProperty("appId");
         String merchantId = PropertiesUtil.getProperty("mchId");