فهرست منبع

Merge remote-tracking branch 'origin/master'

wang 3 هفته پیش
والد
کامیت
e4b96e5898

+ 238 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/dto/hb/CreateOrderRequest.java

@@ -0,0 +1,238 @@
+package com.yami.shop.bean.dto.hb;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 订单详细信息
+ * 海博
+ *
+ * @author fbj
+ * @version 1.0.0
+ * @since 2025-09-29
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CreateOrderRequest {
+
+    /**
+     *交互订单号,用于交互, 需保证商家级别唯一,不超过64位
+     */
+    private String channelOrderId;
+    private String viewOrderId;
+
+    /**
+     * 订单状态:
+     * 20:订单已接单(待拣货)
+     * 30:订单待配送(拣货完成/自提类订单为待自提)
+     * 40:订单配送中
+     * 50:订单取消待审核
+     * 60:订单已取消
+     * 70:订单已送达
+     * 80:订单已完成
+     */
+    private Integer orderStatus;
+
+    /**
+     * 门店当天订单流水号,每天从1开始,不可重复
+     * 建议商家生成,如果商家不传值,则海博系统生成规则是按订单支付时间为准生成,
+     * 商家门店渠道订单级唯一,同一个订单只会有一个小号
+     * 注:商家不可仅对部分订单生成小号(商家统一生成或统一不生成),否则会出现乱序的问题
+     */
+    private Integer daySeq;
+
+    /**
+     * 商家门店编码
+     */
+    private String outStationNo;
+
+    /**
+     * 商家门店名称。如不传值,以海博系统配置为准, 长度不超过50
+     */
+    private String outStationName;
+
+    /**
+     * 订单备注信息, 长度不超过500
+     * 订单备注 = #下单人手机号*订单备注
+     * 样例:#13011112345*请尽快发货
+     */
+    private String caution;
+
+    /**
+     * 收件人姓名,长度不超过20
+     */
+    private String recipientName;
+
+    /**
+     * 收件人电话,有隐私号传隐私号,否则传真实手机号。长度不超过20
+     */
+    private String recipientPhone;
+
+    /**
+     * 收货地址纬度(火星系坐标)
+     */
+    private Double recipientLatitude;
+
+    /**
+     * 收货地址经度(火星系坐标)
+     */
+    private Double recipientLongitude;
+
+    /**
+     * 收货人地址,长度不超过255
+     */
+    private String recipientAddress;
+
+    /**
+     * 配送方式:
+     * 10商家自送
+     * 40用户自提
+     * 80快递配送
+     */
+    private Integer logisticsType;
+
+
+    /**
+     * 运单号,快递单号。长度不超过50
+     */
+    private String carrierNo;
+
+    /**
+     * 骑士姓名,长度不超过20
+     */
+    private String logisticsDispatcherName;
+
+    /**
+     * 骑士电话,长度不超过20
+     */
+    private String logisticsDispatcherMobile;
+
+    /**
+     * 订单时效类型:
+     * 0立即达
+     * 2定时达
+     */
+    private Integer orderAgingType;
+
+    /**
+     * 配送小费(商家增加的配送小费)
+     */
+    private Long logisticsStationTips;
+
+    /**
+     * 订单接单时间,时间戳毫秒数。如未传值,按订单支付时间为准
+     */
+    private Long orderConfirmTime;
+
+    /**
+     * 配送预计开始时间,时间戳毫秒数。如未传值,按配送预计送达时间为准
+     */
+    private Long logisticsPreStartTime;
+
+    /**
+     * 配送预计送达时间,时间戳毫秒数
+     */
+    private Long logisticsPreEndTime;
+
+    /**
+     * 订单支付时间,时间戳毫秒数
+     */
+    private Long orderPayTime;
+
+    /**
+     * 实际拣货完成时间,时间戳毫秒数
+     */
+    private Long orderPickTime;
+
+    /**
+     * 预计拣货完成时间,时间戳毫秒数
+     */
+    private Long orderPickPreEndTime;
+
+    /**
+     * 商品出库时间,即发货时间,时间戳毫秒数
+     */
+    private Long orderOutStockTime;
+
+    /**
+     * 订单完成配送时间,时间戳毫秒数
+     */
+    private Long orderLogisticsEndTime;
+
+    /**
+     * 订单完成时间,时间戳毫秒数
+     */
+    private Long orderCompletedTime;
+
+    /**
+     * 订单取消时间,时间戳毫秒数
+     */
+    private Long orderCancelTime;
+
+    /**
+     * 订单取消原因备注,长度不超过255
+     */
+    private String orderCancelRemark;
+
+
+
+    /**
+     * 是否预售单:
+     * 0:非预售单(默认)
+     * 1:预售单
+     * 只要有商品是预售,订单即为预售单
+     */
+    private Integer preSaleOrder;
+
+    /**
+     * 订单是否调整过:
+     * 0:未调整(默认)
+     * 1:已调整
+     */
+    private Integer adjusted;
+
+    /**
+     * 自提核验码(明文码),长度不超过50
+     * 商家提供核验码时优先本地核验(不再请求商家核验接口)。建议商家提供核验接口。
+     */
+    private String selfPickCode;
+
+    /**
+     * 额外信息
+     */
+    private String extra;
+
+    /**
+     * 订单费用
+     */
+    private OrderFee orderFee;
+
+    /**
+     * 发票信息
+     */
+    private List<OrderInvoice> orderInvoices;
+
+    /**
+     * 订单商品明细
+     */
+    private List<OrderProduct> products;
+
+    /**
+     * 商品活动信息列表(非必传)
+     */
+    private List<ProductActivity> productActivities;
+
+    /**
+     * 订单支付方式列表
+     */
+    private List<OrderPayment> orderPayments;
+}

