订单系统
购物车页面有一个去结算按钮,点击按钮,跳转到确认订单页面。
在购物车中选中要购买的商品,点击去结算按钮(传过来的参数有商品id和商品数量num)
业务逻辑:
判断用户是否登录
拦截器:
1. 从Cookie中取token
2. 如果token为空,说明用户未登录,需要跳转到登录页面进行登录。在重定向到登录页面时,要将当前系统的url作为参数传过来,以便登录成功之后能再跳转到当前系统。
3. 如果token不为空,要调用单点登录系统中的服务,根据token验证用户信息是否存在
如果不存在,说明用户登录已经过期,需要跳转到登录页面重新登录。在重定向到登录页面时,要将当前系统的url作为参数传过来,以便登录成功之后能再跳转到当前系统。
如果存在,说明用户已经登录,将当前用户信息存入request中,传给Controller。
Controller:
1.获取用户信息
2.根据用户id查询用户的收获地址列表(使用静态数据)
3.根据商品id去数据库中查出要购买的商品列表
4.将地址列表和商品列表传递给jsp
5.返回确认订单页面
当你确认订单信息无误后,点击提交订单按钮。(页面会传过来很多参数信息,服务端用封装的pojo来接收)
提交订单,就是分别向数据库中的订单表order、订单商品表order_item、订单物流表order_shipping插入记录。(订单表和订单商品表是一对多关系,订单表和订单物流表是一对一关系)
业务逻辑:
判断用户是否登录
拦截器:
1. 从Cookie中取token
2. 如果token为空,说明用户未登录,需要跳转到登录页面进行登录。在重定向到登录页面时,要将当前系统的url作为参数传过来,以便登录成功之后能再跳转到当前系统。
3. 如果token不为空,要调用单点登录系统中的服务,根据token验证用户信息是否存在
如果不存在,说明用户登录已经过期,需要跳转到登录页面重新登录。在重定向到登录页面时,要将当前系统的url作为参数传过来,以便登录成功之后能再跳转到当前系统。
如果存在,说明用户已经登录,将当前用户信息存入request中,传给Controller。
Controller:
1. 获取用户信息
2. 生成订单号(使用redis的incr命令生成订单号,赋初始值)
3. 补全order对象的属性(需要补orderId、status、userId、createTime、updateTime等,其它属性页面传)
4. 插入订单表
5. 补全order_item对象的属性(需要补orderId、createTime、updateTime等,其它属性页面传)
6. 插入订单商品表
7. 补全order_shipping对象的属性(需要补orderId、createTime、updateTime等,其它属性页面传)
8. 插入订单物流表
9. 把订单号传递给jsp
10. 返回逻辑视图(支付页面)