Browse Source

现在PC端下单流程

v1.0
Yen 2 years ago
parent
commit
539903924a
  1. 8
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java
  2. 16
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  3. 17
      src/main/java/com/qs/serve/modules/oms/entity/bo/CreateOrderParam.java
  4. 14
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java
  5. 37
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java
  6. 21
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java
  7. 74
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  8. 2
      src/main/resources/mapper/bms/BmsSupplierMapper.xml

8
src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java

@ -10,6 +10,7 @@ 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.GoodsSkuSpecValueVo;
import jdk.nashorn.internal.ir.annotations.Ignore;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@ -131,6 +132,13 @@ public class GoodsSku implements Serializable {
@TableField(exist = false)
private List<GoodsSkuSpecValueVo> specValueList;
/**
* 后台参数
**/
@Ignore
@TableField(exist = false)
private Integer qty;
}

16
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -13,6 +13,7 @@ import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.OmsOrderItem;
import com.qs.serve.modules.oms.entity.bo.OmsCancelOrder;
import com.qs.serve.modules.oms.entity.bo.OmsOrderBo;
import com.qs.serve.modules.oms.entity.bo.OmsOrderPcBo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderService;
@ -48,15 +49,26 @@ public class OmsOrderApi {
}
/**
* 创建订单
* 创建订单(PC)
* @param omsOrderBo
* @return
*/
@PostMapping("/createOrder")
public R<OmsOrder> createOrder(@RequestBody @Valid OmsOrderBo omsOrderBo){
public R<OmsOrder> createOrderPC(@RequestBody @Valid OmsOrderBo omsOrderBo){
return R.ok(omsOrderService.createOrder(omsOrderBo));
}
/**
* 创建订单(PC)
* @param omsOrderBo
* @return
*/
@PostMapping("/createOrderOnPC")
public R<OmsOrder> createOrder(@RequestBody @Valid OmsOrderPcBo omsOrderBo){
return R.ok(omsOrderService.createOrderPc(omsOrderBo));
}
/**
* 取消订单
* @param omsOrderBo

17
src/main/java/com/qs/serve/modules/oms/entity/bo/CreateOrderParam.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.oms.entity.bo;
import lombok.Data;
@Data
public class CreateOrderParam{
/** 发票类型:0->普通发票;1->增值税发票; */
private Integer billType;
/** 是否加急 */
private Integer urgentFlag;
/** 备注 */
private String remark;
}

14
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java

@ -30,18 +30,4 @@ public class OmsOrderBo {
/** 创建订单参数(确认订单时可不传) */
private CreateOrderParam createOrderParam;
@Data
public static class CreateOrderParam{
/** 发票类型:0->普通发票;1->增值税发票; */
private Integer billType;
/** 是否加急 */
private Integer urgentFlag;
/** 备注 */
private String remark;
}
}

37
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java

@ -0,0 +1,37 @@
package com.qs.serve.modules.oms.entity.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author YenHex
* @since 2022/10/14
*/
@Data
public class OmsOrderPcBo {
/** 订单类型:0->普通订单; */
@NotNull
private Integer orderType;
/** SKU下单列表 */
private List<SkuParam> skuParamList;
/** todo 促销活动id列表 */
private List<Long> promotionIds;
/** 创建订单参数(确认订单时可不传) */
private CreateOrderParam createOrderParam;
@Data
public static class SkuParam{
/** skuId */
private Long skuId;
/** 数量 */
private Integer qty;
}
}

21
src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.oms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.bo.OmsOrderBo;
import com.qs.serve.modules.oms.entity.bo.OmsOrderPcBo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
/**
@ -13,18 +14,34 @@ import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
public interface OmsOrderService extends IService<OmsOrder> {
/**
* 确认订单
* 确认订单 H5
* @param confirmOrder
* @return
*/
OmsConfirmOrderResult confirmOrder(OmsOrderBo confirmOrder);
/**
* 创建订单
* 确认订单 PC
* @param confirmOrder
* @return
*/
OmsConfirmOrderResult confirmOrderPc(OmsOrderPcBo confirmOrder);
/**
* 创建订单 H5
* @param omsOrderBo
* @return
*/
OmsOrder createOrder(OmsOrderBo omsOrderBo);
/**
* 创建订单 PC
* @param omsOrderBo
* @return
*/
OmsOrder createOrderPc(OmsOrderPcBo omsOrderBo);
}

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

