Veronique 2 năm trước cách đây
mục cha
commit
471fdd15a9

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

@@ -95,6 +95,7 @@ class BE_Order_AcceptOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         String dataSourceId = source.dataSourceId
         long supplierCode = source.supplierCode
         ERPTokenUser currentUser = source.currentUser
+        JsonConvert orderConvertor = source.jsonConvertMap.get("orderConvertor")
 
         def jsonSlurper = new JsonSlurper()
         def invokeOrder = jsonSlurper.parseText(source.params)

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

@@ -100,6 +100,7 @@ class BE_Order_BillConfirm_DYLK implements BusinessExecutor<InvokeCallParams, In
         String dataSourceId = source.dataSourceId
         long supplierCode = source.supplierCode
         ERPTokenUser currentUser = source.currentUser
+        JsonConvert orderConvertor = source.jsonConvertMap.get("orderConvertor")
 
         def jsonSlurper = new JsonSlurper()
         def invokeOrder = jsonSlurper.parseText(source.params)

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

@@ -102,6 +102,7 @@ class BE_Order_CancelOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         String dataSourceId = source.dataSourceId
         long supplierCode = source.supplierCode
         ERPTokenUser currentUser = source.currentUser
+        JsonConvert orderConvertor = source.jsonConvertMap.get("orderConvertor")
 
         def jsonSlurper = new JsonSlurper()
         def invokeOrder = jsonSlurper.parseText(source.params)

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

@@ -96,6 +96,7 @@ class BE_Order_CompleteOrder_DYLK implements BusinessExecutor<InvokeCallParams,
         String dataSourceId = source.dataSourceId
         long supplierCode = source.supplierCode
         ERPTokenUser currentUser = source.currentUser
+        JsonConvert orderConvertor = source.jsonConvertMap.get("orderConvertor")
 
         def jsonSlurper = new JsonSlurper()
         def invokeOrder = jsonSlurper.parseText(source.params)

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

@@ -83,6 +83,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
         String dataSourceId = source.dataSourceId
         long supplierCode = source.supplierCode
         ERPTokenUser currentUser = source.currentUser
+        JsonConvert orderConvertor = source.jsonConvertMap.get("orderConvertor")
 
         def jsonSlurper = new JsonSlurper()
         def invokeOrder = jsonSlurper.parseText(source.params)
@@ -184,7 +185,7 @@ class BE_Order_CreateOrder_DYLK implements BusinessExecutor<InvokeCallParams, In
                 .prepareIndex(supplierInitService.getDateYearESIndex(supplierCode, ESKeys.ES_DELIVER_BUSINESS_ORDER_INDEX, 0),
                         ESKeys.ES_DELIVER_BUSINESS_ORDER_TYPE)
                 .setId(String.valueOf(businessOrder.id))
-                .setSource(jsonConvert.convertTo(businessOrder), XContentType.JSON)
+                .setSource(orderConvertor.convertTo(businessOrder), XContentType.JSON)
         bulkRequest.add(orderRequest)
         //订单金额信息
         IndexRequestBuilder financesRequest = esClient.getClient()

+ 82 - 3
conf/script/1000/storeApi/BE_Store_BindStorePlatform_DYLK.groovy

@@ -3,17 +3,17 @@ 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.DouyinService
 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.InvokeCallResult
 import com.dderp.common.entity.base.ProcessStringItem
-import com.dderp.common.entity.inquire.InquireMainInfo
 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.dderp.common.entity.store.ViewStoreInfo
 import com.dySweetFishPlugin.elasticsearch.ESClient
 import com.dySweetFishPlugin.sql.TableIdService
 import com.dySweetFishPlugin.sql.dao.TunaService
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.Logger
 import org.elasticsearch.action.bulk.BulkRequestBuilder
 import org.elasticsearch.action.bulk.BulkResponse
 import org.elasticsearch.action.support.WriteRequest
-import org.elasticsearch.action.update.UpdateRequestBuilder
 import org.elasticsearch.common.xcontent.XContentType
 
 import javax.annotation.Resource
@@ -52,6 +51,9 @@ class BE_Store_BindStorePlatform_DYLK implements BusinessExecutor<ProcessStringI
     private PlatformService platformService
 
     @Resource
+    private DouyinService douyinService
+
+    @Resource
     private ESClient esClient
 
     @Resource
@@ -131,6 +133,7 @@ class BE_Store_BindStorePlatform_DYLK implements BusinessExecutor<ProcessStringI
             storePlatform.setEnableStatue(1)
             StorePlatform.create(storePlatform, currentUser.id)
 
