Преглед изворни кода

开放接口 订单状态通知

叶君翔 пре 3 година
родитељ
комит
a1bce3cf19

+ 2 - 1
lb-app/src/main/java/com/ydd/app/service/OpenApiNotifyService.java

@@ -1,5 +1,6 @@
 package com.ydd.app.service;
 
+import com.ydd.app.vo.OrderStatusNotifyVo;
 import com.ydd.app.vo.StoreStatusNotifyVo;
 
 /**
@@ -19,6 +20,6 @@ public interface OpenApiNotifyService {
      * 订单状态通知
      * @param orderStatusNotifyVo
      */
-    void orderStatusNotify(StoreStatusNotifyVo orderStatusNotifyVo);
+    void orderStatusNotify(OrderStatusNotifyVo orderStatusNotifyVo);
 
 }

+ 25 - 4
lb-app/src/main/java/com/ydd/app/service/impl/ApiOrderBackServiceImpl.java

@@ -8,11 +8,9 @@ import com.ydd.api.DeliveryService;
 import com.ydd.api.MeiTuanApi;
 import com.ydd.api.WaimaiApi;
 import com.ydd.app.callback.controller.ShanTangSignUtils;
-import com.ydd.app.service.ApiCouponService;
-import com.ydd.app.service.ApiOrderBackService;
-import com.ydd.app.service.ApiOrderNewService;
-import com.ydd.app.service.ApiRiderLocationService;
+import com.ydd.app.service.*;
 import com.ydd.app.task.SyncRiderEvent;
+import com.ydd.app.vo.OrderStatusNotifyVo;
 import com.ydd.common.core.redis.RedisCache;
 import com.ydd.common.enums.DeliveryTypeEnums;
 import com.ydd.common.enums.DeliveryTypeMeituanCodeEnums;
@@ -109,6 +107,8 @@ public class ApiOrderBackServiceImpl implements ApiOrderBackService {
     private final IShopJdHomeService iShopJdHomeService;
     private final IShopJdHomeCodeService iShopJdHomeCodeService;
 
+    private final OpenApiNotifyService openApiNotifyService;
+
     @Async
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -272,6 +272,27 @@ public class ApiOrderBackServiceImpl implements ApiOrderBackService {
                 iOrderLogService.addOrderLog(order.getId(), order.getDeliveryStatus());
             }
             iOrderService.updateById(order);
+
+            // todo: 开放平台推送订单状态
+            Merchant merchant = iMerchantService.getById(order.getMerchantId());
+            if (merchant != null && merchant.getAppId() != null) {
+                OrderStatusNotifyVo notifyVo = OrderStatusNotifyVo.builder()
+                        .outOrderSn(order.getOutTradeNo())
+                        .orderSn(order.getOrderSn())
+                        .status(order.getDeliveryStatus())
+                        .deliveryId(order.getDeliveryType())
+                        .deliveryName(order.getDeliveryName())
+                        .shipperName(order.getShipperName())
+                        .shipperPhone(order.getShipperPhone())
+                        .deliveryAmount(order.getPayAmount().add(order.getCouponAmount()))
+                        .discountAmount(order.getCouponAmount())
+                        .needPayAmount(order.getPayAmount())
+                        .deductAmount(order.getBreachFee())
+                        .build();
+                notifyVo.setAppId(merchant.getAppId());
+                openApiNotifyService.orderStatusNotify(notifyVo);
+            }
+
             //若配送的是外卖订单,同步三方外卖平台配送状态
             WaimaiOrder waimaiOrder = new WaimaiOrder();
             try {

+ 2 - 1
lb-app/src/main/java/com/ydd/app/service/impl/OpenApiNotifyServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ydd.app.service.impl;
 
 import com.ydd.app.service.OpenApiNotifyService;
+import com.ydd.app.vo.OrderStatusNotifyVo;
 import com.ydd.app.vo.StoreStatusNotifyVo;
 import com.ydd.common.constant.RabbitConstant;
 import com.ydd.module.constants.AppConstant;
@@ -35,7 +36,7 @@ public class OpenApiNotifyServiceImpl implements OpenApiNotifyService {
     }
 
     @Override
-    public void orderStatusNotify(StoreStatusNotifyVo orderStatusNotifyVo) {
+    public void orderStatusNotify(OrderStatusNotifyVo orderStatusNotifyVo) {
         List<Integer> durations = AppConstant.NOTIFY_INTERVAL_DURATION;
         for (int i = 0; i < durations.size(); i++) {
             // 记录推送次数, 超过规定总次数后做处理: 入库或者其他

+ 22 - 0
lb-app/src/main/java/com/ydd/app/vo/OrderStatusNotifyVo.java

@@ -7,6 +7,8 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.math.BigDecimal;
+
 /**
  * 订单状态通知参数
  * @author 叶君翔
@@ -54,6 +56,26 @@ public class OrderStatusNotifyVo extends BaseDto {
     private String shipperPhone;
 
     /**
+     * 预估运费金额,单位: 元
+     */
+    private BigDecimal deliveryAmount;
+
+    /**
+     * 优惠金额,单位: 元
+     */
+    private BigDecimal discountAmount;
+
+    /**
+     * 最终需支付金额,单位: 元
+     */
+    private BigDecimal needPayAmount;
+
+    /**
+     * 违约金,单位: 元
+     */
+    private BigDecimal deductAmount;
+
+    /**
      * 通知次数
      */
     @JsonIgnore

+ 1 - 1
lb-app/src/main/java/com/ydd/app/vo/OrderValuationVo.java

@@ -23,7 +23,7 @@ public class OrderValuationVo {
     private String deliveryName;
 
     /**
-     * 距离, 单位mi
+     * 距离, 单位: 米
      */
     private String distance;