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

 

posted @ 2023-09-15 19:59  阿朱朱  阅读(202)  评论(0编辑  收藏  举报