BE_Order_CreateOrder_Douyin.groovy 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import com.alibaba.fastjson2.JSON
  2. import com.dderp.common.api.BusinessExecutor
  3. import com.dderp.common.datas.BusinessOrderStatus
  4. import com.dderp.common.datas.ERPModule
  5. import com.dderp.common.entity.base.ProcessStringItem
  6. import com.dderp.common.entity.express.SFCreateOrderResult
  7. import com.dderp.common.entity.express.SFOrder
  8. import com.dderp.common.entity.express.SFOrderDetail
  9. import com.dderp.common.entity.express.SFOrderProductDetail
  10. import com.dderp.common.entity.express.SFOrderReceive
  11. import com.dderp.common.entity.order.BusinessOrder
  12. import com.dderp.common.entity.order.OrderFinances
  13. import com.dderp.common.http.HttpTools
  14. import com.dySweetFishPlugin.sql.TableIdService
  15. import com.sweetfish.convert.json.JsonConvert
  16. import com.sweetfish.service.RetResult
  17. import groovy.json.JsonSlurper
  18. import org.apache.logging.log4j.LogManager
  19. import org.apache.logging.log4j.Logger
  20. import javax.annotation.Resource
  21. import java.math.RoundingMode
  22. import java.nio.charset.StandardCharsets
  23. import java.time.LocalDateTime
  24. import java.time.ZoneOffset
  25. import java.util.concurrent.CompletableFuture
  26. import java.util.concurrent.ExecutionException
  27. import java.util.concurrent.TimeUnit
  28. import java.util.concurrent.TimeoutException
  29. @SuppressWarnings("unused")
  30. class BE_Order_CreateOrder_Douyin implements BusinessExecutor<ProcessStringItem, BusinessOrder> {
  31. private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName())
  32. @Resource
  33. private JsonConvert jsonConvert
  34. @Resource
  35. private TableIdService tableIdService
  36. @Override
  37. String scriptName() {
  38. return "抖音来客创建订单"
  39. }
  40. @Override
  41. ERPModule module() {
  42. return ERPModule.ORDER_API
  43. }
  44. RetResult<BusinessOrder> execute(ProcessStringItem source) {
  45. //秒级时间戳,groovy里面不让用system
  46. long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8))
  47. String dataSourceId = source.dataSourceId
  48. long supplierCode = source.supplierCode
  49. def jsonSlurper = new JsonSlurper()
  50. def invokeOrder = jsonSlurper.parseText(source.itemValue)
  51. BusinessOrder businessOrder = new BusinessOrder()
  52. businessOrder.setId(tableIdService.getTableIdMulti("deBusinessOrder.id", 1, dataSourceId, String.valueOf(supplierCode)))
  53. businessOrder.setOrderName(invokeOrder["merchant"]["account_name"] as String)
  54. businessOrder.setOrderCode(tableIdService.getTableCodeMulti("deBusinessOrder.code", dataSourceId, String.valueOf(supplierCode)))
  55. businessOrder.setOrderStatus(BusinessOrderStatus.init.value)
  56. //todo 商户平台需求一个绑定逻辑,用以判断该平台适用于哪一个脚本
  57. //businessOrder.setIncomePlatformId(0)
  58. //businessOrder.setIncomePlatformName("")
  59. businessOrder.setIncomePlatformOrderCode(invokeOrder["order"]["order_id"] as String)
  60. businessOrder.setIncomePlatformOrderTimeLong(invokeOrder["order"]["pay_time"] as long * 1000)//抖音传过来的时间戳单位是秒
  61. businessOrder.setIncomePlatformOrderTime(new Date(businessOrder.incomePlatformOrderTimeLong))
  62. //抖音传过来的格式为起始时间戳(单位秒)- 截止时间戳(单位秒),示例:1669370006-1669371206,目前先取起始时间
  63. long suggestTimeLong = (invokeOrder["order"]["sys_expect_time"] as String).split("-")[0] as long
  64. businessOrder.setSuggestDeliverTimeLong(suggestTimeLong * 1000)
  65. businessOrder.setSuggestDeliverTime(new Date(businessOrder.suggestDeliverTimeLong))
  66. //todo 商户id同上
  67. //businessOrder.setIdStore(0)
  68. //businessOrder.setStoreName("")
  69. BigDecimal deliverFee = new BigDecimal((invokeOrder["amount_info"]["freight_pay_amount"] as int) / 100).setScale(2, RoundingMode.CEILING)
  70. businessOrder.setDeliverFee(deliverFee)
  71. String address = "[" + invokeOrder["receiver_info"]["city"] + "]" + invokeOrder["receiver_info"]["province"] +
  72. invokeOrder["receiver_info"]["city"] +
  73. invokeOrder["receiver_info"]["district"] +
  74. invokeOrder["receiver_info"]["location_address"] +
  75. invokeOrder["receiver_info"]["location_name"] + "-" +
  76. invokeOrder["receiver_info"]["receiver_name"]
  77. businessOrder.setDeliverAddressAll(address)
  78. //订单金额类信息
  79. OrderFinances orderFinances = new OrderFinances()
  80. // orderFinances.setId(tableIdService.)
  81. return null;
  82. }
  83. }