Selaa lähdekoodia

平台accessToken统一管理,去掉大哥看着烦的douyinservice

Veronique 2 vuotta sitten
vanhempi
commit
e7e37c03e0
26 muutettua tiedostoa jossa 101 lisäystä ja 314 poistoa
  1. 8 2
      conf/application-ddWebOne.xml
  2. 9 0
      conf/platformProperty/DYLK.properties
  3. 1 4
      conf/script/1000/orderApi/BE_Order_AcceptOrder_DYLK.groovy
  4. 5 3
      conf/script/1000/orderApi/BE_Order_AcceptOrder_Request.groovy
  5. 1 4
      conf/script/1000/orderApi/BE_Order_BillConfirm_DYLK.groovy
  6. 1 4
      conf/script/1000/orderApi/BE_Order_CancelOrder_DYLK.groovy
  7. 1 4
      conf/script/1000/orderApi/BE_Order_CompleteOrder_DYLK.groovy
  8. 5 3
      conf/script/1000/orderApi/BE_Order_CookingDone_Request.groovy
  9. 2 1
      conf/script/1000/orderApi/BE_Order_CreateOrder_DYLK.groovy
  10. 5 4
      conf/script/1000/orderApi/BE_Order_DeliveryChange_DYLK.groovy
  11. 1 4
      conf/script/1000/orderApi/BE_Order_PartRefund_DYLK.groovy
  12. 1 4
      conf/script/1000/orderApi/BE_Order_ProcessRefund_DYLK.groovy
  13. 6 4
      conf/script/1000/orderApi/BE_Order_ProcessRefund_Request.groovy
  14. 1 4
      conf/script/1000/orderApi/BE_Order_RejectOrder_DYLK.groovy
  15. 6 3
      conf/script/1000/orderApi/BE_Order_RejectOrder_Request.groovy
  16. 8 5
      conf/script/1000/orderApi/BE_Order_StoreCancelOrder_Request.groovy
  17. 6 3
      conf/script/1000/orderApi/BE_Order_SubmitDeliveryInfo_DYLK.groovy
  18. 1 4
      conf/script/1000/orderApi/BE_Order_UserRefundRequest_DYLK.groovy
  19. 2 3
      conf/script/1000/platformToken/BE_Invoke_GetInvoker_DYLK.groovy
  20. 2 3
      conf/script/1000/platformToken/BE_Invoke_PostInvoker_DYLK.groovy
  21. 3 29
      conf/script/1000/platformToken/BE_Token_RefreshAccessToken_DYLK.groovy
  22. 5 4
      conf/script/1000/storeApi/BE_Store_BindStorePlatform_DYLK.groovy
  23. 0 177
      ddBusiness/src/main/java/com/dderp/business/service/flycat/IncomePlatformServiceImpl.java
  24. 8 15
      ddBusiness/src/main/java/com/dderp/business/service/flycat/PlatformAccessTokenServiceImpl.java
  25. 0 10
      ddCommon/src/main/java/com/dderp/common/api/flycat/IncomePlatformService.java
  26. 13 13
      ddWebCore/src/main/java/com/dderp/webcore/servlet/OrderCallServlet.java

+ 8 - 2
conf/application-ddWebOne.xml

@@ -281,10 +281,16 @@
                 <isUseScriptService value="true"/>
             </service>
 
-            <service value="com.dderp.business.service.flycat.IncomePlatformServiceImpl" groups="DELIVER_SERVICE_REMOTE">
+<!--            <service value="com.dderp.business.service.flycat.IncomePlatformServiceImpl" groups="DELIVER_SERVICE_REMOTE">-->
+<!--                <master value="true"/>-->
+<!--                <environment value="release"/>-->
+<!--                <isUseScriptService value="false"/>-->
+<!--            </service>-->
+
+            <service value="com.dderp.business.service.flycat.PlatformAccessTokenServiceImpl" groups="DELIVER_SERVICE_REMOTE">
                 <master value="true"/>
                 <environment value="release"/>
-                <isUseScriptService value="false"/>
+                <isUseScriptService value="true"/>
             </service>
 
             <service value="com.dderp.business.service.flycat.OrderServiceImpl" groups="DELIVER_SERVICE_REMOTE">

+ 9 - 0
conf/platformProperty/DYLK.properties

@@ -0,0 +1,9 @@
+#抖音来客
+#请求地址
+reqUrl=https://open.douyin.com
+#商户授权url地址
+storeBindUrl=https://auth.dylk.com/auth-isv
+#appId
+appId=awd61ulpox5tdzhe
+#appSecret
+appSecret=ab3e8b197052198143df8cdcba350fb6

+ 1 - 4
conf/script/1000/orderApi/BE_Order_AcceptOrder_DYLK.groovy

@@ -2,7 +2,7 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -67,9 +67,6 @@ class BE_Order_AcceptOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
-
-    @Resource
     private TunaService tunaService
 
     private OrderDao orderDao

+ 5 - 3
conf/script/1000/orderApi/BE_Order_AcceptOrder_Request.groovy

@@ -2,10 +2,11 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
+import com.dderp.common.api.flycat.PlatformAccessTokenService
 import com.dderp.common.datas.ERPModule
 import com.dderp.common.datas.TokenUserFrom
 import com.dderp.common.entity.base.InvokeCallParams
