找回密码
 立即注册
查看: 35|回复: 0

SpringBoot3+SSM的企业级Java项目实战外卖小程序之用户下单

[复制链接]

153

主题

5

精华

157

金币

技术维护QQ:515138

积分
339
发表于 2025-12-28 21:32:07 | 显示全部楼层 |阅读模式
SpringBoot3+SSM的企业级Java项目实战外卖小程序之用户下单

实现层参考:
  1. package com.zidiu.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.github.pagehelper.PageHelper;
  5. import com.zidiu.constant.MessageConstant;
  6. import com.zidiu.context.BaseContext;
  7. import com.zidiu.dto.OrdersPaymentDTO;
  8. import com.zidiu.dto.OrdersSubmitDTO;
  9. import com.zidiu.entity.*;
  10. import com.zidiu.exception.AddressBookBusinessException;
  11. import com.zidiu.exception.ShoppingCartBusinessException;
  12. import com.zidiu.mapper.*;
  13. import com.zidiu.service.OrderService;
  14. import com.zidiu.utils.HttpClientUtil;
  15. import com.zidiu.vo.OrderPaymentVO;
  16. import com.zidiu.vo.OrderStatisticsVO;
  17. import com.zidiu.vo.OrderSubmitVO;
  18. import com.zidiu.vo.OrderVO;
  19. import lombok.extern.slf4j.Slf4j;
  20. import org.springframework.beans.BeanUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import java.math.BigDecimal;
  25. import java.time.LocalDateTime;
  26. import java.util.ArrayList;
  27. import java.util.HashMap;
  28. import java.util.List;
  29. import java.util.Map;
  30. import java.util.stream.Collectors;
  31. @Service
  32. @Slf4j
  33. public class OrderServiceImpl implements OrderService {
  34.     @Autowired
  35.     private OrderMapper orderMapper;
  36.     @Autowired
  37.     private OrderDetailMapper orderDetailMapper;
  38.     @Autowired
  39.     private AddressBookMapper addressBookMapper;
  40.     @Autowired
  41.     private ShoppingCartMapper shoppingCartMapper;
  42.     @Override
  43.     public OrderSubmitVO submitOrder(OrdersSubmitDTO ordersSubmitDTO) {
  44.         //1. 处理各种业务异常(地址簿为空、购物车数据为空)
  45.         AddressBook addressBook = addressBookMapper.getById(ordersSubmitDTO.getAddressBookId());
  46.         if(addressBook == null){
  47.             //抛出业务异常
  48.             throw new AddressBookBusinessException(MessageConstant.ADDRESS_BOOK_IS_NULL);
  49.         }
  50.         //检查用户的收货地址是否超出配送范围
  51.         //checkOutOfRange(addressBook.getCityName() + addressBook.getDistrictName() + addressBook.getDetail());
  52.         //查询当前用户的购物车数据
  53.         Long userId = BaseContext.getCurrentId();
  54.         ShoppingCart shoppingCart = new ShoppingCart();
  55.         shoppingCart.setUserId(userId);
  56.         List<ShoppingCart> shoppingCartList = shoppingCartMapper.list(shoppingCart);
  57.         if(shoppingCartList == null || shoppingCartList.size() == 0){
  58.             //抛出业务异常
  59.             throw new ShoppingCartBusinessException(MessageConstant.SHOPPING_CART_IS_NULL);
  60.         }
  61.         //2. 向订单表插入1条数据
  62.         Orders orders = new Orders();
  63.         // 数据拷贝
  64.         BeanUtils.copyProperties(ordersSubmitDTO, orders);
  65.         orders.setOrderTime(LocalDateTime.now());
  66.         orders.setPayStatus(Orders.UN_PAID);
  67.         orders.setStatus(Orders.PENDING_PAYMENT);
  68.         orders.setNumber(String.valueOf(System.currentTimeMillis()));
  69.         orders.setAddress(addressBook.getDetail());
  70.         orders.setPhone(addressBook.getPhone());
  71.         orders.setConsignee(addressBook.getConsignee());
  72.         orders.setUserId(userId);
  73.         orderMapper.insert(orders);
  74.         List<OrderDetail> orderDetailList = new ArrayList<>();
  75.         //3. 向订单明细表插入n条数据
  76.         for (ShoppingCart cart : shoppingCartList) {
  77.             OrderDetail orderDetail = new OrderDetail();//订单明细
  78.             BeanUtils.copyProperties(cart, orderDetail);
  79.             orderDetail.setOrderId(orders.getId());//设置当前订单明细关联的订单id
  80.             orderDetailList.add(orderDetail);
  81.         }
  82.         orderDetailMapper.insertBatch(orderDetailList);
  83.         //4. 清空当前用户的购物车数据
  84.         shoppingCartMapper.deleteByUserId(userId);
  85.         //5. 封装VO返回结果
  86.         OrderSubmitVO orderSubmitVO = OrderSubmitVO.builder()
  87.                 .id(orders.getId())
  88.                 .orderTime(orders.getOrderTime())
  89.                 .orderNumber(orders.getNumber())
  90.                 .orderAmount(orders.getAmount())
  91.                 .build();
  92.         return orderSubmitVO;
  93.     }
  94. }
复制代码
源代码:
jinhei-waimai.zip (846.15 KB, 下载次数: 0, 售价: 50 金币)



上一篇:Spring Cache缓存套餐实现思路和代码分析
下一篇:SpringBoot3+SSM的企业级Java项目实战外卖小程序之微信支付
网站建设,公众号小程序开发,系统定制,软件App开发,技术维护【联系我们】手机/微信:17817817816 QQ:515138

QQ|Archiver|自丢网 ( 粤ICP备2024252464号-1 )

GMT+8, 2026-1-13 16:12

专注于网站建设,公众号小程序制作,商城小程序,系统定制,软件App开发

【联系我们】手机/微信:17817817816 QQ:515138

快速回复 返回顶部 返回列表