import com.alibaba.fastjson2.JSON import com.dderp.common.api.BusinessExecutor import com.dderp.common.datas.BusinessOrderStatus import com.dderp.common.datas.ERPModule import com.dderp.common.entity.base.ProcessStringItem import com.dderp.common.entity.express.SFCreateOrderResult import com.dderp.common.entity.express.SFOrder import com.dderp.common.entity.express.SFOrderDetail import com.dderp.common.entity.express.SFOrderProductDetail import com.dderp.common.entity.express.SFOrderReceive import com.dderp.common.entity.order.BusinessOrder import com.dderp.common.entity.order.OrderFinances import com.dderp.common.http.HttpTools import com.dySweetFishPlugin.sql.TableIdService 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 javax.annotation.Resource import java.math.RoundingMode import java.nio.charset.StandardCharsets import java.time.LocalDateTime import java.time.ZoneOffset import java.util.concurrent.CompletableFuture import java.util.concurrent.ExecutionException import java.util.concurrent.TimeUnit import java.util.concurrent.TimeoutException @SuppressWarnings("unused") class BE_Order_CreateOrder_Douyin implements BusinessExecutor { private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName()) @Resource private JsonConvert jsonConvert @Resource private TableIdService tableIdService @Override String scriptName() { return "抖音来客创建订单" } @Override ERPModule module() { return ERPModule.ORDER_API } RetResult execute(ProcessStringItem source) { //秒级时间戳,groovy里面不让用system long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)) String dataSourceId = source.dataSourceId long supplierCode = source.supplierCode def jsonSlurper = new JsonSlurper() def invokeOrder = jsonSlurper.parseText(source.itemValue) BusinessOrder businessOrder = new BusinessOrder() businessOrder.setId(tableIdService.getTableIdMulti("deBusinessOrder.id", 1, dataSourceId, String.valueOf(supplierCode))) businessOrder.setOrderName(invokeOrder["merchant"]["account_name"] as String) businessOrder.setOrderCode(tableIdService.getTableCodeMulti("deBusinessOrder.code", dataSourceId, String.valueOf(supplierCode))) businessOrder.setOrderStatus(BusinessOrderStatus.init.value) //todo 商户平台需求一个绑定逻辑,用以判断该平台适用于哪一个脚本 //businessOrder.setIncomePlatformId(0) //businessOrder.setIncomePlatformName("") businessOrder.setIncomePlatformOrderCode(invokeOrder["order"]["order_id"] as String) businessOrder.setIncomePlatformOrderTimeLong(invokeOrder["order"]["pay_time"] as long * 1000)//抖音传过来的时间戳单位是秒 businessOrder.setIncomePlatformOrderTime(new Date(businessOrder.incomePlatformOrderTimeLong)) //抖音传过来的格式为起始时间戳(单位秒)- 截止时间戳(单位秒),示例:1669370006-1669371206,目前先取起始时间 long suggestTimeLong = (invokeOrder["order"]["sys_expect_time"] as String).split("-")[0] as long businessOrder.setSuggestDeliverTimeLong(suggestTimeLong * 1000) businessOrder.setSuggestDeliverTime(new Date(businessOrder.suggestDeliverTimeLong)) //todo 商户id同上 //businessOrder.setIdStore(0) //businessOrder.setStoreName("") BigDecimal deliverFee = new BigDecimal((invokeOrder["amount_info"]["freight_pay_amount"] as int) / 100).setScale(2, RoundingMode.CEILING) businessOrder.setDeliverFee(deliverFee) String address = "[" + invokeOrder["receiver_info"]["city"] + "]" + invokeOrder["receiver_info"]["province"] + invokeOrder["receiver_info"]["city"] + invokeOrder["receiver_info"]["district"] + invokeOrder["receiver_info"]["location_address"] + invokeOrder["receiver_info"]["location_name"] + "-" + invokeOrder["receiver_info"]["receiver_name"] businessOrder.setDeliverAddressAll(address) //订单金额类信息 OrderFinances orderFinances = new OrderFinances() // orderFinances.setId(tableIdService.) return null; } }