苍穹外卖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>


浙公网安备 33010602011771号