From 539903924ac047c8ad7615cd90001c795cf49948 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 22 Sep 2023 14:33:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=B0=E5=9C=A8PC=E7=AB=AF=E4=B8=8B=E5=8D=95?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/goods/entity/GoodsSku.java | 8 ++ .../oms/controller/api/OmsOrderApi.java | 16 +++- .../oms/entity/bo/CreateOrderParam.java | 17 +++++ .../modules/oms/entity/bo/OmsOrderBo.java | 14 ---- .../modules/oms/entity/bo/OmsOrderPcBo.java | 37 ++++++++++ .../modules/oms/service/OmsOrderService.java | 21 +++++- .../oms/service/impl/OmsOrderServiceImpl.java | 74 ++++++++++++++++++- .../mapper/bms/BmsSupplierMapper.xml | 2 +- 8 files changed, 169 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/oms/entity/bo/CreateOrderParam.java create mode 100644 src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java index 4c6f3d25..2eade53e 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java +++ b/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 specValueList; + /** + * 后台参数 + **/ + @Ignore + @TableField(exist = false) + private Integer qty; + } diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 947d6838..43601478 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/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 createOrder(@RequestBody @Valid OmsOrderBo omsOrderBo){ + public R createOrderPC(@RequestBody @Valid OmsOrderBo omsOrderBo){ return R.ok(omsOrderService.createOrder(omsOrderBo)); } + /** + * 创建订单(PC) + * @param omsOrderBo + * @return + */ + @PostMapping("/createOrderOnPC") + public R createOrder(@RequestBody @Valid OmsOrderPcBo omsOrderBo){ + return R.ok(omsOrderService.createOrderPc(omsOrderBo)); + } + + /** * 取消订单 * @param omsOrderBo diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/CreateOrderParam.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/CreateOrderParam.java new file mode 100644 index 00000000..c6889bab --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java index 474f4423..8fa32cc6 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderBo.java +++ b/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; - - } - } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsOrderPcBo.java new file mode 100644 index 00000000..0ff3af28 --- /dev/null +++ b/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 skuParamList; + + /** todo 促销活动id列表 */ + private List promotionIds; + + /** 创建订单参数(确认订单时可不传) */ + private CreateOrderParam createOrderParam; + + @Data + public static class SkuParam{ + /** skuId */ + private Long skuId; + + /** 数量 */ + private Integer qty; + } + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index 66b4cdc7..739906b5 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/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 { /** - * 确认订单 + * 确认订单 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); + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index 1fcb6721..f009eec3 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/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 im return confirmOrderResult; } + @Override + public OmsConfirmOrderResult confirmOrderPc(OmsOrderPcBo confirmOrder) { + BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); + String supplierCode = supplier.getSupplierCode(); + //构建Sku + List skuIds = confirmOrder.getSkuParamList().stream() + .map(OmsOrderPcBo.SkuParam::getSkuId).collect(Collectors.toList()); + List 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 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 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()); } diff --git a/src/main/resources/mapper/bms/BmsSupplierMapper.xml b/src/main/resources/mapper/bms/BmsSupplierMapper.xml index 8037855b..70d4efa0 100644 --- a/src/main/resources/mapper/bms/BmsSupplierMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierMapper.xml @@ -187,7 +187,7 @@ 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 #{item}