xin
2025-07-04 1eee71ca750c806ee0e6d80a4fd44500ceff2ffa
oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
@@ -1,8 +1,16 @@
package com.oying.modules.sh.service.impl;
import com.oying.exception.BadRequestException;
import com.oying.modules.pc.product.domain.Product;
import com.oying.modules.pc.product.domain.enums.ProductStatusEnum;
import com.oying.modules.pc.product.service.ProductService;
import com.oying.modules.sh.domain.Order;
import com.oying.modules.sh.domain.request.GeneratorOrder;
import com.oying.modules.sh.domain.request.ProductOrder;
import com.oying.modules.sh.domain.request.SubmitOrder;
import com.oying.modules.sh.domain.vo.OrderInfo;
import com.oying.modules.sh.domain.vo.ProductInfo;
import com.oying.modules.sh.service.UserAddressService;
import com.oying.utils.FileUtil;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -14,6 +22,7 @@
import org.springframework.transaction.annotation.Transactional;
import com.oying.utils.PageUtil;
import java.math.BigDecimal;
import java.util.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
@@ -21,8 +30,8 @@
import com.oying.utils.PageResult;
/**
* @description 服务实现
* @author lixin
 * @description 服务实现
* @date 2025-06-11
**/
@Service
@@ -30,6 +39,8 @@
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
    private final OrderMapper orderMapper;
    private final UserAddressService userAddressService;
    private final ProductService productService;
    @Override
    public PageResult<Order> queryAll(OrderQueryCriteria criteria, Page<Object> page){
@@ -47,8 +58,42 @@
    }
    @Override
    public Map<String, Object> generatorOrder(GeneratorOrder generator) {
        return Collections.emptyMap();
    @Transactional(rollbackFor = Exception.class)
    public OrderInfo generatorOrder(GeneratorOrder criteria) {
        List<ProductInfo> products = new ArrayList<>();
        BigDecimal amount = BigDecimal.ZERO;
        for (ProductOrder productOrder : criteria.getProducts()) {
            Product product = productService.getById(productOrder.getProductId());
            if (product == null) {
                throw new BadRequestException("商品不存在");
            }
            if (product.getStoreId().equals(criteria.getStoreId())) {
                throw new BadRequestException("不支持跨门店下单");
            }
            if (!product.getStatus().equals(ProductStatusEnum.AVAILABLE.getValue())) {
                ProductStatusEnum statusEnum = ProductStatusEnum.get(product.getStatus());
                throw new BadRequestException(product.getName() + ":" + (statusEnum != null ? statusEnum.getReasonPhrase() : "状态"));
            }
            if (productOrder.getProductCount() > product.getStockQuantity()) {
                throw new BadRequestException("商品库存不足");
            }
            if (productOrder.getProductCount() < product.getMinPurchaseQuantity()) {
                throw new BadRequestException("起售数量不足");
            }
            ProductInfo info = new ProductInfo();
            info.setProduct(product);
            info.setProductLabels(product.getLabels());
            info.setCount(productOrder.getProductCount());
            products.add(info);
            amount = amount.add(product.getPrice().multiply(BigDecimal.valueOf(productOrder.getProductCount())));
        }
        OrderInfo info = new OrderInfo();
        info.setProducts(products);
        info.setAmount(amount);
        info.setPayAmount(amount);
        info.setPromotionAmount(BigDecimal.ZERO);
        info.setUserAddresses(userAddressService.queryUserAddress());
        return info;
    }
    @Override
@@ -79,6 +124,7 @@
            map.put("订单号", order.getOrderNum());
            map.put("用户id", order.getUserId());
            map.put("门店ID", order.getStoreId());
            map.put("门店", order.getStoreName());
            map.put("描述", order.getOrderDescribe());
            map.put("原金额", order.getOriginalPrice());
            map.put("折扣价", order.getPaidPrice());
@@ -90,11 +136,6 @@
            map.put("订单失效时间RFC3339", order.getExpireTime());
            map.put("openid", order.getOpenid());
            map.put("APPID", order.getAppId());
            map.put("时间戳", order.getTimestamp());
            map.put(" nonceStr",  order.getNonceStr());
            map.put(" packageVal",  order.getPackageVal());
            map.put(" signType",  order.getSignType());
            map.put("签名", order.getPaySign());
            map.put("创建人", order.getCreateBy());
            map.put("创建时间", order.getCreateTime());
            map.put("修改者", order.getUpdateBy());