@ -16,8 +16,10 @@ 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.CreateOrderParam;
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.bo.OmsOrderPcBo;
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;
@ -27,6 +29,7 @@ import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.service.OmsOrderService;
@ -105,11 +108,80 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
return confirmOrderResult;
}
@Override
public OmsConfirmOrderResult confirmOrderPc(OmsOrderPcBo confirmOrder) {
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
String supplierCode = supplier.getSupplierCode();
//构建Sku
List<Long> skuIds = confirmOrder.getSkuParamList().stream()
.map(OmsOrderPcBo.SkuParam::getSkuId).collect(Collectors.toList());
List<GoodsSku> skuList = goodsSkuService.listByIds(skuIds);
if(StringUtils.hasText(supplierCode)){
goodsSkuService.initSkuCusPrice(supplierCode,skuList);
}
//关联库存到SKU
for (OmsOrderPcBo.SkuParam skuParam : confirmOrder.getSkuParamList()) {
for (GoodsSku sku : skuList) {
if(sku.getId().equals(skuParam.getSkuId())){
sku.setQty(skuParam.getQty());
break;
}
}
}
//构建临时购物车列表
List<OmsShoppingCart> shoppingCartList = new ArrayList<>();
for (GoodsSku goodsSku : skuList) {
GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId());
OmsShoppingCart shoppingCart = new OmsShoppingCart();
shoppingCart.setSpuId(goodsSku.getSpuId());
shoppingCart.setSkuId(goodsSku.getId());
shoppingCart.setSpuCode(goodsSpu.getSpuCode());
shoppingCart.setSkuCode(goodsSku.getSkuCode());
shoppingCart.setQuantity(goodsSku.getQty());
shoppingCart.setSpecInfo(goodsSku.getSpecInfos());
shoppingCart.setPicUrl(goodsSku.getPicUrl());
shoppingCartList.add(shoppingCart);
}
//计算合计
OmsCalcAmount calcAmount = new OmsCalcAmount();
BigDecimal totalAmount = BigDecimal.ZERO;
for (GoodsSku sku : skuList) {
BigDecimal salePrice = sku.getSalesPrice();
BigDecimal itemPrice = new BigDecimal(sku.getQty()).multiply(salePrice);
totalAmount.add(itemPrice);
}
calcAmount.setTotalAmount(totalAmount);
//todo 计算供应商折扣
//todo 计算是否有活动优惠
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId()));
OmsConfirmOrderResult confirmOrderResult = new OmsConfirmOrderResult();
confirmOrderResult.setSupplier(supplier);
confirmOrderResult.setDefaultAddress(supplierAddress);
confirmOrderResult.setAmountInfo(calcAmount);
confirmOrderResult.setShoppingCarts(shoppingCartList);
return confirmOrderResult;
}
@Override
@Transactional(rollbackFor = Exception.class)
public OmsOrder createOrder(OmsOrderBo omsOrderBo) {
OmsConfirmOrderResult confirmOrder = this.confirmOrder(omsOrderBo);
CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam();
return this.buildOmsOrder(confirmOrder, createOrderParam);
}
@Override
public OmsOrder createOrderPc(OmsOrderPcBo omsOrderBo) {
OmsConfirmOrderResult confirmOrder = this.confirmOrderPc(omsOrderBo);
CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam();
return this.buildOmsOrder(confirmOrder, createOrderParam);
}
@NotNull
private OmsOrder buildOmsOrder(OmsConfirmOrderResult confirmOrder, CreateOrderParam createOrderParam) {
SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId());
BmsSupplier supplier = confirmOrder.getSupplier();
BmsSupplierAddress address = confirmOrder.getDefaultAddress();
@ -127,7 +199,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setUserName(user.getName());
order.setUserCode(user.getCode());
order.setUserPhone(user.getMobile());
if(createOrderParam!=null){
if(createOrderParam !=null){
order.setBillType(createOrderParam.getBillType());
order.setUrgentFlag(createOrderParam.getUrgentFlag());
}

2
src/main/resources/mapper/bms/BmsSupplierMapper.xml

@ -187,7 +187,7 @@
<update id="updateBmsSuppliersOtherUserNullById">
UPDATE bms_supplier
SET other_user_id = NULL,other_user_codes = null, other_user_names = null
SET other_user_ids = NULL,other_user_codes = null, other_user_names = null
WHERE id IN
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}

Loading…
Cancel
Save