+            /* 已废弃
             if (platformInfo.requireList.size() > 0) {
                 long requireId = tableIdService.getTableIdMulti("tbStorePlatformRequire.id", platformInfo.requireList.size(), dataSourceId, String.valueOf(supplierCode))
                 platformInfo.requireList.each { require ->
@@ -144,6 +147,82 @@ class BE_Store_BindStorePlatform_DYLK implements BusinessExecutor<ProcessStringI
                     StorePlatformRequire.create(storePlatformRequire, currentUser.id)
                 }
             }
+             */
+
+            //获取平台门店信息,拿一些有用的存起来
+            def postBody = [
+                    poi_id: invokeContent["poi_id"] as String
+            ]
+            String responseStr = douyinService.getInvoker("/goodlife/v1/shop/poi/query/", jsonConvert.convertTo(postBody))
+            def response = jsonSlurper.parseText(responseStr)
+            if (response["extra"]["error_code"] as Integer == 0) {
+                def poi = (response["pois"] as ArrayList).get(0)
+                //固定5个参数
+                //平台门店名称 platformShopName
+//                平台门店坐标 platformShopGeoLat
+//                平台门店坐标 platformShopGeoLng
+//                地址:platformShopAddress
+//                电话:platformShopPhone
+                long requireId = tableIdService.getTableIdMulti("tbStorePlatformRequire.id", 5, dataSourceId, String.valueOf(supplierCode))
+                StorePlatformRequire require = new StorePlatformRequire()
+                require.setId(requireId)
+                require.setIdStore(storeInfo.id)
+                require.setIdStorePlatform(storePlatform.id)
+                require.setPlatformRequireCode("platformShopName")
+                require.setPlatformRequireName("平台门店名称")
+                require.setItemValue(poi["poi_name"] as String)
+                StorePlatformRequire.create(require, currentUser.id)
+                storePlatform.requireList.add(require)
+                requireId++
+
+                StorePlatformRequire require1 = new StorePlatformRequire()
+                require1.setId(requireId)
+                require1.setIdStore(storeInfo.id)
+                require1.setIdStorePlatform(storePlatform.id)
+                require1.setPlatformRequireCode("platformShopAddress")
+                require1.setPlatformRequireName("平台门店地址")
+                require1.setItemValue(poi["address"] as String)
+                StorePlatformRequire.create(require1, currentUser.id)
+                storePlatform.requireList.add(require1)
+                requireId++
+
+                StorePlatformRequire require2 = new StorePlatformRequire()
+                require2.setId(requireId)
+                require2.setIdStore(storeInfo.id)
+                require2.setIdStorePlatform(storePlatform.id)
+                require2.setPlatformRequireCode("platformShopPhone")
+                require2.setPlatformRequireName("平台门店电话")
+                require2.setItemValue("") //抖音未提供
+                StorePlatformRequire.create(require2, currentUser.id)
+                storePlatform.requireList.add(require2)
+                requireId++
+
+                StorePlatformRequire require3 = new StorePlatformRequire()
+                require3.setId(requireId)
+                require3.setIdStore(storeInfo.id)
+                require3.setIdStorePlatform(storePlatform.id)
+                require3.setPlatformRequireCode("platformShopGeoLat")
+                require3.setPlatformRequireName("平台门店坐标Lat")
+                require3.setItemValue(poi["latitude"] as String)
+                StorePlatformRequire.create(require3, currentUser.id)
+                storePlatform.requireList.add(require3)
+                requireId++
+
+                StorePlatformRequire require4 = new StorePlatformRequire()
+                require4.setId(requireId)
+                require4.setIdStore(storeInfo.id)
+                require4.setIdStorePlatform(storePlatform.id)
+                require4.setPlatformRequireCode("platformShopGeoLng")
+                require4.setPlatformRequireName("平台门店坐标Lng")
+                require4.setItemValue(poi["longitude"] as String)
+                StorePlatformRequire.create(require4, currentUser.id)
+                storePlatform.requireList.add(require4)
+
+            } else {
+                //todo 抖音侧调用失败,怎么处理?
+                logger.error("[抖音来客]获取商户信息平台接口调用失败:" + response["extra"]["description"] as String)
+                return RetResult.<StorePlatform> errorT().retinfo("[抖音来客]获取商户信息平台接口调用失败:" + response["extra"]["description"] as String)
+            }
 
 
             BulkRequestBuilder bulkRequest = esClient.getClient().prepareBulk().setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);

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

@@ -11,16 +11,19 @@ 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.StoreInfo;
 import com.dderp.common.entity.store.StorePlatform;
 import com.dderp.common.tool.DouyinTools;
 import com.dySweetFishPlugin.redis.RedisService;
 import com.sweetfish.convert.json.JsonConvert;
+import com.sweetfish.convert.json.JsonFactory;
 import com.sweetfish.net.WorkThread;
 import com.sweetfish.net.http.*;
 import com.sweetfish.service.RetResult;
 import com.sweetfish.util.AnyValue;
 import com.sweetfish.util.AutoLoad;
 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;
 
