From 595cf086067e3dae05f7896b7772d8b689cc6ea4 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 22 Sep 2021 11:50:23 +0800 Subject: [PATCH] add addOrder and fix --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 83 ++++++++++++++++++++++++++++++++++++++++- 1 files changed, 81 insertions(+), 2 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 41a6417..d6b93d2 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 @@ -1,12 +1,24 @@ package cc.mrbird.febs.mall.service.impl; -import cc.mrbird.febs.mall.entity.MallOrderInfo; -import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; +import cc.mrbird.febs.common.enumerates.OrderStatusEnum; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.LoginUserUtil; +import cc.mrbird.febs.common.utils.MallUtils; +import cc.mrbird.febs.mall.dto.AddOrderDto; +import cc.mrbird.febs.mall.dto.AddOrderItemDto; +import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IApiMallOrderInfoService; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Random; /** * @author wzy @@ -16,4 +28,71 @@ @Service @RequiredArgsConstructor public class ApiMallOrderInfoServiceImpl extends ServiceImpl<MallOrderInfoMapper, MallOrderInfo> implements IApiMallOrderInfoService { + + private final MallGoodsMapper mallGoodsMapper; + private final MallGoodsSkuMapper mallGoodsSkuMapper; + private final MallAddressInfoMapper mallAddressInfoMapper; + private final MallOrderItemMapper mallOrderItemMapper; + + @Override + public String createOrder(AddOrderDto addOrderDto) { + MallMember member = LoginUserUtil.getLoginUser(); + + MallAddressInfo address = mallAddressInfoMapper.selectById(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()); + + if (CollUtil.isEmpty(addOrderDto.getItems())) { + throw new FebsException("参数错误"); + } + + this.baseMapper.insert(orderInfo); + BigDecimal total = BigDecimal.ZERO; + for (AddOrderItemDto item : addOrderDto.getItems()) { + MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId()); + if (sku == null) { + throw new FebsException("购买商品或sku不存在"); + } + + if (sku.getStock() < item.getCnt()) { + throw new FebsException("库存不足"); + } + + MallOrderItem orderItem = new MallOrderItem(); + BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); + orderItem.setAmount(amount); + orderItem.setCnt(item.getCnt()); + orderItem.setOrderId(orderInfo.getId()); + orderItem.setPrice(sku.getPresentPrice()); + orderItem.setGoodsId(sku.getGoodsId()); + orderItem.setGoodsName(sku.getGoodsName()); + orderItem.setSkuId(sku.getId()); + orderItem.setStyleName(sku.getStyleName()); + + total = total.add(amount); + mallOrderItemMapper.insert(orderItem); + + sku.setStock(sku.getStock() - item.getCnt()); + mallGoodsSkuMapper.updateById(sku); + } + + + return orderNo; + } + + } -- Gitblit v1.9.1