|
@@ -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);
|
|
|
+ }
|
|
|
}
|