需求分析和设计

-->用户点击餐品将其加入购物车页面其中
-->用户点击去结算按钮,小程序此时来跳转到对应的订单提交页面。用户对应的去选择下单地址
-->点击支付,小程序跳转到用户订单支付页面
-->付款成功,跳转到对应的下单成功页面
接口设计

对应返回数据:
下单时间,订单总金额,订单号,订单id
在用户下单之后,对应的小程序会对应的来跳转到订单支付页面,用户在这个页面其中来完成相应的付款操作

接口路径 :/user/order/submit
请求方式:post
功能:用户提交订单,通常包括用户选择的商品、数量、配送地址等信息。接口会接收这些信息并生成一个订单
请求参数

Header 参数
Content-Type : application/json
- 这个参数告诉服务器请求体的格式是 JSON。因此,接口的请求体将使用 JSON 格式进行数据传输。
Body参数
对应的DTO对象数据

响应信息

code:状态码信息
data:响应的核心部分,包含了订单相关的详细信息
msg:提示信息
表设计
订单表orders

订单明细表order-detail

代码开发
controller

注意:
此处的订单操作属于用户端其中的操作,因此对应的controller对应的创建在user包下

-->@RestController=@Controller注解+@ResponseBody注解
@RestController("userOrderController")给容器组件起名,防止重名
-->@RequestMapping 注解
用来映射Http请求路径到对应的控制器的发或者类上
@RequestMapping("/user/order")表示这个类下所有的接口路径都以 /user/order开头
创建对应的用户下单函数方法,接受前端用户所传递过来的信息


Service

实现类其中来具体实现

由于用户下单,我们需要来操作订单表和订单明细表à因此此处我们需要在service实现类其中来注入对应的mapper表信息来供后续的操作
其中impl用户订单实现逻辑分析:
由于用户订单主要涉及到对应的两张表:
订单表(用户下单之后需要在订单表其中来插入一条数据)&
订单明细表(由于订单表和对应的订单明细表对应是一对多关系,因此对应的订单表其中一条数据对应的订单明细表其中可能对应多条数据)
订单提交之前,校验性工作(也就是处理一下业务的异常)

包括校验一下用户的地址是否有问题
购物车是否为空(用户下单成功之后,对应的清空购物车其中数据)
注意:
由于此处我们需要来操作地址簿信息,因此我们需要再此处来对应的添加AddressMapper信息,来进行操作地址簿表信息
也包括对应的添加AddressBookMapper来操作对应的购物车的mapper
只要用户下单了,我们就向订单表其中来插入一条数据

当对应没有异常抛出时,我们可以正常进行下单(也就是对应的购物车数据和对应的地址簿其中数据都不为空时)
首先我们需要先来根据前端所传递的数据来构建一个订单对象,通过订单对象再想对应的订单表其中来对应的插入一条数据即可 (由于需要向订单表其中来插入一条数据,那么我们就需要向其中来创建一个订单实体类向其中封装数据)
对应的下单了,对应的订单明细表其中也需要来对应的插入数据
向订单明细表其中来插入n条数据
拿到购物车其中的数据内容,遍历其中数据封装到对应的订单明细表其中去

提交订单之后,需要来清空当前用户的购物车数据
直接通过来调用shoppingCartMapper其中的通过id值来对应的删除用户其中的数据方法即可
封装返回结果VO对象给前端
后端处理好数据之后,封装VO对象给前端来进行实际返回即可

订单表OrderMapper,以及对应的订单明细OrderDetailMapper

对应的Mapper.xml文件其中具体来定义实际的insert插入方法

注意:
Insert Into orders 后面所跟的参数名称必须和对应的数据库表orders其中的字段名,其中的表结构所定义的字段一一对应。
以及对应的values后面所对应的#{}占位符其中必须来对应的是Java实体类Orders其中的属性名
orderDetailMapper订单明细Mapper