@@ -57,6 +60,11 @@ public class OrderCallServlet extends HttpServlet {
     @Resource(name = "property.douyin.appSecret")
     private String douyinAppSecret;
 
+    private JsonConvert orderWriteConvert;
+
+    @Resource
+    JsonFactory jsonRootFactory;
+
     private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName());
 
     private ExecutorService getExecutor() {
@@ -69,7 +77,10 @@ public class OrderCallServlet extends HttpServlet {
 
     @Override
     public void init(HttpContext context, AnyValue config) {
-        super.init(context, config);
+        final JsonFactory orderChildFactory = jsonRootFactory.createChild();
+        orderChildFactory.register(BusinessOrder.class, true, "orderFinances", "detailItemList", "orderDeliveryInfo", "riderItemList");
+        orderChildFactory.reloadCoder(BusinessOrder.class);
+        this.orderWriteConvert = orderChildFactory.getConvert();
     }
 
     @Override
@@ -120,6 +131,13 @@ public class OrderCallServlet extends HttpServlet {
         currentUser.setId(-100);
         currentUser.setUserName("抖音来客");
 
+        InvokeCallParams callParams = new InvokeCallParams();
+        callParams.setParams(callBody.getContent());
+        callParams.getJsonConvertMap().put("orderConvertor", orderWriteConvert);
+        callParams.setCurrentUser(currentUser);
+        callParams.setDataSourceId(dataSourceId);
+        callParams.setSupplierCode(supplierCode);
+
         switch (callBody.getEvent()) {
             case "life_saas_cooperate_auth_with_bind": {
                 //能力授权&门店绑定消息
@@ -132,123 +150,58 @@ public class OrderCallServlet extends HttpServlet {
             }
             case "life_takeout_order_pay_success": {
                 //用户下单消息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_CreateOrder_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]商户下单成功");
-                    else logger.error("[抖音来客]商户下单失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_CreateOrder_DYLK");
                 break;
             }
             case "life_takeout_order_merchant_receive": {
                 //商户接单消息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_AcceptOrder_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]商户接单成功");
-                    else logger.error("[抖音来客]商户接单失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_AcceptOrder_DYLK");
                 break;
             }
             case "life_takeout_order_merchant_refuse": {
                 //商户拒单消息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_RejectOrder_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]商户拒单成功");
-                    else logger.error("[抖音来客]商户拒单失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_RejectOrder_DYLK");
                 break;
             }
             case "life_trade_refund_complete": {
                 //订单已取消消息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_CancelOrder_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]订单取消成功");
-                    else logger.error("[抖音来客]订单取消失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_CancelOrder_DYLK");
                 break;
             }
             case "life_trade_refund_audit": {
                 //订单已同意/拒绝退款消息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_ProcessRefund_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]订单已同意/拒绝退款成功");
-                    else logger.error("[抖音来客]订单已同意/拒绝退款失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_ProcessRefund_DYLK");
                 break;
             }
             case "life_trade_takeout_order_finish": {
                 //订单完成消息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_CompleteOrder_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]订单完成成功");
-                    else logger.error("[抖音来客]订单完成失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_CompleteOrder_DYLK");
                 break;
             }
             case "life_trade_part_refund_complete": {
                 //订单已部分退款消息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_PartRefund_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]部分退款成功");
-                    else logger.error("[抖音来客]部分退款失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_PartRefund_DYLK");
                 break;
             }
             case "life_takeout_bill_ledger_create": {
                 //订单确认账单消息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_BillConfirm_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]账单确认成功");
-                    else logger.error("[抖音来客]账单确认失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_BillConfirm_DYLK");
                 break;
             }
             case "life_trade_takeout_order_modify": {
                 //订单修改消息,主要是修改配送信息
-                CompletableFuture.runAsync(() -> {
-                    InvokeCallParams callParams = new InvokeCallParams();
-                    callParams.setBusinessMethod("Order_DeliveryChange_DYLK");
-                    callParams.setParams(callBody.getContent());
-                    RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
-                    if (result.isSuccess())
-                        logger.info("[抖音来客]订单配送信息修改成功");
-                    else logger.error("[抖音来客]订单配送信息修改失败:" + result.getRetinfo());
-                });
+                callParams.setBusinessMethod("Order_DeliveryChange_DYLK");
                 break;
             }
         }
 
+        if (StringUtils.isNotBlank(callParams.getBusinessMethod())) {
+            CompletableFuture.runAsync(() ->
+                    orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode)
+            );
+        }
+
+
         //无论如何,最终还得返回个200
         response.finish(200, "success");
     }
@@ -288,6 +241,10 @@ public class OrderCallServlet extends HttpServlet {
             InvokeCallParams callParams = new InvokeCallParams();
             callParams.setBusinessMethod("Order_UserRefundRequest_DYLK");
             callParams.setParams(body);
+            callParams.getJsonConvertMap().put("orderConvertor", orderWriteConvert);
+            callParams.setCurrentUser(currentUser);
+            callParams.setDataSourceId(dataSourceId);
+            callParams.setSupplierCode(supplierCode);
             RetResult<InvokeCallResult> result = orderService.callOrder(callParams, currentUser, dataSourceId, supplierCode);
             if (result.isSuccess())
                 logger.info("[抖音来客]用户退款申请写入成功");