1.首先就是登录微信小程序,这个腾讯有一套自己的流程如下图所示:

流程梳理:

这里的4. 在本项目中通过springmvc将code发送给后端的接口。


下面贴出在user端的userController如何实现登录的代码:

其实userService.login本质上就是在完成上面的二阶段和三阶段。下面的代码就是完成四和五两个阶段,也就是生成JWT令牌并且返回给前端!
下面是service中的login代码:

Mapper层的查询和插入比较简单就不多赘述了。
接下来是前端商品浏览功能
先看一下样例:

我们分别有四个接口:
1.分类查询
2.根据菜品分类查询菜品数据
3.根据套餐分类查询套餐数据
4.根据套餐id查询包含的菜品列表
首先是我们的分类查询:定义了一个categoryController,查询接口文档定义如下:


你别看前端需要传递到底是套餐分类还是菜品,这个可能是为了后面精确查询设计的但是这里确实没有,调试的代码如下图所示:
显然我们的前端没有给type传递数值,而是统一查询出了所有status=1也就是在售的category
其次是我们需要查询每个分类中具体的数据也就是(套餐or菜品)本质上每个category有多个菜品或套餐,所以查询出来应该是一个List集合。
首先是菜品分类查询,下面是dishController的代码:

没必要看接口了,前端点击了一个category的bottom这个bottom是由前面的分类查询查找出来的,所以会有一个categoryId点了bottom就会将该分类的categoryId传给后端,后端根据分类Id查询菜品,菜品返回给前端的是一个VO对象,这个对象不仅仅包括了菜品的信息,也包括了该菜品的Flavor所以要操作两个表。下面是service的代码:

我们直接用New一个Dish对象进行查询。这里的Mapper层是一个left Join查询,需要连接Dish表和Flavor表,具体XML文件如下:

首先需要定义一个resultMap,就是将我们查询结果封装到VO里面的参照物,这一段可以看后面redis缓存的时候有一个勘误。
就不细说了。
同样根据分类还能查询套餐的数据,其实本质上可以和菜品放在一起,但是套餐和菜品需要分开处理,所以给定义了两个controller层。

返回的是套餐的list对象,下面是service层的代码。

这里讲一下为什么需要用Setmeal对象去Mapper查询,本质上就是构造一个通用的查询方式,当然我们只用categoryId也可以查询的,是为了后续设计更多的精确查询,比如输入套餐的部分名字也可以查询到想要的套餐。
Mapper层代码如下:

这里学会SQL里面的like以及concat~~~
最后套餐查询有一个特殊的点,就是查询套餐的具体内容,因为一个套餐可以包括多个菜品所以它具备具体的内容,多一个接口。接口文档如下:

如图所示我们需要返回一个DishItemVO对象给前端 下图是其定义内容:

根据套餐id进行查询setmealDish表就好了,下图是service的代码:

mapper层实际上是要查两个表一个是setmeal表另一个是setmealDish表因为DishItemVO中的参数不全在一个表中所以需要连接两个表查询具体SQL如下:

完成了Day06的开发。