Procházet zdrojové kódy

开放接口 门店状态回调通知

叶君翔 před 3 roky
rodič
revize
0cfd5567aa

+ 4 - 1
doc/open_api.sql

@@ -14,4 +14,7 @@ CREATE TABLE `lb_shop_delivery_disable` (
 
 -- 应用表增加通知字段
 ALTER TABLE `lb_app_info` ADD COLUMN `store_status_notify_url` varchar(255) DEFAULT NULL COMMENT '门店状态通知接口';
-ALTER TABLE `lb_app_info` ADD COLUMN `order_status_notify_url` varchar(255) DEFAULT NULL COMMENT '订单状态通知接口';
+ALTER TABLE `lb_app_info` ADD COLUMN `order_status_notify_url` varchar(255) DEFAULT NULL COMMENT '订单状态通知接口';
+
+-- 商户表增加应用ID
+ALTER TABLE `lb_merchant` ADD COLUMN `app_id` varchar(50) DEFAULT NULL COMMENT 'appId';

+ 26 - 8
lb-app/src/main/java/com/ydd/app/callback/controller/MeituanDeliveryCallback.java

@@ -4,20 +4,17 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ydd.api.DeliveryCallbackApi;
 import com.ydd.app.service.ApiOrderBackService;
+import com.ydd.app.service.OpenApiNotifyService;
 import com.ydd.app.service.impl.ApiCallBackContent;
 import com.ydd.app.service.impl.ApiCallBackMeiTuan;
 import com.ydd.app.service.impl.ApiCallBackMeiTuanZb;
+import com.ydd.app.vo.StoreStatusNotifyVo;
 import com.ydd.common.enums.DeliveryTypeEnums;
-import com.ydd.module.domain.Order;
-import com.ydd.module.domain.OrderDelivery;
-import com.ydd.module.domain.ShopDelivery;
+import com.ydd.module.domain.*;
 import com.ydd.module.dto.CallBackOrderDto;
 import com.ydd.module.enums.BindStatusEnum;
 import com.ydd.module.enums.OrderStatusEnum;
-import com.ydd.module.service.IOrderDeliveryService;
-import com.ydd.module.service.IOrderService;
-import com.ydd.module.service.IShopDeliveryBindService;
-import com.ydd.module.service.IShopDeliveryService;
+import com.ydd.module.service.*;
 import com.ydd.third.common.utils.StringUtils;
 import com.ydd.third.common.vo.ResObject;
 import com.ydd.third.common.vo.callback.CallBackOrderVo;
@@ -60,7 +57,14 @@ public class MeituanDeliveryCallback {
     private IOrderService iOrderService;
 
     @Resource
-    private IShopDeliveryBindService iShopDeliveryBindService;
+    private IMerchantService iMerchantService;
+
+    @Resource
+    private OpenApiNotifyService openApiNotifyService;
+
+    @Resource
+    private IDspDeliveryService iDspDeliveryService;
+
     /**
      * 授权
      * @param params
@@ -207,6 +211,20 @@ public class MeituanDeliveryCallback {
                     shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
                 }
                 iShopDeliveryService.updateById(shopDelivery);
+
+                // 开放平台发送状态变更通知
+                Merchant merchant = iMerchantService.getById(shopDelivery.getMerchantId());
+                if (merchant != null && merchant.getAppId() != null) {
+                    DspDelivery dspDelivery = iDspDeliveryService.findById(shopDelivery.getDeliveryId());
+                    StoreStatusNotifyVo notifyVo = StoreStatusNotifyVo.builder()
+                            .shopCode(shopDelivery.getShopNo())
+                            .deliveryId(dspDelivery.getType())
+                            .status(shopDelivery.getBindStatus())
+                            .failMsg(shopDelivery.getAuthMsg())
+                            .build();
+                    notifyVo.setAppId(merchant.getAppId());
+                    openApiNotifyService.storeStatusNotify(notifyVo);
+                }
             }
         } else {
             jsonObject.put("code",-1);

+ 4 - 4
lb-app/src/main/java/com/ydd/app/consumer/DelayStatusNotifyListener.java

@@ -134,11 +134,11 @@ public class DelayStatusNotifyListener {
             e.printStackTrace();
         }
         notifyVo.setSign(sign);
-        String storeStatusNotifyVoStr = JSONObject.toJSONString(notifyVo);
+        String orderStatusNotifyVoStr = JSONObject.toJSONString(notifyVo);
         try {
-            storeStatusNotifyVoStr = URLEncoder.encode(storeStatusNotifyVoStr,"utf-8");
-            log.info("订单状态同步请求参数: {}", storeStatusNotifyVoStr);
-            String resp = HttpUtils.sendPost(appInfo.getStoreStatusNotifyUrl(), storeStatusNotifyVoStr);
+            orderStatusNotifyVoStr = URLEncoder.encode(orderStatusNotifyVoStr,"utf-8");
+            log.info("订单状态同步请求参数: {}", orderStatusNotifyVoStr);
+            String resp = HttpUtils.sendPost(appInfo.getOrderStatusNotifyUrl(), orderStatusNotifyVoStr);
             log.info("订单状态同步返回结果: {}", resp);
             // 收到成功响应后存入缓存, 后续不再推送
             if (ResponseResultCodeEnum.SUCCESS.getMessage().equals(resp)) {

+ 30 - 0
lb-app/src/main/java/com/ydd/app/service/impl/ApiShopServiceImpl.java

@@ -7,6 +7,8 @@ import com.ydd.app.ShopEditUtils;
 import com.ydd.app.ShopEntityUtils;
 import com.ydd.app.dto.ShopReq;
 import com.ydd.app.service.ApiShopService;
+import com.ydd.app.service.OpenApiNotifyService;
+import com.ydd.app.vo.StoreStatusNotifyVo;
 import com.ydd.common.enums.DeliveryTypeEnums;
 import com.ydd.common.utils.SnCodeUtils;
 import com.ydd.common.utils.StringUtils;
@@ -70,6 +72,8 @@ public class ApiShopServiceImpl implements ApiShopService {
 
     private final IShopUserService iShopUserService;
 
+    private final OpenApiNotifyService openApiNotifyService;
+
     @Override
     public List<ShopDto> findList(Long loginId) {
         Member member = iMemberService.getById(loginId);
@@ -633,6 +637,19 @@ public class ApiShopServiceImpl implements ApiShopService {
 
             }
             iShopDeliveryService.updateById(sd);
+
+            // 开放平台发送状态变更通知
+            Merchant merchant = iMerchantService.getById(shop.getMerchantId());
+            if (merchant != null && merchant.getAppId() != null) {
+                StoreStatusNotifyVo notifyVo = StoreStatusNotifyVo.builder()
+                        .shopCode(sd.getShopNo())
+                        .deliveryId(DeliveryTypeEnums.FENG_NIAO.getType())
+                        .status(sd.getBindStatus())
+                        .failMsg(sd.getAuthMsg())
+                        .build();
+                notifyVo.setAppId(merchant.getAppId());
+                openApiNotifyService.storeStatusNotify(notifyVo);
+            }
         }
     }
 
@@ -662,6 +679,19 @@ public class ApiShopServiceImpl implements ApiShopService {
                 sd.setAuthMsg(storeVo.getModifyStatusDesc());
             }
             iShopDeliveryService.updateById(sd);
+
+            // 开放平台发送状态变更通知
+            Merchant merchant = iMerchantService.getById(shop.getMerchantId());
+            if (merchant != null && merchant.getAppId() != null) {
+                StoreStatusNotifyVo notifyVo = StoreStatusNotifyVo.builder()
+                        .shopCode(sd.getShopNo())
+                        .deliveryId(DeliveryTypeEnums.FENG_NIAO.getType())
+                        .status(sd.getBindStatus())
+                        .failMsg(sd.getAuthMsg())
+                        .build();
+                notifyVo.setAppId(merchant.getAppId());
+                openApiNotifyService.storeStatusNotify(notifyVo);
+            }
         }
     }
 

+ 5 - 0
lb-module/src/main/java/com/ydd/module/domain/Merchant.java

@@ -195,6 +195,11 @@ private static final long serialVersionUID=1L;
     private Long freightPackageId;
 
     /**
+     * appId
+     */
+    private String appId;
+
+    /**
      * 配送商名称
      */
     @TableField(exist = false)