项⽬需求
客户端:针对普通⽤户,⽤户登录、⽤户退出、菜品订购、我的订单。
后台管理系统:针对管理员,管理员登录、管理员退出、添加菜品、查询菜品、修改菜品、删除菜品、
订单处理、添加⽤户、查询⽤户、删除⽤户。
客户端:针对普通用户,用户登录、用户退出、菜品订购、我的订单。
后台管理系统:针对管理员,管理员登录、管理员退出、添加菜品、查询菜品、修改菜品、删除菜品、订单处理、添加用户、查询用户、删除用户。
account 提供账户服务:用户和管理的登录退出。
menu 提供菜品服务:添加菜品、删除菜品、修改菜品、查询菜品。
order 提供订单服务:添加订单、查询订单、删除订单、处理订单。
user 提供用户服务:添加用户、查询用户、删除用户。
分离出一个服务消费者,调用以上四个服务提供者,服务消费者包含了客户端的前端页面和后台接口、后台管理系统的前端页面和后台接口。用户 / 管理员直接访问的资源都保存在服务消费者中,服务消费者根据具体的需求调用四个服务提供者的业务逻辑,通过 Feign 实现负载均衡。
四个服务提供者和一个服务消费者都需要在注册中心进行注册,同时可以使用配置中心来对配置文件进行统一集中管理。
Class 1:微服务环境搭建
- 编写pom文件
- 创建eurekaserver(注册中心)模块
- 创建configserver
- 创建服务提供者order
启动报错
:
解决:
<!--新版本的Spring Cloud对熔断器Hystrix有要求,Eureka中必须添加对Hystrix的依赖才可以。-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
Class 2:创建服务提供者menu
编写mapper、xml
Class 3服务消费者整合menu(上、下)
1、写了findAll接口,因为layui的要求,返回MenuVo
2、在menuVO里面给count属性查询赋值
3、menu的findAll接口整合type,在mapper.xml中加入association标签
- 使用了th标签,必须要走后台;
- 因为layui框架要求返回的数据格式有规定,所以创建MenuVo,并代替Menu返回(在menu服务中修改)
Class 4服务消费者整合feign(上、下)
注意点
1、服务提供者接收数据要使用@RequestBody(在menu的save接口体现)
2、数据库有空字段时,前端页面的下一页功能无法实现
- menu添加删除功能、添加功能(先findAllTypes)
- menu添加编辑功能(查findMenuById时,要将resultType改成resultMap)
Class 5 创建、整和服务提供者user
创建user模块,编写接口,写feign,返回UserVo
Class 6 服务消费者整合account
- 创建account模块,使用多态返回登录功能
- client整合account模块,创建feign和handler
- client的登录接口(出现两个异常)
因为object是LinkedHashMap类型
java.util.LinkedHashMap cannot be cast to com.jl.entity.Admin
java.lang.Integer cannot be cast to java.lang.Long
- 获取session必须走转发,jsp底层就是servlet,必须走后台,html直接访问是没有后台的,必须走后台才能访问
- 退出登录
Class 7 Order(订单服务)
- 创建order模块
- 创建Order实体类,需要Admin、Menu、User、type
- 完成order配置文件,完成订阅的功能
- client整合order,完成点击名称,显示订单列表功能(需要MenuRepository和UserRepository的支持)
Class 8 后台管理系统
- 添加过滤器
- 退出功能
- 处理订单(增加findAllByState功能和updateState功能)