+ 123 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/dto/hb/OrderFee.java

@@ -0,0 +1,123 @@
+package com.yami.shop.bean.dto.hb;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 订单费用信息
+ * 海博
+ *
+ * @author
+ * @version 1.0.0
+ * @since 2025-09-XX
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class OrderFee {
+
+    /**
+     * 单位分,订单总金额,包含所有费用
+     */
+    private Long originalPrice;
+
+    /**
+     * 单位分,用户实付
+     */
+    private Long userPayPrice;
+
+    /**
+     * 单位分,订单应结金额
+     */
+    private Long orderSettlement;
+
+    /**
+     * 单位分,订单包装费用
+     */
+    private Long packingPay;
+
+    /**
+     * 单位分,餐盒费
+     */
+    private Long lunchboxPay;
+
+    /**
+     * 单位分,货到付款费用(医药类)
+     */
+    private Long cashOnDeliveryMedicine;
+
+    /**
+     * 单位分,该订单商家需要支付给平台的费用
+     */
+    private Long pointDeduction;
+
+    /**
+     * 单位分,冷链费用
+     */
+    private Long coldBoxFee;
+
+    /**
+     * 单位分,取件服务费
+     */
+    private Long pickUpPartsServerFee;
+
+    /**
+     * 单位分,优惠前的配送费
+     */
+    private Long shippingFee;
+
+    /**
+     * 单位分,商家配送费补贴
+     */
+    private Long businessShippingFeeSubsidy;
+
+    /**
+     * 单位分,平台配送费补贴
+     */
+    private Long platformShippingFeeSubsidy;
+
+    /**
+     * 单位分,商家整单补贴
+     */
+    private Long businessOrderSubsidy;
+
+    /**
+     * 单位分,平台整单补贴
+     */
+    private Long platformOrderSubsidy;
+
+    /**
+     * 单位分,商家商品总补贴
+     */
+    private Long businessProductSubsidy;
+
+    /**
+     * 单位分,平台商品总补贴
+     */
+    private Long platformProductSubsidy;
+
+    /**
+     * 单位分,订单总优惠金额
+     */
+    private Long totalOrderDiscount;
+
+    /**
+     * 单位分,商品销售总金额,优惠前商品总价
+     */
+    private Long productSaleTotalPrice;
+
+    /**
+     * 单位分,用户积分抵扣金额
+     */
+    private Long userIntegralDeduction;
+
+    /**
+     * 单位分,订单改价金额,与商家协议后改的金额,正数表示降价,负数表示涨价
+     */
+    private Long adjustFee;
+}

