BE_Order_CreateOrder_Douyin.groovy 4.9 KB

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