苍穹外卖02

发布时间 2023-09-15 20:01:09作者: 阿朱朱

一 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中,再直接调用已有的动态查询购物车。