苍穹外卖02
一 httpClient
二、小程序登录,微信登录
1、用户登录
{1}查看api 前端传入code 也就是UserLoginDTO,最后返回 id,openid,token 也就是UserLoginVO
{2}controller
这里通过JwtUtil.createJWT来获取token , jwtProperties.getUserSecretKey(), jwtProperties.getUserTtl()在yml配置文件中写了,这里直接调用的
{3}UserServiceImpl
这里直接调用的getopenid方法 1.这里使用HttpClientUtil来访问微信小程序
2.判断openid是否存在,不存在就直接抛出
3.openid为新用户就注册 注意builder() 用在实体类上这里的是User 而不是user,最后需要用.build()接
如下是小程序的调用方式,请求参数需要填到HttpClientUtil的doGet里面去
{4}mapper
{5}最后创建JwtTokenUserInterceptor ,跟JwtTokenAdminInterceptor一样
添加自定义拦截器
三、购物车开发
1、添加购物车
前端传的参数是ShoppingCartDTO
{1} controller
{2}serviceImpl
1、这里我们需要把ShoppingCartDTO复制带ShoppingCart,用ShoppingCart进行数据库的增删改查
2、首先判断加入购物车的商品是否已经存在 ,加入商品一次只能传入一个 (这里根据ShoppingCart去动态查询)
2.1、如果存在加入的商品数量就加1
2.2、如果不存在那就添加到购入车数据
2.2.1、如果传入的是dish_id(菜品id) 这里需要根据dish_id去查询菜品,将菜品信息存入ShoppingCart
如果传入的是setmeal_id(套餐id) 同样这里需要根据setmeal_id去查询套餐,将套餐信息存入ShoppingCart
这里的userid是在token里面导出来的
2、查看购物车
在serviceImpl中 通过token得到userId,由于在添加购物车中mapper已经有了动态查询购物车,
所以这里将userId存入到 new的ShoppingCart中,再直接调用已有的动态查询购物车。
四、用户下单
查看api
左边 传的参数 ,中间 响应的数据 , 右边的去支付就是用户下单执行
{1} controller
{2} serviceImpl
业务流程 1.判断地址薄和购物车是否存在数据, 如果不存在直接抛出错误提示
2.获取订单Orders
3.获取订单明细OrderDetail, 由于这里的购物车是多个,所以这里订单明细也是多个
4.清空当前用户购物车数据
5.封装VO的结果
这里获取的订单Orders插入到数据库里去 执行sql右图 由于下面还需要调用到这里所执行的id,所以在sql中加了useGeneratedKeys="true" keyProperty="id"
这里的订单明细OrderDetail插入到数据库里去 由于这里传入的是List<OrderDetail>下的orderDetailList集合
所以在sql中是一对多,value是多个所以要用到<foreach>