import com.dderp.common.api.BusinessExecutor import com.dderp.common.api.StoreService import com.dderp.common.datas.BusinessOrderStatus import com.dderp.common.datas.ERPModule import com.dderp.common.entity.base.ProcessStringItem import com.dderp.common.entity.order.BusinessOrder import com.dderp.common.entity.order.OrderDeliveryInfo import com.dderp.common.entity.order.OrderFinances 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.time.LocalDateTime import java.time.ZoneOffset @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 @Resource private StoreService storeService @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 商户平台需求一个绑定逻辑,用以判断该平台适用于哪一个脚本 // storeService.getStorePlatformByInvokeInfo(invokeOrder["poi"]["poi_id"] ) //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.getTableIdMulti("deBusinessOrder.id", 1, dataSourceId, String.valueOf(supplierCode))) orderFinances.setIdOrder(businessOrder.id) orderFinances.setOrderMoney(new BigDecimal((invokeOrder["amount_info"]["origin_amount"] as int) / 100).setScale(2, RoundingMode.CEILING)) orderFinances.setDeliverFee(deliverFee) orderFinances.setCustomerPaid(new BigDecimal((invokeOrder["amount_info"]["pay_amount"] as int) / 100).setScale(2, RoundingMode.CEILING)) orderFinances.setStoreRealCollection(new BigDecimal((invokeOrder["amount_info"]["estimated_order_income"] as int) / 100).setScale(2, RoundingMode.CEILING)) businessOrder.setOrderFinances(orderFinances) //订单配送类信息 OrderDeliveryInfo orderDeliveryInfo = new OrderDeliveryInfo() return null; } }