Ver Fonte

Merge remote-tracking branch 'origin/bjcz_his_scrm' into bjcz_his_scrm

luolinsong há 2 semanas atrás
pai
commit
9aefacae37

+ 53 - 28
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -1,12 +1,9 @@
 package com.fs.hisStore.service.impl;
 
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
-import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
-import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
-import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetResponse;
-import cn.hutool.core.date.DateTime;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
+import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
 import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetResponse;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.net.URLDecoder;
@@ -145,7 +142,6 @@ import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang.ObjectUtils;
 import org.apache.http.util.Asserts;
-import me.chanjar.weixin.common.error.WxErrorException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.aop.framework.AopContext;
@@ -5464,8 +5460,35 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             request.setPayer(payerBean);
 
             // 上传物流信息
-            return wxService.getWxMaOrderShippingService().upload(request).getErrCode() == 0;
+            WxMaOrderShippingInfoBaseResponse re = wxService.getWxMaOrderShippingService().upload(request);
+            if(re.getErrCode() != 0){
+                // 微信错误代码10060001表示支付单不存在(老订单未对接微信官方发货)
+                if(re.getErrCode() == 10060001){
+                    log.warn("订单号: {} 在微信支付系统中不存在(错误代码:10060001),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
+                    return true; // 返回true让订单状态正常更新
+                // 微信错误代码10060003表示支付单已使用重新发货机会
+                } else if(re.getErrCode() == 10060003){
+                    log.warn("订单号: {} 支付单已使用重新发货机会(错误代码:10060003),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
+                    return true; // 返回true让订单状态正常更新
+                } else {
+                    log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getOrderNumber());
+                    return false;
+                }
+            }
+            return re.getErrCode() == 0;
         } catch (Exception e) {
+            // 捕获WxErrorException等异常
+            String errorMsg = e.getMessage();
+            // 检查是否是支付单不存在的错误
+            if(errorMsg != null && (errorMsg.contains("10060001") || errorMsg.contains("支付单不存在"))){
+                log.warn("订单号: {} 在微信支付系统中不存在,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
+            // 检查是否是支付单已使用重新发货机会的错误
+            if(errorMsg != null && (errorMsg.contains("10060003") || errorMsg.contains("支付单已使用重新发货机会"))){
+                log.warn("订单号: {} 支付单已使用重新发货机会,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
             log.error("上传物流信息到微信失败,订单号: {}", dto.getOrderNumber(), e);
             return false;
         }
@@ -5749,33 +5772,35 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             // 上传物流信息
             WxMaOrderShippingInfoBaseResponse re = wxService.getWxMaOrderShippingService().upload(request);
             if(re.getErrCode() != 0){
-                log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getOrderNumber());
-                return false;
+                // 微信错误代码10060001表示支付单不存在(老订单未对接微信官方发货)
+                if(re.getErrCode() == 10060001){
+                    log.warn("订单号: {} 在微信支付系统中不存在(错误代码:10060001),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
+                    return true; // 返回true让订单状态正常更新
+                // 微信错误代码10060003表示支付单已使用重新发货机会
+                } else if(re.getErrCode() == 10060003){
+                    log.warn("订单号: {} 支付单已使用重新发货机会(错误代码:10060003),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
+                    return true; // 返回true让订单状态正常更新
+                } else {
+                    log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getOrderNumber());
+                    return false;
+                }
             }
             return re.getErrCode() == 0;
         } catch (Exception e) {
+            // 捕获WxErrorException等异常
+            String errorMsg = e.getMessage();
+            // 检查是否是支付单不存在的错误
+            if(errorMsg != null && (errorMsg.contains("10060001") || errorMsg.contains("支付单不存在"))){
+                log.warn("订单号: {} 在微信支付系统中不存在,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
+            // 检查是否是支付单已使用重新发货机会的错误
+            if(errorMsg != null && (errorMsg.contains("10060003") || errorMsg.contains("支付单已使用重新发货机会"))){
+                log.warn("订单号: {} 支付单已使用重新发货机会,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
             log.error("上传物流信息到微信失败,订单号: {}", dto.getOrderNumber(), e);
             return false;
         }
     }
-
-//    private void batchUpdateDeliveryNotes(List<FsOrderDeliveryNoteDTO> list) {
-//        int batchSize = 500;
-//        int total = list.size();
-//        int batches = (total + batchSize - 1) / batchSize;
-//        for (int i = 0; i < batches; i++) {
-//            int start = i * batchSize;
-//            int end = Math.min(start + batchSize, total);
-//            List<FsOrderDeliveryNoteDTO> subList = list.subList(start, end);
-//            fsStoreOrderMapper.batchUpdateInOrderCode(subList);
-//        }
-//    }
-
-    private static final DateTimeFormatter DATE_ONLY_FORMATTER = DateTimeFormatter
-            .ofPattern("yyyy-MM-dd");
-
-//    public static String parseCstToDateOnlyString(String cstDateStr) {
-//        LocalDateTime dateTime = parseCstToLocalDateTime(cstDateStr);
-//        return dateTime != null ? dateTime.format(DATE_ONLY_FORMATTER) : null;
-//    }
 }

+ 29 - 1
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStorePaymentScrmServiceImpl.java

@@ -13,6 +13,7 @@ import java.util.stream.Collectors;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
+import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
@@ -1313,8 +1314,35 @@ public class FsStorePaymentScrmServiceImpl implements IFsStorePaymentScrmService
             payerBean.setOpenid(dto.getOpenId());
             request.setPayer(payerBean);
             // 上传物流信息
-            return wxService.getWxMaOrderShippingService().upload(request).getErrCode() == 0;
+            WxMaOrderShippingInfoBaseResponse re = wxService.getWxMaOrderShippingService().upload(request);
+            if(re.getErrCode() != 0){
+                // 微信错误代码10060001表示支付单不存在(老订单未对接微信官方发货)
+                if(re.getErrCode() == 10060001){
+                    log.warn("订单号: {} 在微信支付系统中不存在(错误代码:10060001),跳过微信发货上传,仍更新本地订单状态", dto.getBankTransactionId());
+                    return true; // 返回true让订单状态正常更新
+                // 微信错误代码10060003表示支付单已使用重新发货机会
+                } else if(re.getErrCode() == 10060003){
+                    log.warn("订单号: {} 支付单已使用重新发货机会(错误代码:10060003),跳过微信发货上传,仍更新本地订单状态", dto.getBankTransactionId());
+                    return true; // 返回true让订单状态正常更新
+                } else {
+                    log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getBankTransactionId());
+                    return false;
+                }
+            }
+            return re.getErrCode() == 0;
         } catch (Exception e) {
+            // 捕获WxErrorException等异常
+            String errorMsg = e.getMessage();
+            // 检查是否是支付单不存在的错误
+            if(errorMsg != null && (errorMsg.contains("10060001") || errorMsg.contains("支付单不存在"))){
+                log.warn("订单号: {} 在微信支付系统中不存在,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getBankTransactionId(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
+            // 检查是否是支付单已使用重新发货机会的错误
+            if(errorMsg != null && (errorMsg.contains("10060003") || errorMsg.contains("支付单已使用重新发货机会"))){
+                log.warn("订单号: {} 支付单已使用重新发货机会,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getBankTransactionId(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
             log.error("上传物流信息到微信失败,订单号: {}", dto.getBankTransactionId(), e);
             return false;
         }

+ 20 - 1
fs-service/src/main/java/com/fs/live/service/impl/LiveOrderServiceImpl.java

@@ -17,6 +17,7 @@ import java.util.stream.Collectors;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.shop.request.shipping.*;
+import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoBaseResponse;
 import cn.binarywang.wx.miniapp.bean.shop.response.WxMaOrderShippingInfoGetResponse;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateTime;
@@ -3470,8 +3471,26 @@ public class LiveOrderServiceImpl implements ILiveOrderService {
             request.setPayer(payerBean);
 
             // 上传物流信息
-            return wxService.getWxMaOrderShippingService().upload(request).getErrCode() == 0;
+            WxMaOrderShippingInfoBaseResponse re = wxService.getWxMaOrderShippingService().upload(request);
+            if(re.getErrCode() != 0){
+                // 微信错误代码10060001表示支付单不存在(老订单未对接微信官方发货)
+                if(re.getErrCode() == 10060001){
+                    log.warn("订单号: {} 在微信支付系统中不存在(错误代码:10060001),跳过微信发货上传,仍更新本地订单状态", dto.getOrderNumber());
+                    return true; // 返回true让订单状态正常更新
+                } else {
+                    log.error("上传物流信息到微信失败-{},订单号: {}", re.getErrMsg(), dto.getOrderNumber());
+                    return false;
+                }
+            }
+            return re.getErrCode() == 0;
         } catch (Exception e) {
+            // 捕获WxErrorException等异常
+            String errorMsg = e.getMessage();
+            // 检查是否是支付单不存在的错误
+            if(errorMsg != null && (errorMsg.contains("10060001") || errorMsg.contains("支付单不存在"))){
+                log.warn("订单号: {} 在微信支付系统中不存在,跳过微信发货上传,仍更新本地订单状态。错误详情: {}", dto.getOrderNumber(), errorMsg);
+                return true; // 返回true让订单状态正常更新
+            }
             log.error("上传物流信息到微信失败,订单号: {}", dto.getOrderNumber(), e);
             return false;
         }

+ 17 - 0
fs-service/src/main/java/com/fs/live/service/impl/LiveServiceImpl.java

@@ -270,6 +270,23 @@ public class LiveServiceImpl implements ILiveService
 		LiveVo liveVo = new LiveVo();
         // liveVo.setStoreId(storeId);
 		BeanUtils.copyProperties(live, liveVo);
+
+		if (StringUtils.isNotEmpty(live.getFlvHlsUrl())) {
+		    String originalUrl = live.getFlvHlsUrl();
+		    try {
+		        int queryIndex = originalUrl.indexOf('?');
+		        String queryParams = "";
+		        if (queryIndex != -1) {
+		            queryParams = originalUrl.substring(queryIndex);
+		        }
+		        String formattedUrl = String.format("https://live.moonxiang.com/live/%d.m3u8%s", id, queryParams);
+		        liveVo.setFlvHlsUrl(formattedUrl);
+		    } catch (Exception e) {
+		        log.error("解析推流地址失败, liveId={}, url={}", id, originalUrl, e);
+		        liveVo.setFlvHlsUrl(originalUrl);
+		    }
+		}
+
 		liveVo.setNowDuration(200L);
 
         Boolean completionPointsEnabled = false;