|
@@ -1,6 +1,10 @@
|
|
package com.fs.erp.service.impl;
|
|
package com.fs.erp.service.impl;
|
|
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
import com.fs.erp.constant.AfterSalesOrderStatusEnum;
|
|
import com.fs.erp.constant.AfterSalesOrderStatusEnum;
|
|
|
|
+import com.fs.erp.constant.ErpQueryOrderStatusEnum;
|
|
import com.fs.erp.constant.OrderStatusEnum;
|
|
import com.fs.erp.constant.OrderStatusEnum;
|
|
import com.fs.erp.domain.*;
|
|
import com.fs.erp.domain.*;
|
|
import com.fs.erp.dto.*;
|
|
import com.fs.erp.dto.*;
|
|
@@ -9,8 +13,16 @@ import com.fs.erp.mapper.FsJstAftersalePushMapper;
|
|
import com.fs.erp.service.IErpOrderService;
|
|
import com.fs.erp.service.IErpOrderService;
|
|
import com.fs.erp.utils.SignUtil;
|
|
import com.fs.erp.utils.SignUtil;
|
|
import com.fs.express.enums.TaskStatusEnum;
|
|
import com.fs.express.enums.TaskStatusEnum;
|
|
|
|
+import com.fs.store.domain.FsStoreAfterSales;
|
|
|
|
+import com.fs.store.domain.FsStoreDelivers;
|
|
import com.fs.store.domain.FsStoreOrder;
|
|
import com.fs.store.domain.FsStoreOrder;
|
|
|
|
+import com.fs.store.domain.FsStoreProduct;
|
|
|
|
+import com.fs.store.mapper.FsStoreAfterSalesMapper;
|
|
|
|
+import com.fs.store.mapper.FsStoreDeliversMapper;
|
|
|
|
+import com.fs.store.service.IFsStoreOrderItemService;
|
|
import com.fs.store.service.IFsStoreOrderService;
|
|
import com.fs.store.service.IFsStoreOrderService;
|
|
|
|
+import com.fs.store.service.IFsStoreProductService;
|
|
|
|
+import com.fs.store.vo.FsStoreOrderItemVO;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.http.util.Asserts;
|
|
import org.apache.http.util.Asserts;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -21,6 +33,7 @@ import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.ObjectUtils;
|
|
import org.springframework.util.ObjectUtils;
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -37,12 +50,22 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
|
|
@Autowired
|
|
@Autowired
|
|
private FsJstAftersalePushMapper fsJstAftersalePushMapper;
|
|
private FsJstAftersalePushMapper fsJstAftersalePushMapper;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private IFsStoreOrderItemService fsStoreOrderItemService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IFsStoreProductService fsStoreProductService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public ErpOrderResponse addOrder(ErpOrder order) {
|
|
public ErpOrderResponse addOrder(ErpOrder order) {
|
|
|
|
+ FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
|
|
|
|
+
|
|
ErpOrderPayment erpOrderPayment = order.getPayments().get(0);
|
|
ErpOrderPayment erpOrderPayment = order.getPayments().get(0);
|
|
|
|
|
|
ShopOrderDTO shopOrderDTO = new ShopOrderDTO();
|
|
ShopOrderDTO shopOrderDTO = new ShopOrderDTO();
|
|
|
|
|
|
|
|
+ BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
|
|
|
|
+
|
|
shopOrderDTO.setShopId(Long.valueOf(order.getShop_code()));
|
|
shopOrderDTO.setShopId(Long.valueOf(order.getShop_code()));
|
|
shopOrderDTO.setSoId(order.getPlatform_code());
|
|
shopOrderDTO.setSoId(order.getPlatform_code());
|
|
shopOrderDTO.setOrderDate(order.getDeal_datetime());
|
|
shopOrderDTO.setOrderDate(order.getDeal_datetime());
|
|
@@ -74,19 +97,26 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
|
|
shopOrderDTO.setBuyerMessage(order.getBuyer_memo());
|
|
shopOrderDTO.setBuyerMessage(order.getBuyer_memo());
|
|
|
|
|
|
// 订单商品项列表
|
|
// 订单商品项列表
|
|
- List<ErpOrderItem> details = order.getDetails();
|
|
|
|
List<OrderItemDTO> itemDTOList = new ArrayList<>();
|
|
List<OrderItemDTO> itemDTOList = new ArrayList<>();
|
|
- for (ErpOrderItem detail : details) {
|
|
|
|
|
|
+
|
|
|
|
+ List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
|
|
|
|
+ for (FsStoreOrderItemVO item : fsStoreOrderItemVOS) {
|
|
OrderItemDTO orderItemDTO = new OrderItemDTO();
|
|
OrderItemDTO orderItemDTO = new OrderItemDTO();
|
|
- orderItemDTO.setSkuId(detail.getItem_code());
|
|
|
|
- orderItemDTO.setShopSkuId(detail.getItem_code());
|
|
|
|
- orderItemDTO.setName(detail.getItem_code());
|
|
|
|
- orderItemDTO.setAmount(Double.valueOf(detail.getPrice()));
|
|
|
|
- if(detail.getOrigin_price() != null) {
|
|
|
|
- orderItemDTO.setBasePrice(Double.valueOf(detail.getOrigin_price()));
|
|
|
|
- }
|
|
|
|
- orderItemDTO.setQty(detail.getQty());
|
|
|
|
- orderItemDTO.setOuterOiId(order.getPlatform_code());
|
|
|
|
|
|
+ JSONObject jsonObject = JSON.parseObject(item.getJsonInfo());
|
|
|
|
+
|
|
|
|
+ String barCode = jsonObject.getString("barCode");
|
|
|
|
+ String productName = jsonObject.getString("productName");
|
|
|
|
+
|
|
|
|
+ orderItemDTO.setSkuId(barCode);
|
|
|
|
+ orderItemDTO.setShopSkuId(barCode);
|
|
|
|
+ orderItemDTO.setName(productName);
|
|
|
|
+
|
|
|
|
+ FsStoreProduct fsStoreProduct = fsStoreProductService.selectFsStoreProductById(item.getProductId());
|
|
|
|
+
|
|
|
|
+ orderItemDTO.setAmount(fsStoreProduct.getPrice());
|
|
|
|
+
|
|
|
|
+ orderItemDTO.setQty(item.getNum().intValue());
|
|
|
|
+ orderItemDTO.setOuterOiId(String.format("%s%s",item.getOrderCode(),item.getItemId()));
|
|
itemDTOList.add(orderItemDTO);
|
|
itemDTOList.add(orderItemDTO);
|
|
}
|
|
}
|
|
shopOrderDTO.setItems(itemDTOList);
|
|
shopOrderDTO.setItems(itemDTOList);
|
|
@@ -101,6 +131,13 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
|
|
paymentDTO.setSellerAccount("平台销售");
|
|
paymentDTO.setSellerAccount("平台销售");
|
|
shopOrderDTO.setPay(paymentDTO);
|
|
shopOrderDTO.setPay(paymentDTO);
|
|
|
|
|
|
|
|
+ // 如果是货到付款
|
|
|
|
+ if("2".equals(fsStoreOrder.getPayType()) || "3".equals(fsStoreOrder.getPayType())){
|
|
|
|
+ shopOrderDTO.setIsCod(true);
|
|
|
|
+ // 货到付款金额 = 物流代收金额-优惠金额
|
|
|
|
+ shopOrderDTO.setBuyerPaidAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
|
|
|
|
+ }
|
|
|
|
+
|
|
ErpOrderResponseDTO upload = jstErpHttpService.upload(shopOrderDTO);
|
|
ErpOrderResponseDTO upload = jstErpHttpService.upload(shopOrderDTO);
|
|
|
|
|
|
if(CollectionUtils.isEmpty(upload.getDatas())) {
|
|
if(CollectionUtils.isEmpty(upload.getDatas())) {
|
|
@@ -214,15 +251,15 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
|
|
// 构建完整地址
|
|
// 构建完整地址
|
|
erpOrder.setReceiver_address(fsStoreOrder.getUserAddress());
|
|
erpOrder.setReceiver_address(fsStoreOrder.getUserAddress());
|
|
|
|
|
|
- // 处理发货相关信息
|
|
|
|
- if (order.getShipment() != null && StringUtils.hasText(order.getShipment())) {
|
|
|
|
|
|
+ // 如果是已发货
|
|
|
|
+ if(ObjectUtil.equal(order.getStatus(), ErpQueryOrderStatusEnum.SENT.getCode())){
|
|
List<ErpDeliverys> deliverysList = new ArrayList<>();
|
|
List<ErpDeliverys> deliverysList = new ArrayList<>();
|
|
|
|
|
|
ErpDeliverys delivery = new ErpDeliverys();
|
|
ErpDeliverys delivery = new ErpDeliverys();
|
|
- delivery.setMail_no(order.getShipment());
|
|
|
|
|
|
+ delivery.setMail_no(order.getLId());
|
|
delivery.setExpress_code(order.getLcId());
|
|
delivery.setExpress_code(order.getLcId());
|
|
delivery.setExpress_name(order.getLogisticsCompany());
|
|
delivery.setExpress_name(order.getLogisticsCompany());
|
|
- delivery.setDelivery(true); // 假设有物流单号就是已发货状态
|
|
|
|
|
|
+ delivery.setDelivery(true);
|
|
delivery.setCode(order.getSoId());
|
|
delivery.setCode(order.getSoId());
|
|
|
|
|
|
deliverysList.add(delivery);
|
|
deliverysList.add(delivery);
|
|
@@ -237,23 +274,23 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
|
|
return erpOrder;
|
|
return erpOrder;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private FsStoreDeliversMapper fsStoreDeliversMapper;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private FsStoreAfterSalesMapper fsStoreAfterSalesMapper;
|
|
@Override
|
|
@Override
|
|
public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
|
|
public BaseResponse refundUpdate(ErpRefundUpdateRequest param) {
|
|
|
|
|
|
FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(param.getTid());
|
|
FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(param.getTid());
|
|
|
|
+ FsStoreDelivers byOrderCode = fsStoreDeliversMapper.findByOrderCode(fsStoreOrder.getOrderCode());
|
|
|
|
+
|
|
|
|
|
|
- Set<Integer> statusSet = new HashSet<>();
|
|
|
|
- statusSet.add(2);
|
|
|
|
- statusSet.add(3);
|
|
|
|
|
|
+ FsStoreAfterSales afterSales = fsStoreAfterSalesMapper.selectFsStoreAfterSalesByOrderCode(fsStoreOrder.getOrderCode());
|
|
|
|
|
|
// 发货后退款
|
|
// 发货后退款
|
|
- if(statusSet.contains(fsStoreOrder.getStatus())){
|
|
|
|
- FsJstAftersalePush fsJstAftersalePush = new FsJstAftersalePush();
|
|
|
|
- fsJstAftersalePush.setOrderId(fsStoreOrder.getOrderCode());
|
|
|
|
- fsJstAftersalePush.setType(String.valueOf(AfterSalesOrderStatusEnum.WAIT_SELLER_AGREE.getIndex()));
|
|
|
|
- fsJstAftersalePush.setTaskStatus(TaskStatusEnum.PENDING.getCode());
|
|
|
|
- fsJstAftersalePush.setRetryCount(0);
|
|
|
|
- fsJstAftersalePushMapper.insert(fsJstAftersalePush);
|
|
|
|
|
|
+ if(ObjectUtil.isNotNull(byOrderCode)){
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
// 如果是发货前退款,直接走取消订单流程
|
|
// 如果是发货前退款,直接走取消订单流程
|
|
// 如果是发货后退款,走售后流程
|
|
// 如果是发货后退款,走售后流程
|