SpringCloud项目笔记(外卖订餐系统)

项⽬需求

客户端:针对普通⽤户,⽤户登录、⽤户退出、菜品订购、我的订单。 后台管理系统:针对管理员,管理员登录、管理员退出、添加菜品、查询菜品、修改菜品、删除菜品、 订单处理、添加⽤户、查询⽤户、删除⽤户。 客户端:针对普通用户,用户登录、用户退出、菜品订购、我的订单。

后台管理系统:针对管理员,管理员登录、管理员退出、添加菜品、查询菜品、修改菜品、删除菜品、订单处理、添加用户、查询用户、删除用户。

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

Class 7 Order(订单服务)

    创建order模块 创建Order实体类,需要Admin、Menu、User、type 完成order配置文件,完成订阅的功能 client整合order,完成点击名称,显示订单列表功能(需要MenuRepository和UserRepository的支持)

Class 8 后台管理系统

    添加过滤器 退出功能 处理订单(增加findAllByState功能和updateState功能)
经验分享 程序员 微信小程序 职场和发展