当前位置: 首页 > news >正文

苍穹外卖-Day09(用户下单)

1.需求设计和分析

Path:/user/order/submit

Method:POST

2.代码开发

//地址为空 AddressBook addressBook = addressBookMapper.getById(ordersSubmitDTO.getAddressBookId()); if(addressBook == null){ throw new AddressBookBusinessException(MessageConstant.ADDRESS_BOOK_IS_NULL); } //购物车为空 Long useId = BaseContext.getCurrentId(); ShoppingCart shoppingCart = new ShoppingCart(); shoppingCart.setUserId(useId); List<ShoppingCart> shoppingCartList = shoppingCartMapper.list(shoppingCart); if(shoppingCartList == null || shoppingCartList.size() == 0){ throw new ShoppingCartBusinessException(MessageConstant.SHOPPING_CART_IS_NULL); } //向订单表插入一条数据 Orders orders = new Orders(); BeanUtils.copyProperties(ordersSubmitDTO,orders); orders.setOrderTime(LocalDateTime.now()); orders.setPayStatus(Orders.UN_PAID); orders.setStatus(Orders.PENDING_PAYMENT); orders.setNumber(String.valueOf(System.currentTimeMillis())); orders.setPhone(addressBook.getPhone()); orders.setConsignee(addressBook.getConsignee()); orders.setUserId(useId); orderMapper.insert(orders); //向订单明细表插入多条数据 List<OrderDetail> orderDetailList =new ArrayList<>(); for (ShoppingCart cart : shoppingCartList) { OrderDetail orderDetail = new OrderDetail(); BeanUtils.copyProperties(cart,orderDetail); orderDetail.setOrderId(orders.getId()); orderDetailList.add(orderDetail); } orderDetailMapper.insertBatch(orderDetailList); //下单成功后,清空购物车数据 shoppingCartMapper.deleteByUserId(useId); //封装VO返回结果 OrderSubmitVO orderSubmitVO = OrderSubmitVO.builder() .id(orders.getId()) .orderNumber(orders.getNumber()) .orderTime(orders.getOrderTime()) .orderAmount(orders.getAmount()) .build(); return orderSubmitVO;
http://www.zskr.cn/news/1437918.html

相关文章:

  • 2026年4月数控钢筋锯切生产线源头厂家哪个好,智能梁场大型钢筋加工设备,数控钢筋锯切生产线生产厂家选哪家 - 品牌推荐师
  • 2026年深圳logo设计全包TOP5品牌推荐:农产品商标设计/医疗健康logo设计/医疗健康商标设计/原创logo设计/选择指南 - 优质品牌商家
  • 2026年深圳实惠搬家公司TOP5推荐:深圳实验室搬迁公司、深圳工厂搬家公司、深圳工厂搬迁公司、深圳搬家公司电话选择指南 - 优质品牌商家
  • RLFT技术在工程机械自动化中的实践与优化
  • Win7绝境求生:手把手教你离线搞定Python 3.7.8和Playwright 1.15.3(附KB2533623补丁)
  • 别再只会复制代码了!手把手教你用STM32CubeMX配置PWM驱动TB6612电机(附完整工程)
  • 指针引发的内存问题-----无用的知识又增加了
  • CANoe AutoSequence的OnBoard模式实战:脱离PC,在VN1630硬件上跑自动化测试
  • 第2篇|MapComponent 地图组件常见问题与解决方案
  • 从Matlab到Multisim:一个12V直流稳压电源的完整仿真与实物制作全流程(附PCB文件)
  • 小型平衡机
  • 无感FOC
  • 从PLC读取数据到波形图显示:一个完整的LabVIEW Modbus串口通信项目实战
  • LTspice应用笔记——压控振荡器
  • 扩散策略实现机械臂零样本跨配置适应
  • 2026年湖北中可企业GEO服务公司品牌价值排名 - mypinpai
  • SSVEP-P300混合脑机接口系统设计与实现
  • MOS管控制电路深度解析:从仿真到实测,如何让3.3V单片机稳稳驱动10V传感器电源
  • 避开Matlab立体视觉的坑:双目标定参数设置与视差图优化实战
  • 用Python手把手教你实现一个简单的感知器(附AND/OR逻辑门完整代码)
  • 手把手教你给Ubuntu虚拟机“增肥”:从开机卡住到流畅运行的完整磁盘扩容指南
  • 动手实践:如何用现代仿真软件(如Multisim)搭建一个简易的PDM中波发射机原理模型
  • SCREME框架:低成本高可靠内存ECC技术解析
  • 告别状态机!在STM32单片机上用Protothread协程库实现异步LED闪烁(附完整代码)
  • 用 Agent 构建个人知识管理系统的完整方案
  • 2026火锅店划算底料供应商实测:火锅底料怎么选商用/火锅底料批发/火锅店专用底料/三家厂商核心维度对比 - 优质品牌商家
  • 用Unity Toggle做个游戏设置菜单:手把手实现音效开关、画质选项与导航逻辑
  • 保姆级教程:装完Ubuntu20.04没WiFi?手把手教你搞定驱动和内核更新
  • 别再死记硬背命令了!用CentOS 7.9实战GlusterFS三种卷(分布式/复制/分布式复制)的选型与性能对比
  • 2026西安学校灭蟑螂公司选择全流程技术推荐 - 优质品牌商家