@@ -56,7 +57,7 @@ class BE_Order_AcceptOrder_Request implements BusinessExecutor<InvokeCallParams,
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
+    private PlatformAccessTokenService tokenService
 
     @Resource
     private TunaService tunaService
@@ -127,7 +128,8 @@ class BE_Order_AcceptOrder_Request implements BusinessExecutor<InvokeCallParams,
                         order_id:
                                 esOrder.incomePlatformOrderCode
                 ]
-                String responseStr = douyinService.dyPostInvoker("/goodlife/v1/trade/buy/merchant_confirm_order/", jsonConvert.convertTo(postBody))
+                String responseStr = tokenService.postInvoker("DYLK", "/goodlife/v1/trade/buy/merchant_confirm_order/", jsonConvert.convertTo(postBody),
+                        dataSourceId, String.valueOf(supplierCode))
                 def response = jsonSlurper.parseText(responseStr)
                 if (response["data"]["error_code"] as Integer == 0) {
                     return RetResult.<InvokeCallResult> successT()

+ 1 - 4
conf/script/1000/orderApi/BE_Order_BillConfirm_DYLK.groovy

@@ -2,7 +2,7 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -70,9 +70,6 @@ class BE_Order_BillConfirm_DYLK implements BusinessExecutor<InvokeCallParams, In
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
-
-    @Resource
     private TunaService tunaService
 
     private OrderDao orderDao

+ 1 - 4
conf/script/1000/orderApi/BE_Order_CancelOrder_DYLK.groovy

@@ -2,7 +2,7 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -70,9 +70,6 @@ class BE_Order_CancelOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
     @Resource
     private OrderSearchService orderSearchService
 
-    @Resource
-    private IncomePlatformService douyinService
-
     @Resource(name = "APP_HOME")
     private String appHome
 

+ 1 - 4
conf/script/1000/orderApi/BE_Order_CompleteOrder_DYLK.groovy

@@ -2,7 +2,7 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -68,9 +68,6 @@ class BE_Order_CompleteOrder_DYLK implements BusinessExecutor<InvokeCallParams,
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
-
-    @Resource
     private TunaService tunaService
 
     private OrderDao orderDao

+ 5 - 3
conf/script/1000/orderApi/BE_Order_CookingDone_Request.groovy

@@ -2,10 +2,11 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
+import com.dderp.common.api.flycat.PlatformAccessTokenService
 import com.dderp.common.datas.ERPModule
 import com.dderp.common.datas.TokenUserFrom
 import com.dderp.common.entity.base.InvokeCallParams
@@ -56,7 +57,7 @@ class BE_Order_CookingDone_Request implements BusinessExecutor<InvokeCallParams,
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
+    private PlatformAccessTokenService tokenService
 
     @Resource
     private TunaService tunaService
@@ -127,7 +128,8 @@ class BE_Order_CookingDone_Request implements BusinessExecutor<InvokeCallParams,
                         order_id:
                                 esOrder.incomePlatformOrderCode
                 ]
-                String responseStr = douyinService.dyPostInvoker("/goodlife/v1/hermes/preparation/complete/confirm/", jsonConvert.convertTo(postBody))
+                String responseStr = tokenService.postInvoker("DYLK", "/goodlife/v1/hermes/preparation/complete/confirm/", jsonConvert.convertTo(postBody),
+                        dataSourceId, String.valueOf(supplierCode))
                 def response = jsonSlurper.parseText(responseStr)
                 if (response["data"]["error_code"] as Integer == 0) {
                     return RetResult.<InvokeCallResult> successT()

+ 2 - 1
conf/script/1000/orderApi/BE_Order_CreateOrder_DYLK.groovy

@@ -200,7 +200,8 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
             item.setIdOrder(businessOrder.id)
             item.setItemName(it["product_name"] as String)
             item.setItemCount(it["num"] as int)
-            item.setItemMoney(it["origin_amount"] as BigDecimal)
+            item.setItemPrice(ERPUtils.money(it["origin_amount"] as int))
+            item.setItemMoney((item.itemPrice * item.itemCount).setScale(2, RoundingMode.CEILING))
             item.setItemDetail(jsonConvert.convertTo(it["commodities"]))
             OrderDetailItem.create(item, currentUser.id)
 

+ 5 - 4
conf/script/1000/orderApi/BE_Order_DeliveryChange_DYLK.groovy

@@ -2,10 +2,11 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
+import com.dderp.common.api.flycat.PlatformAccessTokenService
 import com.dderp.common.datas.ERPModule
 import com.dderp.common.datas.ESKeys
 import com.dderp.common.datas.ReadOrderOption
@@ -36,7 +37,6 @@ import org.elasticsearch.common.xcontent.XContentType
 import org.rex.RMap
 
 import javax.annotation.Resource
-import java.math.RoundingMode
 import java.time.LocalDateTime
 import java.time.ZoneOffset
 
@@ -72,7 +72,7 @@ class BE_Order_DeliveryChange_DYLK implements BusinessExecutor<InvokeCallParams,
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
+    private PlatformAccessTokenService tokenService
 
     @Resource
     private TunaService tunaService
@@ -131,7 +131,8 @@ class BE_Order_DeliveryChange_DYLK implements BusinessExecutor<InvokeCallParams,
                 order_id  : incomePlatformOrderCode,
                 account_id: platformAccountId
         ]