+ 60 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/dto/hb/OrderInvoice.java

@@ -0,0 +1,60 @@
+package com.yami.shop.bean.dto.hb;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 订单发票信息
+ * 海博
+ *
+ * @author
+ * @version 1.0.0
+ * @since 2025-09-XX
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class OrderInvoice {
+
+    /**
+     * 纳税人识别号
+     */
+    private String dutyNo;
+
+    /**
+     * 发票抬头
+     */
+    private String title;
+
+    /**
+     * 发票类型
+     * 0:个人发票,1企业发票,2:企业专票
+     */
+    private Integer invoiceType;
+
+    /**
+     * 发票内容
+     */
+    private String content;
+
+    /**
+     * 发票内容类型
+     * 0:商品类别,1:商品明细,默认商品明细
+     */
+    private Integer contentType;
+
+    /**
+     * 单位分,开票金额
+     */
+    private Long amount;
+
+    /**
+     * 接收发票邮箱
+     */
+    private String email;
+}

+ 55 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/dto/hb/OrderPayment.java

@@ -0,0 +1,55 @@
+package com.yami.shop.bean.dto.hb;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 订单支付方式信息
+ * 海博
+ *
+ * @author
+ * @version 1.0.0
+ * @since 2025-09-XX
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class OrderPayment {
+
+    /**
+     * 支付类型
+     * 1001:支付宝
+     * 1002:微信
+     * 1003:银联
+     * 1004:京东支付
+     * 1005:云闪付
+     * 1101:钱包/余额
+     * 1201:储值卡
+     * 1202:储值卡(开票)
+     * 1203:储值卡(周年庆)
+     * 1204:兑换卡
+     * 1301:积分
+     * 1401:优惠券
+     * 1402:抵扣券
+     * 9999:其他
+     * 1500:抖支付优惠
+     */
+    private Integer paymentType;
+
+    /**
+     * 支付金额,单位:分
+     */
+    private Long paymentAmount;
+
+    /**
+     * 支付数量,默认:0
+     * 支付类型为积分时,表示积分数量
+     * 支付类型为优惠卷时,表示优惠卷数量
+     */
+    private Integer paymentNum;
+}

+ 132 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/dto/hb/OrderProduct.java

@@ -0,0 +1,132 @@
+package com.yami.shop.bean.dto.hb;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 订单商品明细信息
+ * 海博
+ *
+ * @author
+ * @version 1.0.0
+ * @since 2025-09-XX
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class OrderProduct {
+
+    /**
+     * 渠道商品编码
+     */
+    private String channelSkuId;
+
+    /**
+     * 商家商品编码
+     */
+    private String outSkuId;
+
+    /**
+     * 海博商品编码
+     */
+    private Long hbSkuId;
+
+    /**
+     * 商品是否预售
+     * 0:非预售(默认)
+     * 1:预售
+     */
+    private Integer preSale;
+
+    /**
+     * 商品UPC编码。如不传值,以海博系统为准
+     */
+    private String skuUpc;
+
+    /**
+     * 商品名称。如不传值,以海博系统为准
+     */
+    private String skuName;
+
+    /**
+     * 商品单品重量,单位g。如不传值,以海博系统为准
+     */
+    private Double skuWeight;
+
+    /**
+     * 商品销售单位。如不传值,以海博系统为准
+     */
+    private String unit;
+
+    /**
+     * 销售个数或份数
+     */
+    private Long count;
+
+    /**
+     * 单位分,商品原价
+     */
+    private Long originSkuPrice;
+
+    /**
+     * 单位分,商品活动价/优惠价(商品原价-商品补贴)
+     */
+    private Long activitySkuPrice;
+
+    /**
+     * 商品规格。如不传值,以海博系统为准
+     */
+    private String skuBasicSpec;
+
+    /**
+     * 商品图片。如不传值,以海博系统为准
+     */
+    private String skuImg;
+
+    /**
+     * 单位分,商家单品补贴金额
+     */
+    private Long businessSingleProductSubsidy;
+
+    /**
+     * 单位分,平台单品补贴金额
+     */
+    private Long platformSingleProductSubsidy;
+
+    /**
+     * 单位分,分摊商家整单补贴金额
+     */
+    private Long businessOrderSubsidy;
+
+    /**
+     * 单位分,分摊平台整单补贴金额
+     */
+    private Long platformOrderSubsidy;
+
+    /**
+     * 商品交易id,用于订单商品调整或退款标识唯一商品
+     */
+    private String transId;
+
+    /**
+     * 海博父类商品编码,用于标记赠品父子关系
+     */
+    private Long parentHBSkuId;
+
+    /**
+     * 促销类型
+     * 1101:买赠
+     * 1102:满赠
+     */
+    private String promotionType;
+
+    /**
+     * 商品属性,多个用英文逗号分隔,长度不超过450
+     */
+    private String productFeatures;
+}

