|
@@ -52,6 +52,9 @@ import com.fs.hisStore.service.IFsExpressScrmService;
|
|
|
import com.fs.hisStore.service.IFsStoreOrderScrmService;
|
|
import com.fs.hisStore.service.IFsStoreOrderScrmService;
|
|
|
import com.fs.hisStore.vo.FsStoreOrderItemVO;
|
|
import com.fs.hisStore.vo.FsStoreOrderItemVO;
|
|
|
import com.fs.live.domain.LiveOrder;
|
|
import com.fs.live.domain.LiveOrder;
|
|
|
|
|
+import com.fs.live.domain.LiveOrderItem;
|
|
|
|
|
+import com.fs.live.mapper.LiveOrderItemMapper;
|
|
|
|
|
+import com.fs.live.mapper.LiveOrderMapper;
|
|
|
import com.fs.qw.domain.QwExternalContact;
|
|
import com.fs.qw.domain.QwExternalContact;
|
|
|
import com.fs.qw.domain.QwUser;
|
|
import com.fs.qw.domain.QwUser;
|
|
|
import com.fs.qw.mapper.QwUserMapper;
|
|
import com.fs.qw.mapper.QwUserMapper;
|
|
@@ -156,10 +159,15 @@ public class DfOrderServiceImpl implements IErpOrderService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private FsIntegralOrderMapper fsIntegralOrderMapper;
|
|
private FsIntegralOrderMapper fsIntegralOrderMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private LiveOrderMapper liveOrderMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private LiveOrderItemMapper liveOrderItemMapper;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public ErpOrderResponse addOrder(ErpOrder order) {
|
|
public ErpOrderResponse addOrder(ErpOrder order) {
|
|
|
- if (order.getIsIntegralOrder())
|
|
|
|
|
|
|
+ if (!Objects.isNull(order.getIsIntegralOrder()) && order.getIsIntegralOrder())
|
|
|
return getErpIntegralOrderResponse(order);
|
|
return getErpIntegralOrderResponse(order);
|
|
|
return getErpOrderResponse(order);
|
|
return getErpOrderResponse(order);
|
|
|
}
|
|
}
|
|
@@ -171,7 +179,51 @@ public class DfOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public ErpOrderResponse addLiveOrder(ErpOrder order) {
|
|
public ErpOrderResponse addLiveOrder(ErpOrder order) {
|
|
|
- return null;
|
|
|
|
|
|
|
+ return getLiveErpOrderResponse(order);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private ErpOrderResponse getLiveErpOrderResponse(ErpOrder order) {
|
|
|
|
|
+ LiveOrder liveOrder = liveOrderMapper.selectLiveOrderByOrderCode(order.getPlatform_code());
|
|
|
|
|
+ if (liveOrder == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ Long dfAccountId = getSFAccountIndex(liveOrder.getOrderId());
|
|
|
|
|
+ //1.获取请求参数
|
|
|
|
|
+ ExternalOrderRequestVo vo = getCreateLiveOrderRequestParam(order, liveOrder, dfAccountId);
|
|
|
|
|
+ if (vo == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ Map<String, Object> map = JSON.parseObject(JSON.toJSONString(vo), Map.class);
|
|
|
|
|
+ //2.请求
|
|
|
|
|
+ log.info("开始推送订单,参数: {}", JSON.toJSONString(map));
|
|
|
|
|
+ String response = client.execute(RequestUrlEnum.CREAT_ORDER, map, dfAccountId);
|
|
|
|
|
+ DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
|
|
+ //3.处理请求结果
|
|
|
|
|
+ if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
|
|
|
+ //存储订单推送用的哪个账户
|
|
|
|
|
+ FsStoreOrderDf df = addDfOrderLive(liveOrder, dfAccountId);
|
|
|
|
|
+ log.info("订单推送成功: {}", response);
|
|
|
|
|
+ //可以回调 也可以查询订单
|
|
|
|
|
+ Map<String, Object> orderResultQueryParam = new HashMap<>();
|
|
|
|
|
+ orderResultQueryParam.put("orderNumber", order.getPlatform_code());
|
|
|
|
|
+ orderResultQueryParam.put("exInterfaceType", df.getStatus());
|
|
|
|
|
+ try {
|
|
|
|
|
+ getOrderLiveResult(orderResultQueryParam, dfAccountId);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.info("推送订单完成,查询订单问题{}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
|
|
|
|
|
+ erpOrderResponse.setCode(order.getPlatform_code());
|
|
|
|
|
+ erpOrderResponse.setSuccess(true);
|
|
|
|
|
+ return erpOrderResponse;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ throw new RuntimeException(String.format("订单推送失败,原因: %s", dfApiResponse.getMsg()));
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ return new ErpOrderResponse();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -286,7 +338,50 @@ public class DfOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public ErpOrderResponse refundLiveOrder(ErpRefundOrder order) {
|
|
public ErpOrderResponse refundLiveOrder(ErpRefundOrder order) {
|
|
|
- return null;
|
|
|
|
|
|
|
+ //获取代服账户
|
|
|
|
|
+ String orderCode = order.getOrderCode();
|
|
|
|
|
+ LiveOrder liveOrder = liveOrderMapper.selectLiveOrderByOrderCode(orderCode);
|
|
|
|
|
+ FsStoreOrderDf df = fsStoreOrderDfMapper.selectFsStoreOrderDfByOrderId(liveOrder.getOrderId());
|
|
|
|
|
+ if (df == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ Long dfAccountId = getSFAccountIndex(liveOrder.getOrderId());
|
|
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
|
|
+ map.put("loginAccount", df.getLoginAccount());
|
|
|
|
|
+ FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
|
|
|
|
|
+ if (dfAccount != null && StringUtils.isNotBlank(dfAccount.getCallBackUrl())) {
|
|
|
|
|
+ map.put("callBackUrl", dfAccount.getCallBackUrl());
|
|
|
|
|
+ }
|
|
|
|
|
+ map.put("orderNumber", orderCode);
|
|
|
|
|
+ map.put("mailNumber", liveOrder.getDeliverySn());
|
|
|
|
|
+ try {
|
|
|
|
|
+ //2.请求
|
|
|
|
|
+ log.info("开始取消订单,参数: {}", JSON.toJSONString(map));
|
|
|
|
|
+ String response = client.execute(RequestUrlEnum.ORDER_CANCEL, map, dfAccountId);
|
|
|
|
|
+ DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
|
|
+ //3.处理请求结果
|
|
|
|
|
+ if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
|
|
|
+ //存储订单推送用的哪个账户
|
|
|
|
|
+ log.info("订单取消成功: {}", response);
|
|
|
|
|
+ //修改df表
|
|
|
|
|
+ df.setStatus(2);
|
|
|
|
|
+ df.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
|
+ fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
|
|
|
|
|
+ //可以回调 也可以查询订单
|
|
|
|
|
+ Map<String, Object> orderResultQueryParam = new HashMap<>();
|
|
|
|
|
+ orderResultQueryParam.put("orderNumber", orderCode);
|
|
|
|
|
+ orderResultQueryParam.put("exInterfaceType", 2); //2为查询取消订单结果
|
|
|
|
|
+ ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
|
|
|
|
|
+ erpOrderResponse.setCode(orderCode);
|
|
|
|
|
+ erpOrderResponse.setSuccess(true);
|
|
|
|
|
+ return erpOrderResponse;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ throw new RuntimeException(String.format("订单取消失败,原因: %s", dfApiResponse.getMsg()));
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ return new ErpOrderResponse();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -441,7 +536,30 @@ public class DfOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public ErpOrderQueryResponse getLiveOrder(ErpOrderQueryRequert param) {
|
|
public ErpOrderQueryResponse getLiveOrder(ErpOrderQueryRequert param) {
|
|
|
- return null;
|
|
|
|
|
|
|
+ ErpOrderQueryResponse response = new ErpOrderQueryResponse();
|
|
|
|
|
+ String orderNumber = param.getCode();
|
|
|
|
|
+ if (StrUtil.isNotBlank(orderNumber)) {
|
|
|
|
|
+ LiveOrder order = liveOrderMapper.selectLiveOrderByOrderCode(orderNumber);
|
|
|
|
|
+ if (order != null) {
|
|
|
|
|
+ //获取下单账户
|
|
|
|
|
+ FsStoreOrderDf df = fsStoreOrderDfMapper.selectFsStoreOrderDfByOrderId(order.getOrderId());
|
|
|
|
|
+ if (df == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ Long dfAccountId = getSFAccountIndex(order.getOrderId());
|
|
|
|
|
+ if (dfAccountId != null) {
|
|
|
|
|
+ Map<String, Object> orderResultQueryParam = new HashMap<>();
|
|
|
|
|
+ orderResultQueryParam.put("orderNumber", orderNumber);
|
|
|
|
|
+ orderResultQueryParam.put("exInterfaceType", df.getStatus());
|
|
|
|
|
+ getOrderLiveResult(orderResultQueryParam, dfAccountId);
|
|
|
|
|
+ return response;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ response.setErrorDesc("该订单不存在/顺丰账户不存在");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ response.setErrorDesc("未获取到原始订单号");
|
|
|
|
|
+ }
|
|
|
|
|
+ return response;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -460,7 +578,9 @@ public class DfOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public BaseResponse refundUpdateLive(ErpRefundUpdateRequest param) {
|
|
public BaseResponse refundUpdateLive(ErpRefundUpdateRequest param) {
|
|
|
- return null;
|
|
|
|
|
|
|
+ ErpRefundOrder erpRefundOrder = new ErpRefundOrder();
|
|
|
|
|
+ erpRefundOrder.setOrderCode(param.getTid());
|
|
|
|
|
+ return refundLiveOrder(erpRefundOrder);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -790,7 +910,97 @@ public class DfOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void getOrderLiveDeliveryStatus(LiveOrder order) {
|
|
public void getOrderLiveDeliveryStatus(LiveOrder order) {
|
|
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
|
|
+ Long dfAccountId = getSFAccountIndex(order.getOrderId());
|
|
|
|
|
+ map.put("orderNumber", order.getOrderCode());
|
|
|
|
|
+ map.put("mailNumber", order.getDeliverySn());
|
|
|
|
|
+ try {
|
|
|
|
|
+ String response = client.execute(RequestUrlEnum.ORDER_DELIVERY_STATUS, map, dfAccountId);
|
|
|
|
|
+ DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
|
|
+ if ("运单不存在".equals(dfApiResponse.getMsg())) {
|
|
|
|
|
+ //查看原来物流状态
|
|
|
|
|
+ cancelOrderLive(order);
|
|
|
|
|
+ log.info("代服管家 getOrderDeliveryStatus: {}", response);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ //3.处理请求结果
|
|
|
|
|
+ if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
|
|
|
+ String jsonString = JSON.toJSONString(dfApiResponse.getResult());
|
|
|
|
|
+ DFOrderStatusResultRequest temp = JSON.parseObject(jsonString, DFOrderStatusResultRequest.class);
|
|
|
|
|
+ //0待揽收 1已揽收 2运输中 3派送中 4异常件 5退回件 6退回签收 7转寄件 8作废件 9已签收 10 已取消
|
|
|
|
|
+ Integer deliveryStatus = 0;
|
|
|
|
|
+ String stateEx = "0";
|
|
|
|
|
+ LiveOrder liveOrderMap = new LiveOrder();
|
|
|
|
|
+ liveOrderMap.setOrderId(order.getOrderId());
|
|
|
|
|
+ Integer status = temp.getStatus();
|
|
|
|
|
+ switch (status) {
|
|
|
|
|
+ case 0:
|
|
|
|
|
+ case 1:
|
|
|
|
|
+ case 2:
|
|
|
|
|
+ deliveryStatus = status;
|
|
|
|
|
+ stateEx = status.toString();
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 3:
|
|
|
|
|
+ deliveryStatus = 2;
|
|
|
|
|
+ stateEx = "202";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 4:
|
|
|
|
|
+ deliveryStatus = status;
|
|
|
|
|
+ stateEx = status.toString();
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 5:
|
|
|
|
|
+ deliveryStatus = 4;
|
|
|
|
|
+ stateEx = "407";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 6:
|
|
|
|
|
+ deliveryStatus = status;
|
|
|
|
|
+ stateEx = "406";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 9:
|
|
|
|
|
+ deliveryStatus = 3;
|
|
|
|
|
+ stateEx = "301";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 10:
|
|
|
|
|
+ String mailNumber = temp.getMailNumber();
|
|
|
|
|
+ List<LiveOrder> liveOrders = liveOrderMapper.selectLiveOrderList(new LiveOrder() {{
|
|
|
|
|
+ setDeliverySn(mailNumber);
|
|
|
|
|
+ }});
|
|
|
|
|
+ if (liveOrders != null && !liveOrders.isEmpty()) {
|
|
|
|
|
+ liveOrders.forEach(tempOrder -> {
|
|
|
|
|
+ cancelOrderLive(tempOrder);
|
|
|
|
|
+ log.info("代服管家 订单取消成功: {}", response);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ liveOrderMap.setDeliveryStatus(deliveryStatus);
|
|
|
|
|
+ liveOrderMap.setDeliveryType(stateEx);
|
|
|
|
|
+ liveOrderMapper.updateLiveOrder(liveOrderMap);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ private void cancelOrderLive(LiveOrder order) {
|
|
|
|
|
+ Integer deliveryStatus = order.getDeliveryStatus();
|
|
|
|
|
+ if (deliveryStatus == null || deliveryStatus == 0) {
|
|
|
|
|
+ //没有物流信息
|
|
|
|
|
+ //修改订单状态 方便后续重新发货
|
|
|
|
|
+ order.setStatus(1);
|
|
|
|
|
+ order.setExtendOrderId("");
|
|
|
|
|
+ order.setDeliverySn("");
|
|
|
|
|
+ liveOrderMapper.updateLiveOrder(order);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //有物流信息->售后处理
|
|
|
|
|
+ //取消订单
|
|
|
|
|
+ // TODO: 实现直播订单退款逻辑
|
|
|
|
|
+ }
|
|
|
|
|
+ FsStoreOrderDf df = new FsStoreOrderDf();
|
|
|
|
|
+ df.setOrderId(order.getOrderId());
|
|
|
|
|
+ df.setStatus(2);
|
|
|
|
|
+ df.setUpdateTime(new Date());
|
|
|
|
|
+ fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void cancelOrder(FsStoreOrder order) {
|
|
private void cancelOrder(FsStoreOrder order) {
|
|
@@ -1865,4 +2075,224 @@ public class DfOrderServiceImpl implements IErpOrderService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private ExternalOrderRequestVo getCreateLiveOrderRequestParam(ErpOrder order, LiveOrder liveOrder, Long dfAccountId) {
|
|
|
|
|
+ ExternalOrderRequestVo vo = new ExternalOrderRequestVo();
|
|
|
|
|
+ FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
|
|
|
|
|
+ if (dfAccount == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ String loginAccount = dfAccount.getLoginAccount();
|
|
|
|
|
+ vo.setMonthlyCard(dfAccount.getMonthlyCard());
|
|
|
|
|
+ vo.setExpressProductCode(dfAccount.getExpressProductCode());
|
|
|
|
|
+ vo.setLoginAccount(loginAccount);
|
|
|
|
|
+ String callBackUrl = dfAccount.getCallBackUrl();
|
|
|
|
|
+ if (StringUtils.isNotBlank(callBackUrl)) {
|
|
|
|
|
+ vo.setCallBackUrl(callBackUrl);
|
|
|
|
|
+ }
|
|
|
|
|
+ FsStoreOrderDf temp = fsStoreOrderDfMapper.selectFsStoreOrderDfByOrderId(liveOrder.getOrderId());
|
|
|
|
|
+ if (temp != null) {
|
|
|
|
|
+ vo.setParcelQuantity(temp.getParcelQuantity());
|
|
|
|
|
+ }
|
|
|
|
|
+ vo.setOrderNumber(order.getPlatform_code());
|
|
|
|
|
+ int orderPayMethod = 0;
|
|
|
|
|
+ BigDecimal couponPrice = liveOrder.getCouponPrice();
|
|
|
|
|
+ if (couponPrice == null) {
|
|
|
|
|
+ couponPrice = BigDecimal.ZERO;
|
|
|
|
|
+ }
|
|
|
|
|
+ if ("1".equals(liveOrder.getPayType())) {
|
|
|
|
|
+ orderPayMethod = 1;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ orderPayMethod = 2;
|
|
|
|
|
+ vo.setCollectingMoney(liveOrder.getDeliveryPayMoney().doubleValue());
|
|
|
|
|
+ vo.setCollectionCardNumber(dfAccount.getMonthlyCard());
|
|
|
|
|
+ }
|
|
|
|
|
+ vo.setOrderPayMethod(orderPayMethod);
|
|
|
|
|
+ vo.setConsignmentNumber(Integer.valueOf(liveOrder.getTotalNum()));
|
|
|
|
|
+ vo.setBuyerMessage(liveOrder.getRemark());
|
|
|
|
|
+ vo.setSenderName(dfAccount.getSenderName());
|
|
|
|
|
+ vo.setSenderPhone(dfAccount.getSenderPhone());
|
|
|
|
|
+ vo.setSenderProvince(dfAccount.getSenderProvince());
|
|
|
|
|
+ vo.setSenderCity(dfAccount.getSenderCity());
|
|
|
|
|
+ vo.setSenderDistrict(dfAccount.getSenderDistrict());
|
|
|
|
|
+ vo.setSenderAddress(dfAccount.getSenderAddress());
|
|
|
|
|
+ vo.setReceiverName(order.getReceiver_name());
|
|
|
|
|
+ vo.setReceiverPhone(order.getReceiver_mobile());
|
|
|
|
|
+ vo.setReceiverTelephone(order.getReceiver_phone());
|
|
|
|
|
+ vo.setReceiverProvince(order.getReceiver_province());
|
|
|
|
|
+ vo.setReceiverCity(order.getReceiver_city());
|
|
|
|
|
+ vo.setReceiverDistrict(order.getReceiver_district());
|
|
|
|
|
+ vo.setReceiverAddress(order.getReceiver_address());
|
|
|
|
|
+ vo.setExpressPayMethod(1);
|
|
|
|
|
+ StringBuilder consignmentStr = new StringBuilder();
|
|
|
|
|
+ List<LiveOrderItem> items = liveOrderItemMapper.selectLiveOrderItemByOrderId(liveOrder.getOrderId());
|
|
|
|
|
+ if (items != null && !items.isEmpty()) {
|
|
|
|
|
+ ArrayList<ExteriorOrderSkuVo> orderSkus = new ArrayList<>();
|
|
|
|
|
+ items.forEach(item -> {
|
|
|
|
|
+ ExteriorOrderSkuVo skuVo = new ExteriorOrderSkuVo();
|
|
|
|
|
+ FsStoreProductScrm product = fsStoreProductScrmMapper.selectFsStoreProductById(item.getProductId());
|
|
|
|
|
+ Asserts.check(ObjectUtils.isNotNull(product), "该产品不存在! 产品id: {} ", item.getProductId());
|
|
|
|
|
+ skuVo.setProductName(product.getProductName());
|
|
|
|
|
+ com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(item.getJsonInfo());
|
|
|
|
|
+ skuVo.setSkuCode(jsonObject.getString("sku"));
|
|
|
|
|
+ String barCode = jsonObject.getString("barCode");
|
|
|
|
|
+ if (StringUtils.isNotBlank(barCode)) {
|
|
|
|
|
+ skuVo.setProductCode(barCode);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ skuVo.setProductCode(item.getProductId().toString());
|
|
|
|
|
+ }
|
|
|
|
|
+ skuVo.setAttributeNames(jsonObject.getString("sku"));
|
|
|
|
|
+ skuVo.setProductNumber(Math.toIntExact(item.getNum()));
|
|
|
|
|
+ skuVo.setPrice(product.getPrice().doubleValue());
|
|
|
|
|
+ skuVo.setSubAmount(product.getPrice().doubleValue() * item.getNum());
|
|
|
|
|
+ consignmentStr.append(product.getProductName()).append("*").append(item.getNum()).append(",");
|
|
|
|
|
+ orderSkus.add(skuVo);
|
|
|
|
|
+ });
|
|
|
|
|
+ if (consignmentStr.length() > 0) {
|
|
|
|
|
+ consignmentStr.deleteCharAt(consignmentStr.length() - 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (consignmentStr.length() > 100) {
|
|
|
|
|
+ consignmentStr.delete(consignmentStr.length() - 4, consignmentStr.length());
|
|
|
|
|
+ consignmentStr.append("...");
|
|
|
|
|
+ }
|
|
|
|
|
+ vo.setOrderSkus(orderSkus);
|
|
|
|
|
+ vo.setConsignment(consignmentStr.toString());
|
|
|
|
|
+ }
|
|
|
|
|
+ return vo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private FsStoreOrderDf addDfOrderLive(LiveOrder liveOrder, Long dfAccountId) {
|
|
|
|
|
+ FsStoreOrderDf df = new FsStoreOrderDf();
|
|
|
|
|
+ df.setOrderId(liveOrder.getOrderId());
|
|
|
|
|
+ df.setOrderCode(liveOrder.getOrderCode());
|
|
|
|
|
+ FsDfAccount dfAccount = fsDfAccountMapper.selectFsDfAccountById(dfAccountId);
|
|
|
|
|
+ df.setAppKey(dfAccount.getDfAppKey());
|
|
|
|
|
+ df.setAppSecret(dfAccount.getDfAppsecret());
|
|
|
|
|
+ df.setLoginAccount(dfAccount.getLoginAccount());
|
|
|
|
|
+ df.setMonthlyCard(dfAccount.getMonthlyCard());
|
|
|
|
|
+ df.setExpressProductCode(dfAccount.getExpressProductCode());
|
|
|
|
|
+ df.setTotalPrice(liveOrder.getPayMoney());
|
|
|
|
|
+ df.setPlatformPrice(liveOrder.getPayPrice());
|
|
|
|
|
+ df.setStatus(1);
|
|
|
|
|
+ FsStoreOrderDf temp = fsStoreOrderDfMapper.selectFsStoreOrderDfByOrderId(df.getOrderId());
|
|
|
|
|
+ if (temp != null) {
|
|
|
|
|
+ df.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
|
+ fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ df.setCreateTime(DateUtils.getNowDate());
|
|
|
|
|
+ fsStoreOrderDfMapper.insertFsStoreOrderDf(df);
|
|
|
|
|
+ }
|
|
|
|
|
+ return df;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void getOrderLiveResult(Map<String, Object> map, Long dfAccountId) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ String status = map.get("exInterfaceType").toString();
|
|
|
|
|
+ log.info("开始查询订单结果,参数为: {}", JSON.toJSONString(map));
|
|
|
|
|
+ String response = client.execute(RequestUrlEnum.ORDER_RESULT, map, dfAccountId);
|
|
|
|
|
+ DFApiResponse dfApiResponse = JSON.parseObject(response, DFApiResponse.class);
|
|
|
|
|
+ if (dfApiResponse != null && "ok".equals(dfApiResponse.getCode())) {
|
|
|
|
|
+ log.info("查询订单结果,结果: {}", JSON.toJSONString(dfApiResponse));
|
|
|
|
|
+ Object result = dfApiResponse.getResult();
|
|
|
|
|
+ if (result != null) {
|
|
|
|
|
+ String jsonString = JSON.toJSONString(result);
|
|
|
|
|
+ if ("1".equals(status)) {
|
|
|
|
|
+ BspOrderResponseWrapper bspOrderResponse = JSONUtil.toBean(jsonString, BspOrderResponseWrapper.class);
|
|
|
|
|
+ if (bspOrderResponse != null) {
|
|
|
|
|
+ String failMsg = bspOrderResponse.getFailMsg();
|
|
|
|
|
+ if (StringUtils.isNotBlank(failMsg)) {
|
|
|
|
|
+ if (failMsg.equals("暂未结果, 请稍后再查")) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ String orderNumber = bspOrderResponse.getOrderNumber();
|
|
|
|
|
+ try {
|
|
|
|
|
+ rollBackOrderLive(orderNumber, failMsg);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.info("{}订单获取运单失败,订单状态回滚失败,失败原因:{},失败信息为:{}", orderNumber,e.getMessage(),failMsg);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ setExpressLive(bspOrderResponse);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if ("2".equals(status)) {
|
|
|
|
|
+ DFCancelOrderResultResponse cancelResponse = JSONUtil.toBean(jsonString, DFCancelOrderResultResponse.class);
|
|
|
|
|
+ if (cancelResponse != null) {
|
|
|
|
|
+ if (cancelResponse.getIsCancelSuss() == 1) {
|
|
|
|
|
+ log.info("查询订单取消成功,返回结果{}", JSON.toJSONString(cancelResponse));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("查询订单取消失败,返回结果{}", JSON.toJSONString(cancelResponse));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info(String.format("查询订单失败,原因: %s", dfApiResponse.getMsg()));
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void rollBackOrderLive(String orderNumber, String failMsg) {
|
|
|
|
|
+ LiveOrder liveOrder = liveOrderMapper.selectLiveOrderByOrderCode(orderNumber);
|
|
|
|
|
+ LiveOrder tempOrder = new LiveOrder();
|
|
|
|
|
+ tempOrder.setOrderId(liveOrder.getOrderId());
|
|
|
|
|
+ tempOrder.setExtendOrderId("");
|
|
|
|
|
+ liveOrderMapper.updateLiveOrder(tempOrder);
|
|
|
|
|
+ FsStoreOrderDf df = new FsStoreOrderDf();
|
|
|
|
|
+ df.setOrderId(liveOrder.getOrderId());
|
|
|
|
|
+ df.setStatus(0);
|
|
|
|
|
+ df.setFailMsg(failMsg);
|
|
|
|
|
+ df.setUpdateTime(new Date());
|
|
|
|
|
+ fsStoreOrderDfMapper.updateFsStoreOrderDf(df);
|
|
|
|
|
+ log.info("{}订单获取运单失败,失败信息为:{}", orderNumber,failMsg);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void setExpressLive(BspOrderResponseWrapper bspResponse) {
|
|
|
|
|
+ String orderNumber = bspResponse.getOrderNumber();
|
|
|
|
|
+ String mailNumber = bspResponse.getMailNumber();
|
|
|
|
|
+ BspOrderResponse bspOrderResponse = bspResponse.getBspResponse();
|
|
|
|
|
+ if (bspOrderResponse != null) {
|
|
|
|
|
+ AtomicBoolean flag = new AtomicBoolean(false);
|
|
|
|
|
+ List<OrderResponse> list = bspOrderResponse.getBody();
|
|
|
|
|
+ if (list != null && !list.isEmpty()) {
|
|
|
|
|
+ for (OrderResponse orderResponse : list) {
|
|
|
|
|
+ List<RlsInfo> rlsInfo = orderResponse.getRlsInfo();
|
|
|
|
|
+ if (rlsInfo != null && !rlsInfo.isEmpty()) {
|
|
|
|
|
+ for (RlsInfo info : rlsInfo) {
|
|
|
|
|
+ List<RlsDetail> rlsDetails = info.getRlsDetail();
|
|
|
|
|
+ if (rlsDetails != null && !rlsDetails.isEmpty()) {
|
|
|
|
|
+ for (RlsDetail rlsDetail : rlsDetails) {
|
|
|
|
|
+ String proCode = rlsDetail.getProCode();
|
|
|
|
|
+ if (StringUtils.isNotBlank(proCode)) {
|
|
|
|
|
+ LiveOrder order = liveOrderMapper.selectLiveOrderByOrderCode(orderNumber);
|
|
|
|
|
+ if (order != null && order.getStatus() == 1) {
|
|
|
|
|
+ FsExpressScrm express = expressScrmService.selectFsExpressByOmsCode(order.getDeliveryCode());
|
|
|
|
|
+ if (express != null) {
|
|
|
|
|
+ order.setDeliveryName(proCode);
|
|
|
|
|
+ order.setDeliverySn(express.getOmsCode());
|
|
|
|
|
+ }
|
|
|
|
|
+ order.setStatus(2);
|
|
|
|
|
+ order.setDeliverySn(mailNumber);
|
|
|
|
|
+ order.setDeliverySendTime(new Date());
|
|
|
|
|
+ liveOrderMapper.updateLiveOrder(order);
|
|
|
|
|
+ redisCache.deleteObject(DELIVERY+":"+order.getExtendOrderId());
|
|
|
|
|
+ flag.set(true);
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (flag.get()) {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (flag.get()) {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|