-        String responseStr = douyinService.dyGetInvoker("/goodlife/v1/hermes/trade/order/query/", jsonConvert.convertTo(postBody))
+        String responseStr = tokenService.getInvoker("DYLK", "/goodlife/v1/hermes/trade/order/query/", jsonConvert.convertTo(postBody),
+                dataSourceId, String.valueOf(supplierCode))
         def response = jsonSlurper.parseText(responseStr)
 
         StringBuilder sb = new StringBuilder()

+ 1 - 4
conf/script/1000/orderApi/BE_Order_PartRefund_DYLK.groovy

@@ -2,7 +2,7 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -71,9 +71,6 @@ class BE_Order_PartRefund_DYLK implements BusinessExecutor<InvokeCallParams, Inv
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
-
-    @Resource
     private TunaService tunaService
 
     private OrderDao orderDao

+ 1 - 4
conf/script/1000/orderApi/BE_Order_ProcessRefund_DYLK.groovy

@@ -2,7 +2,7 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -69,9 +69,6 @@ class BE_Order_ProcessRefund_DYLK implements BusinessExecutor<InvokeCallParams,
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
-
-    @Resource
     private TunaService tunaService
 
     private OrderDao orderDao

+ 6 - 4
conf/script/1000/orderApi/BE_Order_ProcessRefund_Request.groovy

@@ -2,15 +2,15 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
+import com.dderp.common.api.flycat.PlatformAccessTokenService
 import com.dderp.common.datas.ERPModule
 import com.dderp.common.datas.TokenUserFrom
 import com.dderp.common.entity.base.InvokeCallParams
 import com.dderp.common.entity.base.InvokeCallResult
-import com.dderp.common.entity.order.BusinessOrder
 import com.dderp.common.entity.order.OrderRefundRequest
 import com.dderp.common.entity.site.ERPTokenUser
 import com.dderp.common.tool.ERPUtils
@@ -58,7 +58,7 @@ class BE_Order_ProcessRefund_Request implements BusinessExecutor<InvokeCallParam
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
+    private PlatformAccessTokenService tokenService
 
     @Resource
     private TunaService tunaService
@@ -188,7 +188,9 @@ class BE_Order_ProcessRefund_Request implements BusinessExecutor<InvokeCallParam
                         }
                 ]
 
-                String responseStr = douyinService.dyPostInvoker("/goodlife/v1/after_sale/audit/notify/", jsonConvert.convertTo(postBody))
+//                String responseStr = douyinService.dyPostInvoker("/goodlife/v1/after_sale/audit/notify/", jsonConvert.convertTo(postBody))
+                String responseStr = tokenService.postInvoker("DYLK", "/goodlife/v1/after_sale/audit/notify/", jsonConvert.convertTo(postBody),
+                        dataSourceId, String.valueOf(supplierCode))
                 def response = jsonSlurper.parseText(responseStr)
                 if (response["extra"]["error_code"] as Integer == 0) {
                     return RetResult.<InvokeCallResult> successT()

+ 1 - 4
conf/script/1000/orderApi/BE_Order_RejectOrder_DYLK.groovy

@@ -2,7 +2,7 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -72,9 +72,6 @@ class BE_Order_RejectOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
-
-    @Resource
     private TunaService tunaService
 
     private OrderDao orderDao

+ 6 - 3
conf/script/1000/orderApi/BE_Order_RejectOrder_Request.groovy

@@ -2,10 +2,11 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
+import com.dderp.common.api.flycat.PlatformAccessTokenService
 import com.dderp.common.datas.TokenUserFrom
 import com.dderp.common.datas.flycat.BusinessOrderStatus
 import com.dderp.common.datas.ERPModule
@@ -57,7 +58,7 @@ class BE_Order_RejectOrder_Request implements BusinessExecutor<InvokeCallParams,
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
+    private PlatformAccessTokenService tokenService
 
     @Resource
     private TunaService tunaService
@@ -130,7 +131,9 @@ class BE_Order_RejectOrder_Request implements BusinessExecutor<InvokeCallParams,
                                 desc       : invokeOrder["description"]
                         ]
                 ]
-                String responseStr = douyinService.dyPostInvoker("/goodlife/v1/after_sale/order/merchant_reject/", jsonConvert.convertTo(postBody))
+//                String responseStr = douyinService.dyPostInvoker("/goodlife/v1/after_sale/order/merchant_reject/", jsonConvert.convertTo(postBody))
+                String responseStr = tokenService.postInvoker("DYLK", "/goodlife/v1/after_sale/order/merchant_reject/", jsonConvert.convertTo(postBody),
+                        dataSourceId, String.valueOf(supplierCode))
                 def response = jsonSlurper.parseText(responseStr)
                 if (response["extra"]["error_code"] as Integer == 0) {
                     return RetResult.<InvokeCallResult> successT()

+ 8 - 5
conf/script/1000/orderApi/BE_Order_StoreCancelOrder_Request.groovy

@@ -2,10 +2,11 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
+import com.dderp.common.api.flycat.PlatformAccessTokenService
 import com.dderp.common.datas.TokenUserFrom
 import com.dderp.common.datas.flycat.BusinessOrderStatus
 import com.dderp.common.datas.ERPModule
@@ -57,7 +58,7 @@ class BE_Order_StoreCancelOrder_Request implements BusinessExecutor<InvokeCallPa
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
+    private PlatformAccessTokenService tokenService
 
     @Resource(name = "APP_HOME")
     private String appHome
@@ -156,14 +157,16 @@ class BE_Order_StoreCancelOrder_Request implements BusinessExecutor<InvokeCallPa
                                 desc       : invokeOrder["description"]
                         ]
                 ]