+ 71 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/dto/hb/ProductActivity.java

@@ -0,0 +1,71 @@
+package com.yami.shop.bean.dto.hb;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 商品活动信息
+ * 海博
+ *
+ * @author
+ * @version 1.0.0
+ * @since 2025-09-XX
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ProductActivity {
+
+    /**
+     * 海博商品编码
+     */
+    private Long hbSkuId;
+
+    /**
+     * 活动id
+     */
+    private String activityId;
+
+    /**
+     * 活动类型
+     */
+    private String activityType;
+
+    /**
+     * 活动子类型
+     */
+    private String subActivityType;
+
+    /**
+     * 参与活动商品数量
+     */
+    private Long skuCount;
+
+    /**
+     * 单位分,平台活动补贴
+     */
+    private Long platformSubsidy;
+
+    /**
+     * 单位分,商家活动补贴
+     */
+    private Long businessSubsidy;
+
+    /**
+     * 活动类型:
+     * 1:单品
+     * 2:整单
+     * 3:配送费
+     */
+    private Integer activityDimension;
+
+    /**
+     * 商品交易id,用于订单商品调整或退款标识唯一商品
+     */
+    private String transId;
+}

+ 10 - 1
yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java

@@ -35,6 +35,10 @@ public class Order implements Serializable {
      * 店铺id
      */
     private Long shopId;
+    /**
+     * 渠道ID
+     */
+    private Long channelId;
 
     /**
      * 产品名称,多个产品将会以逗号隔开
@@ -82,7 +86,12 @@ public class Order implements Serializable {
     private Integer status;
 
     /**
-     * 配送类型
+     * 海博订单状态
+     */
+    private Integer hbOrderStatus;
+
+    /**
+     * 配送类型(1:快递 2:自提 3:及时配送)
      */
     private Integer dvyType;
 

+ 3 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/Sku.java

@@ -48,6 +48,9 @@ public class Sku implements Serializable {
      */
     private String properties;
 
+    /**
+     *  外部编码
+     */
     private String skuCode;
     /**
      * 规格

+ 20 - 5
yami-shop-bean/src/main/java/com/yami/shop/bean/model/UserAddrOrder.java

@@ -52,13 +52,13 @@ public class UserAddrOrder implements Serializable {
      */
 
     private String province;
-    
+
     /**
      * 城市
      */
 
     private String city;
-    
+
     /**
      * 区
      */
@@ -81,13 +81,13 @@ public class UserAddrOrder implements Serializable {
      */
 
     private Long provinceId;
-    
+
     /**
      * 城市ID
      */
 
     private Long cityId;
-    
+
     /**
      * 区域ID
      */
@@ -110,14 +110,29 @@ public class UserAddrOrder implements Serializable {
      */
     private Integer version;
 
+    /**
+     * 经度
+     */
     private Double longitude;
 
+    /**
+     * 纬度
+     */
     private Double latitude;
 
+    /**
+     * 地址名称
+     */
     private String address;
 
+    /**
+     * 地址名称
+     */
     private String addressName;
 
+    /**
+     * 地址详情
+     */
     private String addrDetail;
 
-}
+}

+ 18 - 7
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/hb/HBOrderController.java

@@ -2,6 +2,7 @@ package com.yami.shop.platform.controller.hb;
 
 import com.alibaba.fastjson.JSONObject;
 import com.yami.shop.common.util.hb.HBR;
+import com.yami.shop.service.hb.IHBOrderService;
 import io.swagger.annotations.Api;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -21,17 +22,17 @@ import org.springframework.web.bind.annotation.*;
 @CrossOrigin
 public class HBOrderController {
 
-
+    private final IHBOrderService orderService;
     /**
-     * 海博新增订单信息-回调
+     * 海博订单创建接口-推送接口
      *
-     * @param HBRequest 海博订单请求参数
+     * @param channelOrderId 海博订单单号
      * @return 前台类目响应
      */
-    @PostMapping("/add")
-    public HBR addGoods(@RequestBody JSONObject HBRequest) {
-        log.info("海博新增订单{}",HBRequest);
-        return null;
+    @PostMapping("/createOrderAsync")
+    public String addGoods(String  channelOrderId) {
+        log.info("海博新增订单{}",channelOrderId);
+        return orderService.createOrderAsync(channelOrderId);
     }
 
 
@@ -58,6 +59,16 @@ public class HBOrderController {
         log.info("海博订单完成{}",HBRequest);
         return null;
     }
+    /**
+     * 海博查询订单详情-回调
+     * @param HBRequest 海博查询订单详情请求参数
+     *
+     */
+    @PostMapping("/details")
+    public HBR details(@RequestBody JSONObject HBRequest) {
+        log.info("进入海博查询订单详情接口{}",HBRequest);
+        return orderService.details(HBRequest);
+    }
 
     /**
      * 海博订单-查询订单详情-回调

+ 1 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/OrderMapper.java

@@ -115,4 +115,5 @@ public interface OrderMapper extends BaseMapper<Order> {
     List<MyOrderItemDto> orderItemCommentByUserIdAndStatus(@Param("adapter") PageAdapter pageAdapter, @Param("userId") String userId,
                                                            @Param("isComm") Integer isComm);
     long countOrderItemComment(@Param("userId") String userId, @Param("isComm") Integer isComm);
+
 }

+ 14 - 0
yami-shop-service/src/main/java/com/yami/shop/service/hb/IHBOrderService.java

@@ -13,5 +13,19 @@ import com.yami.shop.common.util.hb.HBR;
 public interface IHBOrderService {
 
 
+    /**
+     * 海博订单详情-回调
+     *
+     * @param hbRequest 海博订单详情请求参数
+     * @return 订单详情响应
+     */
+    HBR details(JSONObject hbRequest);
 
+    /**
+     * 海博订单创建接口-推送接口
+     *
+     * @param channelOrderId 海博订单请求参数
+     * @return 前台类目响应
+     */
+    String createOrderAsync(String channelOrderId);
 }

+ 201 - 8
yami-shop-service/src/main/java/com/yami/shop/service/hb/impl/HBOrderService.java

@@ -3,13 +3,15 @@ package com.yami.shop.service.hb.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.yami.shop.bean.dto.hb.HBBaseReq;
-import com.yami.shop.bean.model.Product;
-import com.yami.shop.bean.model.Sku;
+import com.yami.shop.bean.dto.hb.*;
+import com.yami.shop.bean.enums.DvyType;
+import com.yami.shop.bean.model.*;
 import com.yami.shop.common.util.hb.HBR;
-import com.yami.shop.dao.OrderMapper;
-import com.yami.shop.dao.ProductMapper;
-import com.yami.shop.dao.SkuMapper;
+import com.yami.shop.dao.*;
+import com.yami.shop.service.SkuService;
+import com.yami.shop.service.UserAddrOrderService;
+import com.yami.shop.service.UserAddrService;
+import com.yami.shop.service.UserService;
 import com.yami.shop.service.hb.IHBOrderService;
 import com.yami.shop.utils.HBSignUtil;
 import lombok.AllArgsConstructor;
@@ -18,6 +20,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import static com.yami.shop.common.util.HttpUtil.post;
@@ -37,6 +40,11 @@ import static com.yami.shop.common.util.HttpUtil.post;
 public class HBOrderService implements IHBOrderService {
     private final HBSignUtil hbSignUtil;
     private final OrderMapper orderMapper;
+    private final OrderItemMapper orderItemMapper;
+    private final ShopDetailMapper shopDetailMapper;
+    private final UserService userService;
+    private final UserAddrOrderService userAddrOrderService;
+    private final UserAddrService userAddrService;
     private final ProductMapper productMapper;
     private final SkuMapper skuMapper;
 
@@ -97,11 +105,196 @@ public class HBOrderService implements IHBOrderService {
         build.setBody(JSON.toJSONString(requestBody));
 
         build.setSign(hbSignUtil.signMd5(build));
-        log.info("post 商品查询请求参数:{}", JSON.toJSONString(build));
+        log.info("post 订单查询请求参数:{}", JSON.toJSONString(build));
         String post = post(hbSignUtil.getHBHost() + "/api/product/getSku", build);
-        log.info("post 商品查询结果:{}", post);
+        log.info("post 订单查询结果:{}", post);
         return post;
     }
 
+    @Override
+    public String createOrderAsync(String channelOrderId) {
 
+        HBBaseReq<Object> build = HBBaseReq.create();
+        build.setAppId(hbSignUtil.getAppId());
+
+        // 3. 构建外层请求体
+        JSONObject requestBody = new JSONObject();
+        requestBody.put("channelOrderId", channelOrderId);
+        // 4. 将整个JSON对象序列化为字符串并设置
+        build.setBody(JSON.toJSONString(requestBody));
+
+        build.setSign(hbSignUtil.signMd5(build));
+        log.info("post 订单推送单号参数:{}", JSON.toJSONString(build));
+        String post = post(hbSignUtil.getHBHost() + "/api/order/createOrderAsync", build);
+        log.info("post 订单推送结果:{}", post);
+        return post;
+    }
+
+
+
+    @Override
+    public HBR details(JSONObject hbRequest) {
+        String bodyStr = hbRequest.getString("body");
+        log.info("订单信息,body:{}", bodyStr);
+        JSONObject bodyJson = JSON.parseObject(bodyStr);
+        Order order = orderMapper.getOrderAndOrderItemByOrderNumber(bodyJson.getString("Order"));
+
+        if (order == null) {
+            log.error("系统订单信息查询不到,单号:{}", bodyJson.getString("Order"));
+            return HBR.error("系统订单信息查询不到,单号:" + bodyJson.getString("Order"));
+        }
+        CreateOrderRequest createOrderRequest = new CreateOrderRequest();
+        createOrderRequest.setChannelOrderId(order.getOrderNumber());
+        createOrderRequest.setViewOrderId(order.getOrderNumber());
+        createOrderRequest.setOrderStatus(order.getHbOrderStatus());
+//        createOrderRequest.setDaySeq(Order.getDaySeq());门店流水号
+
+        ShopDetail shopDetail = shopDetailMapper.selectById(order.getShopId());
+        createOrderRequest.setOutStationNo(shopDetail.getOutStationNo());
+        createOrderRequest.setOutStationName(shopDetail.getShopName());
+
+        User userByUserId = userService.getUserByUserId(order.getUserId());
+        createOrderRequest.setCaution(userByUserId.getUserMobile() + "*" + order.getRemarks());
+
+        UserAddrOrder userAddrOrder = userAddrOrderService.selectByAddrOrderId(order.getAddrOrderId());
+        if (userAddrOrder == null) {
+            log.error("收货地址信息查询不到,单号:{}", bodyJson.getString("Order"));
+            createOrderRequest.setRecipientName(shopDetail.getMobile());
+            createOrderRequest.setRecipientPhone(shopDetail.getMobile());
+            createOrderRequest.setRecipientLatitude(Double.parseDouble(shopDetail.getShopLat()));
+            createOrderRequest.setRecipientLongitude(Double.parseDouble(shopDetail.getShopLng()));
+            createOrderRequest.setRecipientAddress(shopDetail.getShopAddress());
+        } else {
+            createOrderRequest.setRecipientName(userAddrOrder.getReceiver());
+            createOrderRequest.setRecipientPhone(userAddrOrder.getMobile());
+            createOrderRequest.setRecipientLatitude(userAddrOrder.getLatitude());
+            createOrderRequest.setRecipientLongitude(userAddrOrder.getLongitude());
+            createOrderRequest.setRecipientAddress(userAddrOrder.getAddress() + userAddrOrder.getAddressName() + userAddrOrder.getAddrDetail());
+        }
+
+        int dvyType = 80;
+        if (order.getDvyType() == 2) {
+            dvyType = 40;
+        }
+
+        createOrderRequest.setLogisticsType(dvyType);
+//        createOrderRequest.setCarrierNo(Order.getCarrierNo());运单号,快递单号
+//        createOrderRequest.setLogisticsDispatcherName(Order.getLogisticsDispatcherName()); 骑士姓名
+//        createOrderRequest.setLogisticsDispatcherMobile(Order.getLogisticsDispatcherMobile());骑士电话
+        createOrderRequest.setOrderAgingType(0);
+//        createOrderRequest.setLogisticsStationTips(Order.getLogisticsStationTips());配送小费
+        createOrderRequest.setOrderConfirmTime(order.getCreateTime().getTime());
+//        createOrderRequest.setLogisticsPreStartTime(Order.getLogisticsPreStartTime());配送预计开始时间
+//        createOrderRequest.setLogisticsPreEndTime(Order.getLogisticsPreEndTime());//配送预计送达时间
+        createOrderRequest.setOrderPayTime(order.getPayTime().getTime());
+//        createOrderRequest.setOrderPickTime(order.getOrderPickTime());实际拣货完成时间
+//        createOrderRequest.setOrderPickPreEndTime(order.getOrderPickPreEndTime());
+        if (order.getDvyTime() != null) {
+            createOrderRequest.setOrderOutStockTime(order.getDvyTime().getTime());
+        }
+//        createOrderRequest.setOrderLogisticsEndTime();
+        if (order.getFinallyTime() != null) {
+            createOrderRequest.setOrderCompletedTime(order.getFinallyTime().getTime());
+        }
+        if (order.getCancelTime() != null) {
+            createOrderRequest.setOrderCancelTime(order.getCancelTime().getTime());
+        }
+//        createOrderRequest.setOrderCancelRemark(order.getOrderCancelRemark());
+        createOrderRequest.setPreSaleOrder(0);
+        createOrderRequest.setAdjusted(0);
+//        createOrderRequest.setSelfPickCode(order.getSelfPickCode());
+//        createOrderRequest.setExtra(order.getExtra());
+
+        //订单费用信息
+
+        OrderFee orderFee = new OrderFee();
+        long totalPrice = (long) (order.getTotal() * 100);
+        orderFee.setOriginalPrice(totalPrice);
+        long actualTotal = (long) (order.getActualTotal() * 100);
+        orderFee.setUserPayPrice(actualTotal);
+        orderFee.setOrderSettlement(actualTotal);
+//        orderFee.setPackingPay(0);
+//        orderFee.setLunchboxPay(0);
+//        orderFee.setCashOnDeliveryMedicine(0);
+//        orderFee.setPointDeduction(0);
+//        orderFee.setColdBoxFee(0);
+//        orderFee.setPickUpPartsServerFee(0);
+        long freightAmount = (long) (order.getFreightAmount() * 100);
+        orderFee.setShippingFee(freightAmount);
+        orderFee.setBusinessShippingFeeSubsidy(0L);
+        orderFee.setPlatformShippingFeeSubsidy(0L);
+        orderFee.setBusinessOrderSubsidy(totalPrice - actualTotal);
+        orderFee.setPlatformOrderSubsidy(0L);
+        orderFee.setBusinessProductSubsidy(totalPrice - actualTotal);
+        orderFee.setPlatformProductSubsidy(0L);
+        orderFee.setTotalOrderDiscount(totalPrice - actualTotal);
+        orderFee.setProductSaleTotalPrice(totalPrice);
+//        orderFee.setUserIntegralDeduction(0L);用户积分抵扣金额
+//        orderFee.setAdjustFee(0);
+        createOrderRequest.setOrderFee(orderFee);
+
+
+        //订单商品明细
+        List<OrderProduct> orderProductList = new ArrayList<>();
+        OrderProduct orderProduct = new OrderProduct();
+
+        List<OrderItem> listByOrderNumber = orderItemMapper.getListByOrderNumber(order.getOrderNumber());
+        for (OrderItem orderItem : listByOrderNumber) {
+            Product product1 = productMapper.selectById(orderItem.getProdId());
+            Sku sku = skuMapper.selectById(orderItem.getSkuId());
+            orderProduct.setChannelSkuId(sku.getSkuId().toString());
+            orderProduct.setOutSkuId(sku.getPartyCode());
+            orderProduct.setHbSkuId(Long.parseLong(sku.getHbSkuId()));
+            orderProduct.setPreSale(0);
+//            orderProduct.setSkuUpc();
+            orderProduct.setSkuName(product1.getProdName());
+            orderProduct.setSkuWeight(sku.getWeight());
+            orderProduct.setUnit(sku.getWeightUnit());
+            orderProduct.setCount((long) orderItem.getProdCount());
+            orderProduct.setOriginSkuPrice((long)(sku.getPrice()*100));
+            orderProduct.setActivitySkuPrice((long)(sku.getPrice()*100));
+            orderProduct.setSkuBasicSpec(sku.getSpec());
+//            orderProduct.setSkuImg(sku.getPic());
+            orderProduct.setBusinessSingleProductSubsidy(0L);
+            orderProduct.setPlatformSingleProductSubsidy(0L);
+            orderProduct.setBusinessOrderSubsidy(0L);
+            orderProduct.setPlatformOrderSubsidy(0L);
+            orderProduct.setTransId(orderItem.getOrderItemId().toString());
+            orderProduct.setParentHBSkuId(0L);
+//            orderProduct.setPromotionType(sku.getPromotionType());
+//            orderProduct.setProductFeatures(sku.getProductFeatures());
+
+            orderProductList.add(orderProduct);
+        }
+
+        createOrderRequest.setProducts(orderProductList);
+
+
+        //订单支付信息
+        List<OrderPayment> orderPaymentList = new ArrayList<>();
+        OrderPayment orderPayment = new OrderPayment();
+        if (order.getPayType() == 1) {
+            orderPayment.setPaymentType(1002);
+        } else if (order.getPayType() == 2) {
+            orderPayment.setPaymentType(1001);
+        }
+        orderPayment.setPaymentAmount(totalPrice);
+        orderPayment.setPaymentNum(0);
+        orderPaymentList.add(orderPayment);
+        createOrderRequest.setOrderPayments(orderPaymentList);
+
+
+        //订单商品活动
+//        createOrderRequest.setProductActivities(order.getProductActivities());
+
+
+        //订单发票信息
+//        List<OrderInvoice> orderInvoiceList = new ArrayList<>();
+//        OrderInvoice orderInvoice = new OrderInvoice();
+//        orderInvoiceList.add(orderInvoice);
+//        createOrderRequest.setOrderInvoices(orderInvoiceList);
+
+
+        return HBR.success(createOrderRequest);
+    }
 }