From 91ec2fe7b1087b18f40bba6ffda07ad601d562ed Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 22 Dec 2022 10:48:15 +0800
Subject: [PATCH] 20221222
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 110 ++++++++-----------------------------------------------
1 files changed, 16 insertions(+), 94 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 5832db5..7574237 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -99,6 +99,9 @@
if(memberLevelCode < goodsStarCode){
throw new FebsException("会员等级不够");
}
+ if (MallGoods.ISSALE_STATUS_DISABLED.equals(goods.getIsSale())) {
+ throw new FebsException(goods.getGoodsName() + "已下架");
+ }
/**
* 会员一天最多下单次数
*/
@@ -114,102 +117,32 @@
throw new FebsException("会员今日已无法购买");
}
-// MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
-// if (address == null) {
-// throw new FebsException("地址不存在");
-// }
-
String orderNo = MallUtils.getOrderNum();
MallOrderInfo orderInfo = new MallOrderInfo();
orderInfo.setOrderNo(orderNo);
orderInfo.setOrderTime(new Date());
orderInfo.setMemberId(member.getId());
orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
-// orderInfo.setName(address.getName());
-// orderInfo.setAddress(address.getArea() + address.getAddress());
-// orderInfo.setPhone(address.getPhone());
-// orderInfo.setLatitude(address.getLatitude());
-// orderInfo.setLongitude(address.getLongitude());
orderInfo.setRemark(addOrderDto.getRemark());
orderInfo.setOrderType(addOrderDto.getOrderType());
//补贴金额
orderInfo.setSubsidyAmount(goods.getSubsidyAmount());
- if (CollUtil.isEmpty(addOrderDto.getItems())) {
- throw new FebsException("参数错误");
- }
-
-// int deliverType = ObjectUtil.isEmpty(addOrderDto.getDeliverType()) ? 1 : addOrderDto.getDeliverType();
-// if(2 == deliverType){
-// if(ObjectUtil.isEmpty(addOrderDto.getShopId())){
-// throw new FebsException("请选择门店");
-// }
-// Long shopId = addOrderDto.getShopId();
-// MallShopApply mallShopApply = mallShopApplyMapper.selectById(shopId);
-// if(ObjectUtil.isEmpty(mallShopApply)){
-// throw new FebsException("请选择门店");
-// }
-// if(MallShopApply.APPLY_AGREE != mallShopApply.getStatus()){
-// throw new FebsException("请选择门店");
-// }
-// orderInfo.setShopId(shopId);
-// }
this.baseMapper.insert(orderInfo);
- BigDecimal total = BigDecimal.ZERO;
- BigDecimal carriage = BigDecimal.ZERO;
- for (AddOrderItemDto item : addOrderDto.getItems()) {
- MallOrderItem orderItem = new MallOrderItem();
-
- // 积分商品提交订单
- if (addOrderDto.getOrderType() == 2) {
- MallGoods mallGoods = mallGoodsMapper.selectById(item.getSkuId());
- if (mallGoods.getStock() < item.getCnt()) {
- throw new FebsException(mallGoods.getGoodsName() + "库存不足");
- }
-
- if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
- throw new FebsException(mallGoods.getGoodsName() + "已下架");
- }
-
- BigDecimal amount = mallGoods.getScore().multiply(BigDecimal.valueOf(item.getCnt()));
- orderItem.setAmount(amount);
- orderItem.setCnt(item.getCnt());
- orderItem.setOrderId(orderInfo.getId());
- orderItem.setPrice(mallGoods.getScore());
- orderItem.setGoodsId(mallGoods.getId());
- orderItem.setGoodsName(mallGoods.getGoodsName());
- orderItem.setStyleName(mallGoods.getGoodsName());
- orderItem.setSkuName(mallGoods.getGoodsName());
- orderItem.setSkuImage(mallGoods.getThumb());
-
- total = total.add(amount);
- } else {
- MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
+ List<MallGoodsSku> mallGoodsSkus = mallGoodsSkuMapper.selectSkuByGoodsId(goods.getId());
+ for (MallGoodsSku sku : mallGoodsSkus) {
+ MallOrderItem orderItem = new MallOrderItem();
if (sku == null) {
throw new FebsException("购买商品或sku不存在");
}
- if (sku.getStock() < item.getCnt()) {
+ if (sku.getStock() < 1) {
throw new FebsException(sku.getSkuName() + "库存不足");
}
- MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
-
- // 零撸专区购买
- if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
- List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
- if (CollUtil.isNotEmpty(items)) {
- throw new FebsException("无法重复领取同一个商品");
- }
- }
-
- if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
- throw new FebsException(mallGoods.getGoodsName() + "已下架");
- }
-
- BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
+ BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(1));
orderItem.setAmount(amount);
- orderItem.setCnt(item.getCnt());
+ orderItem.setCnt(1);
orderItem.setOrderId(orderInfo.getId());
orderItem.setPrice(sku.getPresentPrice());
orderItem.setGoodsId(sku.getGoodsId());
@@ -218,31 +151,20 @@
orderItem.setStyleName(sku.getStyleName());
orderItem.setSkuName(sku.getSkuName());
orderItem.setSkuImage(sku.getSkuImage());
- orderItem.setIsNormal(mallGoods.getIsNormal());
+ orderItem.setIsNormal(goods.getIsNormal());
orderItem.setCostPrice(sku.getCostPrice());
- total = total.add(amount);
- carriage = carriage.add(mallGoods.getCarriage());
-
- sku.setStock(sku.getStock() - item.getCnt());
- sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
+ sku.setStock(sku.getStock() - 1);
+ sku.setSkuVolume(sku.getSkuVolume() + 1);
mallGoodsSkuMapper.updateById(sku);
if (addOrderDto.getType() == 1) {
mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
}
- }
- mallOrderItemMapper.insert(orderItem);
+ mallOrderItemMapper.insert(orderItem);
}
-
- orderInfo.setAmount(total);
-// if(2 == deliverType){
-// orderInfo.setDeliverType(2);
-// orderInfo.setCarriage(BigDecimal.ZERO);
-// }else{
-// orderInfo.setDeliverType(1);
-// orderInfo.setCarriage(carriage);
-// }
+ BigDecimal presentPrice = new BigDecimal(goods.getPresentPrice()).setScale(2,BigDecimal.ROUND_DOWN);
+ orderInfo.setAmount(presentPrice);
this.baseMapper.updateById(orderInfo);
agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);
@@ -371,7 +293,7 @@
Long payFlowId = mallMoneyFlowService.addMoneyFlow(
member.getId(),
orderInfo.getOrderNo(),
- orderInfo.getAmount().negate().setScale(BigDecimal.ROUND_DOWN, 2),
+ orderInfo.getAmount().negate().setScale(2, BigDecimal.ROUND_DOWN),
MallMoneyFlowTypeEnum.PAY.getCode(),
MallMoneyFlow.STATUS_SUCCESS,
MallMoneyFlow.IS_RETURN_N,
--
Gitblit v1.9.1