BE_Order_SubmitDeliveryInfo_DYLK.groovy 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import com.dderp.business.dao.OrderDao
  2. import com.dderp.common.api.BusinessExecutor
  3. import com.dderp.common.api.StoreService
  4. import com.dderp.common.api.SupplierInitService
  5. import com.dderp.common.api.flycat.OrderSearchService
  6. import com.dderp.common.api.flycat.OrderService
  7. import com.dderp.common.api.flycat.OrderStepService
  8. import com.dderp.common.api.flycat.PlatformAccessTokenService
  9. import com.dderp.common.datas.ERPModule
  10. import com.dderp.common.entity.base.InvokeCallParams
  11. import com.dderp.common.entity.base.InvokeCallResult
  12. import com.dderp.common.entity.order.BusinessOrder
  13. import com.dderp.common.entity.site.ERPTokenUser
  14. import com.dderp.common.entity.store.StorePlatform
  15. import com.dySweetFishPlugin.elasticsearch.ESClient
  16. import com.dySweetFishPlugin.sql.TableIdService
  17. import com.dySweetFishPlugin.sql.dao.TunaService
  18. import com.sweetfish.convert.json.JsonConvert
  19. import com.sweetfish.service.RetResult
  20. import groovy.json.JsonSlurper
  21. import org.apache.logging.log4j.LogManager
  22. import org.apache.logging.log4j.Logger
  23. import javax.annotation.Resource
  24. import java.time.LocalDateTime
  25. import java.time.ZoneOffset
  26. @SuppressWarnings("unused")
  27. class BE_Order_SubmitDeliveryInfo_DYLK implements BusinessExecutor<InvokeCallParams, InvokeCallResult> {
  28. private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
  29. @Resource
  30. private JsonConvert jsonConvert
  31. @Resource
  32. private TableIdService tableIdService
  33. @Resource
  34. private StoreService storeService
  35. @Resource
  36. private ESClient esClient
  37. @Resource
  38. private SupplierInitService supplierInitService
  39. @Resource
  40. private OrderStepService orderStepService
  41. @Resource
  42. private OrderService orderService
  43. @Resource
  44. private OrderSearchService orderSearchService
  45. @Resource
  46. private PlatformAccessTokenService tokenService
  47. @Resource
  48. private TunaService tunaService
  49. private OrderDao orderDao
  50. @Override
  51. String scriptName() {
  52. return "[抖音来客]回传配送信息"
  53. }
  54. @Override
  55. ERPModule module() {
  56. return ERPModule.ORDER_API
  57. }
  58. /*
  59. params : {
  60. "idOrder" : 2, 系统订单id,必填
  61. //"order_id" : "8000007372302629122" , 抖音的订单id,不要了,传入系统内订单id就行了
  62. "rider_phone" : "123241289303" , 骑手电话
  63. "three_source" : 7 , 三方配送商,注1,必填
  64. "behavior" : 2 , 回传状态,注2,必填
  65. "accept_time" : 1669344364 , 骑手接单时间戳,秒
  66. "rider_flow_time" : 1669344364 , 骑手信息采集时间戳,秒
  67. "rider_lat" : 43.26 , 骑手坐标,GCJ02坐标
  68. "rider_lng" : 26.36 , 骑手坐标,GCJ02坐标
  69. "rider_name" : "配送员姓名" , 骑手姓名
  70. "rider_phone_type" : 0 , 骑手电话类型0真实号1隐私号
  71. "three_delivery_id" : "SF263579679634687" 三方物流单号
  72. }
  73. 注1: 三方配送商标示 0=顺丰同城;1=新达达;2=蜂鸟配送;3=美团配送;4=闪送;5=点我达;6=UU跑腿;8=信天翁;10=365跑腿;11=曹操跑腿;12=爱跑腿;13=快跑者;14=极客快送;15=同达;16=生活半径;17=临趣;18=趣送;19=快服务;20=菜鸟新联盟;21=风先生;22=来答配送;23=好急跑腿;24=送个东西跑题;25=靠谱送;26=快男跑腿;27=裹小递 7=其他;1000=商家自配送
  74. 注2: 1=骑手已接单; 2=骑手已到店; 3=骑手已取货(配送中); 4=骑手已送达; 5=运单取消 (允许跨状态回传,例如1->3,跳过2)
  75. */
  76. RetResult<InvokeCallResult> execute(InvokeCallParams source) {
  77. //秒级时间戳,groovy里面不让用system
  78. long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8))
  79. String dataSourceId = source.dataSourceId
  80. long supplierCode = source.supplierCode
  81. ERPTokenUser currentUser = source.currentUser
  82. def jsonSlurper = new JsonSlurper()
  83. def invokeOrder = jsonSlurper.parseText(source.params)
  84. long idOrder = invokeOrder["idOrder"] as Long
  85. RetResult<BusinessOrder> orderResult = orderSearchService.getBusinessOrder(idOrder, currentUser, dataSourceId, supplierCode, null)
  86. if (!orderResult.isSuccess()) return RetResult.<InvokeCallResult> errorT().retinfo(orderResult.retinfo)
  87. BusinessOrder esOrder = orderResult.result
  88. StorePlatform storePlatform = storeService.getStorePlatformInfo(esOrder.incomePlatformId, supplierCode)
  89. if (storePlatform == null) return RetResult.<InvokeCallResult> errorT().retinfo("订单来源平台未知!")
  90. if (storePlatform.platformCode != "DYLK") return RetResult.<InvokeCallResult> errorT().retinfo("同步配送信息失败:订单来源平台有误")
  91. //抖音来客
  92. def postBody = [
  93. order_id : esOrder.incomePlatformOrderCode,
  94. behavior : invokeOrder["behavior"] as int,
  95. three_source : invokeOrder["three_source"] as int,
  96. accept_time : invokeOrder["accept_time"] as int,
  97. rider_flow_time : invokeOrder["rider_flow_time"] as int,
  98. rider_lat : invokeOrder["rider_lat"] as double,
  99. rider_lng : invokeOrder["rider_lng"] as double,
  100. rider_name : invokeOrder["rider_name"] as String,
  101. rider_phone : invokeOrder["rider_phone"] as String,
  102. rider_phone_type : invokeOrder["rider_phone_type"] as int,
  103. three_delivery_id: invokeOrder["three_delivery_id"] as String
  104. ]
  105. // String responseStr = douyinService.dyPostInvoker("/goodlife/v1/fulfilment/distribution/order/sync_status/", jsonConvert.convertTo(postBody))
  106. String responseStr = tokenService.postInvoker("DYLK", "/goodlife/v1/fulfilment/distribution/order/sync_status/", jsonConvert.convertTo(postBody),
  107. dataSourceId, String.valueOf(supplierCode))
  108. def response = jsonSlurper.parseText(responseStr)
  109. if (response["extra"]["error_code"] as Integer == 0) {
  110. return RetResult.<InvokeCallResult> successT()
  111. } else {
  112. //todo 抖音侧调用失败,怎么处理?
  113. logger.error("[抖音来客]回传配送信息接口调用失败:" + response["extra"]["description"] as String)
  114. return RetResult.<InvokeCallResult> errorT().retinfo("[抖音来客]回传配送信息接口调用失败:" + response["extra"]["description"] as String)
  115. }
  116. }
  117. }