|
@@ -1,5 +1,6 @@
|
|
|
package com.yonge.cooleshow.admin.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.ym.mec.common.dto.SchoolDto;
|
|
@@ -13,16 +14,10 @@ import com.yonge.cooleshow.admin.dao.OmsOrderOperateHistoryDao;
|
|
|
import com.yonge.cooleshow.admin.dto.*;
|
|
|
import com.yonge.cooleshow.admin.dto.search.OrderStatisticalSearch;
|
|
|
import com.yonge.cooleshow.admin.dto.search.UserStatisticalSearch;
|
|
|
-import com.yonge.cooleshow.admin.service.OmsOrderReturnApplyService;
|
|
|
-import com.yonge.cooleshow.admin.service.PmsProductService;
|
|
|
-import com.yonge.cooleshow.admin.service.PmsSkuStockService;
|
|
|
-import com.yonge.cooleshow.mbg.mapper.OmsOrderItemMapper;
|
|
|
-import com.yonge.cooleshow.mbg.mapper.OmsOrderMapper;
|
|
|
-import com.yonge.cooleshow.mbg.mapper.OmsOrderOperateHistoryMapper;
|
|
|
-import com.yonge.cooleshow.mbg.mapper.PmsProductSkuStockRecordMapper;
|
|
|
-import com.yonge.cooleshow.mbg.model.*;
|
|
|
-import com.yonge.cooleshow.admin.service.OmsOrderService;
|
|
|
import com.yonge.cooleshow.admin.enums.OrderStatisticalEnum;
|
|
|
+import com.yonge.cooleshow.admin.service.*;
|
|
|
+import com.yonge.cooleshow.mbg.mapper.*;
|
|
|
+import com.yonge.cooleshow.mbg.model.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -73,6 +68,21 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
@Autowired
|
|
|
private PmsSkuStockService pmsSkuStockService;
|
|
|
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OmsOrderSettingMapper orderSettingMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UmsMemberService umsMemberService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PmsSkuStockMapper skuStockMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PmsProductMapper pmsProductMapper;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public List<OrderVo> list(OmsOrderQueryParam queryParam, Integer pageSize, Integer pageNum) {
|
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
@@ -125,9 +135,34 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
|
|
|
// skuid 集合
|
|
|
List<Long> skuIds = new ArrayList<>(skuIdMap.keySet());
|
|
|
+ updateSkuStock( skuIdMap, orderIds);
|
|
|
+
|
|
|
+
|
|
|
+ //添加操作记录
|
|
|
+ List<OmsOrderOperateHistory> operateHistoryList = deliveryParamList.stream()
|
|
|
+ .map(omsOrderDeliveryParam -> {
|
|
|
+ OmsOrderOperateHistory history = new OmsOrderOperateHistory();
|
|
|
+ history.setOrderId(omsOrderDeliveryParam.getOrderId());
|
|
|
+ history.setCreateTime(new Date());
|
|
|
+ history.setOperateMan("后台管理员");
|
|
|
+ history.setOrderStatus(2);
|
|
|
+ history.setNote("完成发货");
|
|
|
+ return history;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ orderOperateHistoryDao.insertList(operateHistoryList);
|
|
|
+
|
|
|
+ return count;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 库存更新
|
|
|
+ */
|
|
|
+// @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void updateSkuStock(Map<Long, Integer> skuIdMap, List<Long> orderIds) {
|
|
|
// 查询库存
|
|
|
PmsProductSkuStockRecordExample stockRecordExample = new PmsProductSkuStockRecordExample();
|
|
|
- stockRecordExample.createCriteria().andProductSkuIdIn(skuIds);
|
|
|
+ stockRecordExample.createCriteria().andProductSkuIdIn(new ArrayList<>(skuIdMap.keySet()));
|
|
|
List<PmsProductSkuStockRecord> productSkuStockRecords = pmsProductSkuStockRecordMapper.selectByExample(stockRecordExample);
|
|
|
if (CollectionUtils.isEmpty(productSkuStockRecords)) {
|
|
|
throw new BizException("库存不足");
|
|
@@ -201,20 +236,6 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
pmsProductSkuStockRecordMapper.updateByPrimaryKeySelective(pmsProductSkuStockRecord);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- //添加操作记录
|
|
|
- List<OmsOrderOperateHistory> operateHistoryList = deliveryParamList.stream()
|
|
|
- .map(omsOrderDeliveryParam -> {
|
|
|
- OmsOrderOperateHistory history = new OmsOrderOperateHistory();
|
|
|
- history.setOrderId(omsOrderDeliveryParam.getOrderId());
|
|
|
- history.setCreateTime(new Date());
|
|
|
- history.setOperateMan("后台管理员");
|
|
|
- history.setOrderStatus(2);
|
|
|
- history.setNote("完成发货");
|
|
|
- return history;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- orderOperateHistoryDao.insertList(operateHistoryList);
|
|
|
-
|
|
|
// 调用三方发货通知接口
|
|
|
OmsOrderExample orderExample = new OmsOrderExample();
|
|
|
orderExample.createCriteria().andIdIn(orderIds);
|
|
@@ -227,9 +248,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
}
|
|
|
|
|
|
// 调用三方库存更新接口
|
|
|
- syncSkuStock(skuIds);
|
|
|
-
|
|
|
- return count;
|
|
|
+ syncSkuStock(new ArrayList<>(skuIdMap.keySet()));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -563,4 +582,136 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
}
|
|
|
return statisticalInfo;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void mecProductOrderCreate(OrderCreate order) {
|
|
|
+
|
|
|
+
|
|
|
+ // 查询订单是否已存在
|
|
|
+ OmsOrder detail = orderMapper.getByOrderSn(order.getOrderNo());
|
|
|
+ if (detail != null) {
|
|
|
+ throw new BizException("订单已存在");
|
|
|
+ }
|
|
|
+ UmsMember umsMember = null;
|
|
|
+ // 学校订单和其他订单没有个人信息
|
|
|
+ if (order.getPlatformType().equals("STUDENT")) {
|
|
|
+ umsMember = umsMemberService.getById(order.getMemberId());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 创建订单
|
|
|
+
|
|
|
+ //设置自动收货天数
|
|
|
+ List<OmsOrderSetting> orderSettings = orderSettingMapper.selectByExample(new OmsOrderSettingExample());
|
|
|
+
|
|
|
+
|
|
|
+ detail = new OmsOrder();
|
|
|
+ detail.setOrchestraId(order.getOrchestraId());
|
|
|
+ detail.setOrderFormType(order.getOrderFormType());
|
|
|
+ detail.setMemberId(order.getMemberId());
|
|
|
+ detail.setPlatformType(order.getPlatformType());
|
|
|
+ detail.setOrderSn(order.getOrderNo());
|
|
|
+ detail.setCreateTime(new Date());
|
|
|
+ if (umsMember !=null) {
|
|
|
+ detail.setMemberUsername(umsMember.getUsername());
|
|
|
+ }
|
|
|
+ detail.setTotalAmount(order.getTotalAmount());
|
|
|
+ detail.setPayAmount(order.getTotalAmount());
|
|
|
+ detail.setFreightAmount(BigDecimal.ZERO);
|
|
|
+ detail.setPromotionAmount(BigDecimal.ZERO);
|
|
|
+ detail.setIntegrationAmount(BigDecimal.ZERO);
|
|
|
+ detail.setCouponAmount(BigDecimal.ZERO);
|
|
|
+ detail.setDiscountAmount(BigDecimal.ZERO);
|
|
|
+ detail.setPayType(order.getPayType());
|
|
|
+ detail.setConfirmStatus(0);
|
|
|
+ detail.setSourceType(order.getSourceType());
|
|
|
+ detail.setStatus(order.getStatus());
|
|
|
+ detail.setOrderType(0);
|
|
|
+ if (CollUtil.isNotEmpty(orderSettings)) {
|
|
|
+ detail.setAutoConfirmDay(orderSettings.get(0).getConfirmOvertime());
|
|
|
+ }
|
|
|
+ detail.setReceiverName(order.getReceiverName());
|
|
|
+ detail.setReceiverPhone(order.getReceiverPhone());
|
|
|
+ detail.setReceiverPostCode(order.getReceiverPostCode());
|
|
|
+ detail.setReceiverProvince(order.getReceiverProvince());
|
|
|
+ detail.setReceiverCity(order.getReceiverCity());
|
|
|
+ detail.setReceiverRegion(order.getReceiverRegion());
|
|
|
+ detail.setReceiverDetailAddress(order.getReceiverDetailAddress());
|
|
|
+ detail.setDeleteStatus(0);
|
|
|
+ detail.setPaymentTime(new Date());
|
|
|
+ detail.setAfterSale(1);
|
|
|
+ detail.setModifyTime(new Date());
|
|
|
+ orderMapper.insert(detail);
|
|
|
+
|
|
|
+ List<OmsOrderItem> orderItemList = new ArrayList<>();
|
|
|
+ // 创建订单详情
|
|
|
+ for (OrderCreate.OrderItem orderItem : order.getOrderItemList()) {
|
|
|
+
|
|
|
+ // 获取商品信息
|
|
|
+ PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(orderItem.getProductSkuId());
|
|
|
+ if (pmsSkuStock == null) {
|
|
|
+ throw new BizException("商品规格不存在");
|
|
|
+ }
|
|
|
+ PmsProduct pmsProduct = pmsProductMapper.selectByPrimaryKey(pmsSkuStock.getProductId());
|
|
|
+
|
|
|
+ if (pmsProduct == null) {
|
|
|
+ throw new BizException("商品不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ OmsOrderItem omsOrderItem = new OmsOrderItem();
|
|
|
+ omsOrderItem.setOrderId(detail.getId());
|
|
|
+ omsOrderItem.setOrderSn(detail.getOrderSn());
|
|
|
+ omsOrderItem.setProductId(pmsProduct.getId());
|
|
|
+ omsOrderItem.setProductPic(pmsProduct.getPic());
|
|
|
+ omsOrderItem.setProductName(pmsProduct.getName());
|
|
|
+ omsOrderItem.setProductBrand(pmsProduct.getBrandName());
|
|
|
+ omsOrderItem.setProductPrice(pmsProduct.getPrice());
|
|
|
+ omsOrderItem.setProductQuantity(orderItem.getProductQuantity());
|
|
|
+ omsOrderItem.setProductSkuId(pmsSkuStock.getId());
|
|
|
+ omsOrderItem.setProductSkuCode(pmsSkuStock.getSkuCode());
|
|
|
+ omsOrderItem.setProductCategoryId(pmsProduct.getProductCategoryId());
|
|
|
+ omsOrderItem.setPromotionAmount(BigDecimal.ZERO);
|
|
|
+ omsOrderItem.setCouponAmount(BigDecimal.ZERO);
|
|
|
+ omsOrderItem.setIntegrationAmount(BigDecimal.ZERO);
|
|
|
+ omsOrderItem.setRealAmount(orderItem.getRealAmount());
|
|
|
+ omsOrderItem.setProductAttr(pmsSkuStock.getSpData());
|
|
|
+ omsOrderItem.setReturnStatus(-1);
|
|
|
+
|
|
|
+ orderItemList.add(omsOrderItem);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 保存数据
|
|
|
+ if (!CollectionUtils.isEmpty(orderItemList)) {
|
|
|
+ omsOrderItemMapper.insertList(orderItemList);
|
|
|
+ }
|
|
|
+ // skuId 数量 map
|
|
|
+ Map<Long, Integer> skuIdMap = orderItemList.stream().collect(Collectors.groupingBy(OmsOrderItem::getProductSkuId,Collectors.summingInt(OmsOrderItem::getProductQuantity)));
|
|
|
+
|
|
|
+ // 如果订单状态是已发货,扣减库存
|
|
|
+ updateSkuStock( skuIdMap, Lists.newArrayList(detail.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public boolean productUpdateOrderStatus(String orderNo, Integer status) {
|
|
|
+
|
|
|
+ OmsOrder detail = orderMapper.getByOrderSn(orderNo);
|
|
|
+ if (detail == null) {
|
|
|
+ throw new BizException("订单不存在");
|
|
|
+ }
|
|
|
+ if (detail.getStatus() != 1 ) {
|
|
|
+ throw new BizException("当前订单状态不允许修改");
|
|
|
+ }
|
|
|
+ OmsOrder omsOrder = new OmsOrder();
|
|
|
+ omsOrder.setId(detail.getId());
|
|
|
+ omsOrder.setStatus(status);
|
|
|
+ omsOrder.setModifyTime(new Date());
|
|
|
+ orderMapper.updateByPrimaryKeySelective(omsOrder);
|
|
|
+
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|