-                String responseStr = douyinService.dyPostInvoker("/goodlife/v1/after_sale/order/apply_refund/", jsonConvert.convertTo(postBody))
+//                String responseStr = douyinService.dyPostInvoker("/goodlife/v1/after_sale/order/apply_refund/", jsonConvert.convertTo(postBody))
+                String responseStr = tokenService.postInvoker("DYLK", "/goodlife/v1/after_sale/order/apply_refund/", jsonConvert.convertTo(postBody),
+                        dataSourceId, String.valueOf(supplierCode))
                 def response = jsonSlurper.parseText(responseStr)
                 if (response["extra"]["error_code"] as Integer == 0) {
-                    return RetResult.<InvokeCallResult>successT()
+                    return RetResult.<InvokeCallResult> successT()
                 } else {
                     //todo 抖音侧调用失败,怎么处理?
                     logger.error("[抖音来客]商户发起退单接口调用失败:" + response["extra"]["description"] as String)
-                    return RetResult.<InvokeCallResult>errorT().retinfo("[抖音来客]商户发起退单接口调用失败:" + response["extra"]["description"] as String)
+                    return RetResult.<InvokeCallResult> errorT().retinfo("[抖音来客]商户发起退单接口调用失败:" + response["extra"]["description"] as String)
                 }
 
             }

+ 6 - 3
conf/script/1000/orderApi/BE_Order_SubmitDeliveryInfo_DYLK.groovy

@@ -2,10 +2,11 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
+import com.dderp.common.api.flycat.PlatformAccessTokenService
 import com.dderp.common.datas.ERPModule
 import com.dderp.common.entity.base.InvokeCallParams
 import com.dderp.common.entity.base.InvokeCallResult
@@ -55,7 +56,7 @@ class BE_Order_SubmitDeliveryInfo_DYLK implements BusinessExecutor<InvokeCallPar
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
+    private PlatformAccessTokenService tokenService
 
     @Resource
     private TunaService tunaService
@@ -124,7 +125,9 @@ class BE_Order_SubmitDeliveryInfo_DYLK implements BusinessExecutor<InvokeCallPar
                 rider_phone_type : invokeOrder["rider_phone_type"] as int,
                 three_delivery_id: invokeOrder["three_delivery_id"] as String
         ]
-        String responseStr = douyinService.dyPostInvoker("/goodlife/v1/fulfilment/distribution/order/sync_status/", jsonConvert.convertTo(postBody))
+//        String responseStr = douyinService.dyPostInvoker("/goodlife/v1/fulfilment/distribution/order/sync_status/", jsonConvert.convertTo(postBody))
+        String responseStr = tokenService.postInvoker("DYLK", "/goodlife/v1/fulfilment/distribution/order/sync_status/", jsonConvert.convertTo(postBody),
+                dataSourceId, String.valueOf(supplierCode))
         def response = jsonSlurper.parseText(responseStr)
         if (response["extra"]["error_code"] as Integer == 0) {
             return RetResult.<InvokeCallResult> successT()

+ 1 - 4
conf/script/1000/orderApi/BE_Order_UserRefundRequest_DYLK.groovy

@@ -2,7 +2,7 @@ import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.StoreService
 import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
+
 import com.dderp.common.api.flycat.OrderSearchService
 import com.dderp.common.api.flycat.OrderService
 import com.dderp.common.api.flycat.OrderStepService
@@ -70,9 +70,6 @@ class BE_Order_UserRefundRequest_DYLK implements BusinessExecutor<InvokeCallPara
     private OrderSearchService orderSearchService
 
     @Resource
-    private IncomePlatformService douyinService
-
-    @Resource
     private TunaService tunaService
 
     private OrderDao orderDao

+ 2 - 3
conf/script/1000/platformToken/BE_Invoke_GetInvoker_DYLK.groovy

@@ -46,7 +46,7 @@ class BE_Invoke_GetInvoker_DYLK implements BusinessExecutor<ProcessMapItem, Scri
     }
 
     @Override
