Browse Source

下单流程

mssql
Yen 3 years ago
parent
commit
578198e4b4
  1. 17
      src/main/java/com/qs/serve/common/util/StringUtils.java
  2. 11
      src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java
  3. 2
      src/main/java/com/qs/serve/modules/oms/service/OmsShoppingCartService.java
  4. 43
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  5. 8
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java

17
src/main/java/com/qs/serve/common/util/StringUtils.java

@ -2,6 +2,11 @@ package com.qs.serve.common.util;
import lombok.experimental.UtilityClass;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @author YenHex
* @since 2022/2/28
@ -9,6 +14,18 @@ import lombok.experimental.UtilityClass;
@UtilityClass
public class StringUtils extends org.springframework.util.StringUtils {
/** 订单号生成(NEW) **/
private static final AtomicInteger SEQ = new AtomicInteger(1000);
private static final DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern("yyMMddHHmmssSS");
private static ZoneId ZONE_ID = ZoneId.of("Asia/Shanghai");
public static String generateOrderNo(){
LocalDateTime dataTime = LocalDateTime.now(ZONE_ID);
if(SEQ.intValue()>9990){
SEQ.getAndSet(1000);
}
return dataTime.format(DF_FMT_PREFIX)+SEQ.getAndIncrement();
}
/** 非空 */
public static boolean isNotEmpty(String str){
return !isEmpty(str);

11
src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@ -113,10 +114,20 @@ public class OmsShoppingCart implements Serializable {
@TableField(exist = false)
private String errMessage;
/** 客户特殊价 */
@JsonIgnore
@TableField(exist = false)
private BigDecimal supplierSalesPrice;
/** 异常信息 */
@JsonIgnore
@TableField(exist = false)
private BigDecimal itemSaleAmount;
/** 异常信息 */
@JsonIgnore
@TableField(exist = false)
private GoodSkuVo goodSkuVo;
}

2
src/main/java/com/qs/serve/modules/oms/service/OmsShoppingCartService.java

@ -18,7 +18,7 @@ public interface OmsShoppingCartService extends IService<OmsShoppingCart> {
/**
* 检测购物车
* 检测购物车,并绑定sku到购物车
* @param supplier
* @param shoppingCarts
* @param throwEx 购物车不抛异常

43
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
@ -10,12 +11,14 @@ import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.entity.OmsOrderItem;
import com.qs.serve.modules.oms.entity.OmsShoppingCart;
import com.qs.serve.modules.oms.entity.bo.OmsOrderBo;
import com.qs.serve.modules.oms.entity.bo.OmsOrderBo.*;
import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount;
import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsShoppingCartService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
@ -28,6 +31,7 @@ import com.qs.serve.modules.oms.mapper.OmsOrderMapper;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -46,6 +50,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
private GoodsSpuService goodsSpuService;
private BmsSupplierAddressService bmsSupplierAddressService;
private SysUserService sysUserService;
private OmsOrderItemService omsOrderItemService;
@Override
@ -71,13 +76,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
OmsCalcAmount calcAmount = new OmsCalcAmount();
BigDecimal totalAmount = BigDecimal.ZERO;
for (OmsShoppingCart shoppingCart : shoppingCarts) {
BigDecimal salePrice = null;
for (GoodSkuVo goodSkuVo : cartsCheckResult.getGoodsSkus()) {
if(shoppingCart.getSkuId().equals(goodSkuVo.getId())){
salePrice = goodSkuVo.getSalesPrice();
break;
}
}
GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo();
//todo 客户特殊价
BigDecimal salePrice = goodSkuVo.getSalesPrice();
shoppingCart.setSupplierSalesPrice(salePrice);
BigDecimal itemPrice = new BigDecimal(shoppingCart.getQuantity()).multiply(salePrice);
shoppingCart.setItemSaleAmount(itemPrice);
totalAmount.add(itemPrice);
@ -103,9 +106,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId());
BmsSupplier supplier = confirmOrder.getSupplier();
BmsSupplierAddress address = confirmOrder.getDefaultAddress();
List<GoodSkuVo> goodSkuVos = confirmOrder.getCartsCheckResult().getGoodsSkus();
List<OmsShoppingCart> shoppingCarts = confirmOrder.getShoppingCarts();
OmsOrder order = new OmsOrder();
order.setOrderSn("");
order.setOrderSn(StringUtils.generateOrderNo());
order.setSupplierId(Long.parseLong(supplier.getId()));
order.setSupplierCode(supplier.getCode());
order.setSupplierName(supplier.getName());
@ -119,7 +122,27 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setUrgentFlag(createOrderParam.getUrgentFlag());
}
this.save(order);
List<OmsOrderItem> orderItems = new ArrayList<>();
for (OmsShoppingCart shoppingCart : shoppingCarts) {
GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo();
OmsOrderItem orderItem = new OmsOrderItem();
orderItem.setOrderId(order.getId());
orderItem.setOrderSn(order.getOrderSn());
orderItem.setSpuId(goodSkuVo.getSpuId());
orderItem.setSpuCode(goodSkuVo.getSpuCode());
orderItem.setSpuTitle(goodSkuVo.getName());
orderItem.setSkuId(goodSkuVo.getId());
orderItem.setSkuCode(goodSkuVo.getSkuCode());
orderItem.setSkuUnit(goodSkuVo.getUnitName());
orderItem.setSkuImg(goodSkuVo.getPicUrl());
orderItem.setSpecValues(goodSkuVo.getSpecInfos());
orderItem.setQuantity(shoppingCart.getQuantity());
orderItem.setMarketPrice(goodSkuVo.getMarketPrice());
orderItem.setSalesPrice(goodSkuVo.getSalesPrice());
orderItem.setCusPrice(shoppingCart.getSupplierSalesPrice());
orderItems.add(orderItem);
}
omsOrderItemService.saveBatch(orderItems);
return null;
}

8
src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java

@ -67,6 +67,13 @@ public class OmsShoppingCartServiceImpl extends ServiceImpl<OmsShoppingCartMappe
shoppingCart.setErrCode(1);
shoppingCart.setErrMessage("已下架");
}
//绑定sku到购物车
for (GoodSkuVo goodSkuVo : goodsSkus) {
if(shoppingCart.getSkuId().equals(goodSkuVo.getId())){
shoppingCart.setGoodSkuVo(goodSkuVo);
break;
}
}
}
goodsSkus = goodsSkus.stream().filter(vo->vo.getShelf().equals(1)&&vo.getEnable().equals(1)).collect(Collectors.toList());
//todo 检验库存
@ -87,6 +94,7 @@ public class OmsShoppingCartServiceImpl extends ServiceImpl<OmsShoppingCartMappe
}
}
}
ShoppingCartsCheckResult cartsCheckResult = new ShoppingCartsCheckResult();
cartsCheckResult.setGoodsSkus(goodsSkus);
return cartsCheckResult;

Loading…
Cancel
Save