-    RetResult<ProcessMapItem> beforeExecute(ProcessMapItem source) {
+    void start(long supplierCode) {
         //取到该平台的properties
         //这地方严格来说是有问题的,supplierCode的区分没有加进去,做得好的话应该是properties文件用supplierCode区分开
 
@@ -55,7 +55,7 @@ class BE_Invoke_GetInvoker_DYLK implements BusinessExecutor<ProcessMapItem, Scri
         //appSecret
         //reqUrl  接口请求地址
         //storeBindUrl  生成门店绑定url时候的请求地址
-        final File df = new File(homePath, "conf/" + "platform.properties");
+        final File df = new File(homePath, "/conf/platformProperty/DYLK.properties");
         if (df.isFile()) {
             try {
                 Properties ps = new Properties();
@@ -69,7 +69,6 @@ class BE_Invoke_GetInvoker_DYLK implements BusinessExecutor<ProcessMapItem, Scri
                 logger.error(e.getMessage(), e);
             }
         }
-        return super.beforeExecute(source)
     }
 
     RetResult<ScriptStringResult> execute(ProcessMapItem source) {

+ 2 - 3
conf/script/1000/platformToken/BE_Invoke_PostInvoker_DYLK.groovy

@@ -49,7 +49,7 @@ class BE_Invoke_PostInvoker_DYLK implements BusinessExecutor<ProcessMapItem, Scr
     }
 
     @Override
-    RetResult<ProcessMapItem> beforeExecute(ProcessMapItem source) {
+    void start(long supplierCode) {
         //取到该平台的properties
         //这地方严格来说是有问题的,supplierCode的区分没有加进去,做得好的话应该是properties文件用supplierCode区分开
 
@@ -58,7 +58,7 @@ class BE_Invoke_PostInvoker_DYLK implements BusinessExecutor<ProcessMapItem, Scr
         //appSecret
         //reqUrl  接口请求地址
         //storeBindUrl  生成门店绑定url时候的请求地址
-        final File df = new File(homePath, "conf/" + "platform.properties");
+        final File df = new File(homePath, "/conf/platformProperty/DYLK.properties");
         if (df.isFile()) {
             try {
                 Properties ps = new Properties();
@@ -72,7 +72,6 @@ class BE_Invoke_PostInvoker_DYLK implements BusinessExecutor<ProcessMapItem, Scr
                 logger.error(e.getMessage(), e);
             }
         }
-        return super.beforeExecute(source)
     }
 
     RetResult<ScriptStringResult> execute(ProcessMapItem source) {

+ 3 - 29
conf/script/1000/platformToken/BE_Token_RefreshAccessToken_DYLK.groovy

@@ -1,38 +1,14 @@
-import com.dderp.business.dao.OrderDao
 import com.dderp.common.api.BusinessExecutor
-import com.dderp.common.api.StoreService
-import com.dderp.common.api.SupplierInitService
-import com.dderp.common.api.flycat.IncomePlatformService
-import com.dderp.common.api.flycat.OrderSearchService
-import com.dderp.common.api.flycat.OrderService
-import com.dderp.common.api.flycat.OrderStepService
-import com.dderp.common.datas.flycat.BusinessOrderStatus
 import com.dderp.common.datas.ERPModule
-import com.dderp.common.datas.ESKeys
-import com.dderp.common.datas.flycat.PlatformType
-import com.dderp.common.entity.base.InvokeCallParams
-import com.dderp.common.entity.base.InvokeCallResult
 import com.dderp.common.entity.base.ProcessStringItem
 import com.dderp.common.entity.base.ScriptMapResult
-import com.dderp.common.entity.base.ScriptStringResult
-import com.dderp.common.entity.order.*
 import com.dderp.common.entity.site.ERPTokenUser
-import com.dderp.common.entity.store.StorePlatform
 import com.dderp.common.http.HttpTools
-import com.dySweetFishPlugin.elasticsearch.ESClient
-import com.dySweetFishPlugin.sql.TableIdService
-import com.dySweetFishPlugin.sql.dao.TunaService
 import com.sweetfish.convert.json.JsonConvert
 import com.sweetfish.service.RetResult
 import groovy.json.JsonSlurper
 import org.apache.logging.log4j.LogManager
 import org.apache.logging.log4j.Logger
-import org.elasticsearch.action.bulk.BulkRequestBuilder
-import org.elasticsearch.action.bulk.BulkResponse
-import org.elasticsearch.action.index.IndexRequestBuilder
-import org.elasticsearch.action.support.WriteRequest
-import org.elasticsearch.action.update.UpdateRequestBuilder
-import org.elasticsearch.common.xcontent.XContentType
 import org.rex.RMap
 
 import javax.annotation.Resource
@@ -43,8 +19,6 @@ import java.util.concurrent.ExecutionException
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.TimeoutException
 
-import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder
-
 @SuppressWarnings("unused")
 class BE_Token_RefreshAccessToken_DYLK implements BusinessExecutor<ProcessStringItem, ScriptMapResult> {
 
@@ -69,7 +43,7 @@ class BE_Token_RefreshAccessToken_DYLK implements BusinessExecutor<ProcessString
     }
 
     @Override
-    RetResult<ProcessStringItem> beforeExecute(ProcessStringItem source) {
+    void start(long supplierCode) {
         //取到该平台的properties
         //这地方严格来说是有问题的,supplierCode的区分没有加进去,做得好的话应该是properties文件用supplierCode区分开
 
@@ -78,7 +52,7 @@ class BE_Token_RefreshAccessToken_DYLK implements BusinessExecutor<ProcessString
         //appSecret
         //reqUrl  接口请求地址
         //storeBindUrl  生成门店绑定url时候的请求地址
-        final File df = new File(homePath, "conf/" + "platform.properties");
+        final File df = new File(homePath, "/conf/platformProperty/DYLK.properties");
         if (df.isFile()) {
             try {
                 Properties ps = new Properties();
@@ -92,9 +66,9 @@ class BE_Token_RefreshAccessToken_DYLK implements BusinessExecutor<ProcessString
                 logger.error(e.getMessage(), e);
             }
         }
-        return super.beforeExecute(source)
     }
 
+
     RetResult<ScriptMapResult> execute(ProcessStringItem source) {
         //秒级时间戳,groovy里面不让用system
         long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8))

+ 5 - 4
conf/script/1000/storeApi/BE_Store_BindStorePlatform_DYLK.groovy

@@ -3,7 +3,8 @@ import com.dderp.common.api.BusinessExecutor
 import com.dderp.common.api.NoSqlKeysService
 import com.dderp.common.api.PlatformService
 import com.dderp.common.api.StoreService
-import com.dderp.common.api.flycat.IncomePlatformService
+
+import com.dderp.common.api.flycat.PlatformAccessTokenService
 import com.dderp.common.datas.ERPModule
 import com.dderp.common.datas.ESKeys
 import com.dderp.common.datas.flycat.PlatformType
@@ -12,7 +13,6 @@ import com.dderp.common.entity.platform.PlatformInfo
 import com.dderp.common.entity.site.ERPTokenUser
 import com.dderp.common.entity.store.StoreInfo
 import com.dderp.common.entity.store.StorePlatform
-import com.dderp.common.entity.store.StorePlatformRequire
 import com.dySweetFishPlugin.elasticsearch.ESClient
 import com.dySweetFishPlugin.sql.TableIdService
 import com.dySweetFishPlugin.sql.dao.TunaService
@@ -50,7 +50,7 @@ class BE_Store_BindStorePlatform_DYLK implements BusinessExecutor<ProcessStringI
     private PlatformService platformService
 
     @Resource
-    private IncomePlatformService douyinService
+    private PlatformAccessTokenService tokenService
 
     @Resource
     private ESClient esClient
@@ -152,7 +152,8 @@ class BE_Store_BindStorePlatform_DYLK implements BusinessExecutor<ProcessStringI
             def postBody = [
                     poi_id: invokeContent["poi_id"] as String
             ]
-            String responseStr = douyinService.dyGetInvoker("/goodlife/v1/shop/poi/query/", jsonConvert.convertTo(postBody))
+            String responseStr = tokenService.getInvoker("DYLK", "/goodlife/v1/shop/poi/query/", jsonConvert.convertTo(postBody),
+                    dataSourceId, String.valueOf(supplierCode))
             def response = jsonSlurper.parseText(responseStr)
             if (response["extra"]["error_code"] as Integer == 0) {
                 def poi = (response["pois"] as ArrayList).get(0)

+ 0 - 177
ddBusiness/src/main/java/com/dderp/business/service/flycat/IncomePlatformServiceImpl.java

@@ -1,177 +0,0 @@
-package com.dderp.business.service.flycat;
-
-import com.dderp.common.api.flycat.IncomePlatformService;
-import com.dderp.common.base.BaseService;
-import com.dderp.common.datas.RedisKeys;
-import com.dderp.common.entity.invoke.douyin.DouyinTokenRequest;
-import com.dderp.common.entity.invoke.douyin.DouyinTokenResponse;
-import com.dderp.common.http.HttpTools;
-import com.dySweetFishPlugin.redis.RedisService;
-import com.dySweetFishPlugin.tool.lang.ThreadFactoryWithNamePrefix;
-import com.sweetfish.convert.json.JsonConvert;
-import com.sweetfish.service.Local;
-import com.sweetfish.util.AnyValue;
-import com.sweetfish.util.AutoLoad;
-import com.sweetfish.util.ResourceType;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.annotation.Resource;
-import java.time.Instant;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.*;
-
-@AutoLoad(false)
-@Local
-@ResourceType(IncomePlatformService.class)
-public class IncomePlatformServiceImpl extends BaseService implements IncomePlatformService {
-
-    @Resource
-    private RedisService redisService;
-
-    //抖音来客token线程池
-    private ScheduledThreadPoolExecutor dyAccessTokenThread;
-    private String runEnvironment;
-
-    @Resource
-    private JsonConvert jsonConvert;
-
-    @Resource(name = "property.DYLK.appId")
-    private String dyAppId;
-
-    @Resource(name = "property.DYLK.appSecret")
-    private String dyAppSecret;
-
-    @Resource(name = "property.DYLK.reqUrl")
-    private String dyReqUrl;
-
-
-    @Override
-    public void start(AnyValue config) {
-        boolean master = false;
-        AnyValue masterValue = config.getAnyValue("master");
-        if (masterValue != null) {
-            master = masterValue.getBoolValue("value");
-        }
-
-        AnyValue environmentValue = config.getAnyValue("environment");
-        if (environmentValue != null) {
-            runEnvironment = environmentValue.getValue("value");
-        } else {
-            runEnvironment = "dev";
-        }
-
-        if (master) {
-            if (StringUtils.equalsIgnoreCase(runEnvironment, "dev")) {
-                //开发环境
-                dyAccessTokenThread = null;
-            } else {
-                //启动的时候10分钟之后获取,然后每隔1个半小时刷新一次token
-                //为什么10分钟,因为企点是每10分钟发送ticket,没有ticket的情况通过ticket是换不到开发商token的
-                dyAccessTokenThread = new ScheduledThreadPoolExecutor(1,
-                        new ThreadFactoryWithNamePrefix("[抖音Access_Token线程池]"));
-
-                long tokenInitialDelay = 30;
-
-                //判断上次刷新token的时间,
-                if (redisService.exists(RedisKeys.KEY_DOUYIN_LASTTOKENDATE)) {
-                    long lastTime = Long.parseLong(redisService.get(RedisKeys.KEY_DOUYIN_LASTTOKENDATE));
-                    int diffSeconds = (int) ((System.currentTimeMillis() - lastTime) / 1000);
-
-                    if (diffSeconds <= 4800) {
-                        tokenInitialDelay = 4800 - diffSeconds;
-                        if (tokenInitialDelay < 30) {
-                            tokenInitialDelay = 30;
-                        }
-                    }
-                }
-
-                dyAccessTokenThread.scheduleWithFixedDelay(() -> {
-                    scanRefreshToken();
-                    //写入当前时间
-                    redisService.set(RedisKeys.KEY_DOUYIN_LASTTOKENDATE, String.valueOf(Date.from(Instant.now()).getTime()));
-                }, tokenInitialDelay, 5400, TimeUnit.SECONDS);
-            }
-        }
-    }
-
-    @Override
-    public void destroy(AnyValue config) {
-        if (dyAccessTokenThread != null) {
-            dyAccessTokenThread.shutdownNow();
-        }
-    }
-
-    private void scanRefreshToken() {
-        DouyinTokenResponse dyToken = null;
-        //抖音有可能获取不到token,这里循环获取,直到有值?
-        do {
-            dyToken = this.requestAccessToken(dyAppId, dyAppSecret);
-
-        } while ((dyToken == null) || (StringUtils.isEmpty(dyToken.getData().getAccess_token())));
-
-        redisService.set(RedisKeys.KEY_DOUYIN_ACCESSTOKEN, dyToken.getData().getAccess_token());
-        logger.info("抖音服务刷新token:" + dyToken.getData().getAccess_token());
-    }
-
-    private DouyinTokenResponse requestAccessToken(String appId, String appSecret) {
-        DouyinTokenRequest tokenRequest = new DouyinTokenRequest.Builder()
-                .client_key(appId)
-                .client_secret(appSecret)
-                .build();
-        Map<String, String> header = new HashMap<>();
-        header.put("Content-Type", "application/json");
-
-        try {
-            String responseStr = HttpTools.postHttpContentAsync(dyReqUrl + "/oauth/client_token/", header,
-                    jsonConvert.convertTo(tokenRequest)).get(5, TimeUnit.SECONDS);
-
-            return jsonConvert.convertFrom(DouyinTokenResponse.class, responseStr);
-        } catch (InterruptedException | ExecutionException | TimeoutException e) {
-            logger.error(e.getMessage(), e);
-        }
-        return null;
-    }
-
-    private String getAccessToken() {
-        String token = redisService.get(RedisKeys.KEY_DOUYIN_ACCESSTOKEN);
-        if (StringUtils.isBlank(token)) {
-            //token不存在,直接刷新一下
-            this.scanRefreshToken();
-            token = redisService.get(RedisKeys.KEY_DOUYIN_ACCESSTOKEN);
-        }
-
-        return token;
-    }
-
-    @Override
-    public String dyPostInvoker(String subUrl, String body) {
-        Map<String, String> header = new HashMap<>();
-        header.put("access-token", getAccessToken());
-        header.put("log_id", String.valueOf(new Date().getTime()));
-        header.put("Content-Type", "application/json");
-
-        try {
-            return HttpTools.postHttpContentAsync(dyReqUrl + subUrl, header, body).get(20, TimeUnit.SECONDS);
-        } catch (InterruptedException | ExecutionException | TimeoutException e) {
-            logger.error("请求抖音来客接口[" + subUrl + "]失败", e);
-            return null;
-        }
-    }
-
-    @Override
-    public String dyGetInvoker(String subUrl, String body) {
-        Map<String, String> header = new HashMap<>();
-        header.put("access-token", getAccessToken());
-        header.put("log_id", String.valueOf(new Date().getTime()));
-        header.put("Content-Type", "application/json");
-
-        try {
-            return HttpTools.getHttpContentAsync(dyReqUrl + subUrl, header, body).get(20, TimeUnit.SECONDS);
-        } catch (InterruptedException | ExecutionException | TimeoutException e) {
-            logger.error("请求抖音来客接口[" + subUrl + "]失败", e);
-            return null;
-        }
-    }
-}

+ 8 - 15
ddBusiness/src/main/java/com/dderp/business/service/flycat/PlatformAccessTokenServiceImpl.java

@@ -45,19 +45,9 @@ public class PlatformAccessTokenServiceImpl extends BaseService implements Platf
     @Resource
     private JsonConvert jsonConvert;
 
-
     @Resource
     private NoSqlKeysService keysService;
 
-//    @Resource(name = "property.DYLK.appId")
-//    private String dyAppId;
-//
-//    @Resource(name = "property.DYLK.appSecret")
-//    private String dyAppSecret;
-//
-//    @Resource(name = "property.DYLK.reqUrl")
-//    private String dyReqUrl;
-
 
     @Override
     public void start(AnyValue config) {
@@ -101,10 +91,10 @@ public class PlatformAccessTokenServiceImpl extends BaseService implements Platf
                             if (tokenRefreshSeconds <= 0) tokenRefreshSeconds = 5400;
 
                             //判断上次刷新token的时间,
-                            if (redisService.exists(keysService.getRedisKey(RedisKeys.KEY_PLATFORM_LASTTOKENDATE, Long.parseLong(supplierCode), true) +
+                            if (redisService.hexists(keysService.getRedisKey(RedisKeys.KEY_PLATFORM_LASTTOKENDATE, Long.parseLong(supplierCode)),
                                     platformInfo.getPlatformCode())) {
-                                long lastTime = Long.parseLong(redisService.get(keysService.getRedisKey(RedisKeys.KEY_PLATFORM_LASTTOKENDATE,
-                                        Long.parseLong(supplierCode), true) + platformInfo.getPlatformCode()));
+                                long lastTime = Long.parseLong(redisService.hget(keysService.getRedisKey(RedisKeys.KEY_PLATFORM_LASTTOKENDATE,
+                                        Long.parseLong(supplierCode)), platformInfo.getPlatformCode()));
                                 int diffSeconds = (int) ((System.currentTimeMillis() - lastTime) / 1000);
 
                                 if (diffSeconds <= tokenRefreshSeconds) {
@@ -118,7 +108,7 @@ public class PlatformAccessTokenServiceImpl extends BaseService implements Platf
                             dyAccessTokenThread.scheduleWithFixedDelay(() -> {
                                 scanRefreshToken(platformInfo.getPlatformCode(), dataSourceId, supplierCode);
                                 //写入当前时间
-                                redisService.set(keysService.getRedisKey(RedisKeys.KEY_PLATFORM_LASTTOKENDATE, Long.parseLong(supplierCode), true) + platformInfo.getPlatformCode(),
+                                redisService.hset(keysService.getRedisKey(RedisKeys.KEY_PLATFORM_LASTTOKENDATE, Long.parseLong(supplierCode)), platformInfo.getPlatformCode(),
                                         String.valueOf(Date.from(Instant.now()).getTime()));
                             }, tokenInitialDelay, tokenRefreshSeconds, TimeUnit.SECONDS);
 
@@ -165,7 +155,10 @@ public class PlatformAccessTokenServiceImpl extends BaseService implements Platf
                             .build();
                 });
 
-        if (!retResult.isSuccess()) return null;
+        if (!retResult.isSuccess()) {
+            logger.error(retResult.getRetinfo());
+            return null;
+        }
         return retResult.getResult().getResultMap();
     }
 

+ 0 - 10
ddCommon/src/main/java/com/dderp/common/api/flycat/IncomePlatformService.java

@@ -1,10 +0,0 @@
-package com.dderp.common.api.flycat;
-
-import com.sweetfish.service.Service;
-
-public interface IncomePlatformService extends Service {
-    String dyPostInvoker(String subUrl, String body);
-
-    String dyGetInvoker(String subUrl, String body);
-
-}

+ 13 - 13
ddWebCore/src/main/java/com/dderp/webcore/servlet/OrderCallServlet.java

@@ -2,14 +2,12 @@ package com.dderp.webcore.servlet;
 
 import com.dderp.common.api.NoSqlKeysService;
 import com.dderp.common.api.StoreService;
-import com.dderp.common.api.flycat.IncomePlatformService;
 import com.dderp.common.api.flycat.OrderService;
 import com.dderp.common.datas.ERPHeader;
 import com.dderp.common.datas.RedisKeys;
 import com.dderp.common.entity.base.InvokeCallParams;
 import com.dderp.common.entity.base.InvokeCallResult;
 import com.dderp.common.entity.invoke.douyin.DouyinCallBody;
-import com.dderp.common.entity.order.BusinessOrder;
 import com.dderp.common.entity.site.ERPTokenUser;
 import com.dderp.common.entity.store.StorePlatform;
 import com.dderp.common.tool.DouyinTools;
@@ -25,6 +23,7 @@ import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.rex.RMap;
 
 import javax.annotation.Resource;
 import java.util.HashMap;
@@ -48,20 +47,11 @@ public class OrderCallServlet extends HttpServlet {
     private NoSqlKeysService keysService;
 
     @Resource
-    private IncomePlatformService douyinService;
-
-    @Resource
     private StoreService storeService;
 
     @Resource
     private OrderService orderService;
 
-    @Resource(name = "property.DYLK.appSecret")
-    private String douyinAppSecret;
-
-    @Resource
-    JsonFactory jsonRootFactory;
-
     private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName());
 
     private ExecutorService getExecutor() {
@@ -103,7 +93,12 @@ public class OrderCallServlet extends HttpServlet {
         //1小时过期,应该够了吧
         redisService.setex(keysService.getRedisKey(RedisKeys.KEY_DOUYIN_CALL_MSG_ID, supplierCode, true) + douyinMsgId, 3600, 1);
 
-        String signData = douyinAppSecret + body;
+        //获取抖音来客的appSecret用于验签
+        String tokenMapStr = redisService.hget(keysService.getRedisKey(RedisKeys.KEY_PLATFORM_ACCESSTOKEN, supplierCode), "DYLK");
+        RMap tokenMap = jsonConvert.convertFrom(RMap.class, tokenMapStr);
+        String appSecret = tokenMap.getString("appSecret");
+
+        String signData = appSecret + body;
         String sign = DigestUtils.sha1Hex(signData);
         if (!sign.equals(douyinSign)) {
             logger.error("[抖音来客]Webhooks推送消息验签失败");
@@ -212,7 +207,12 @@ public class OrderCallServlet extends HttpServlet {
         query.put("client_key", douyinClientKey);
         query.put("timestamp", douyinTimestamp);
 
-        String sign = DouyinTools.SignV2(douyinAppSecret, body, query);
+        //获取抖音来客的appSecret用于验签
+        String tokenMapStr = redisService.hget(keysService.getRedisKey(RedisKeys.KEY_PLATFORM_ACCESSTOKEN, supplierCode), "DYLK");
+        RMap tokenMap = jsonConvert.convertFrom(RMap.class, tokenMapStr);
+        String appSecret = tokenMap.getString("appSecret");
+
+        String sign = DouyinTools.SignV2(appSecret, body, query);
 
         if (!sign.equals(douyinSign)) {
             logger.error("[抖音来客]spi推送消息验签失败");