师生问答管理平台项目经验

  1. 项目名称:师生问答管理平台
  2. 项目职务:组长
  3. 技术栈SpringSpringBootVue、MybatisPlus、Element UI、微服务、SpringCloud
  4. 开发环境:JDK1.8、Maven、Git、Mysql8.0.19
  5. 开发工具:Idea、HBuilderX
  6. 项目描述:

项目主要是提供了一个学生向讲师提问的平台,学生登录系统可以提问或搜索问题,讲师登录系统给学生回答问题,学生还可以对讲师的回答进行评论或追问,如果满意学生可以采纳这个回答,同时对问答记录进行管理。

项目采用前后端分离模式

功能包括:

1.用户管理模块

(1)登录及权限:用户账号密码使用PasswordEncoder进行加密,使用security对登录用户的权限进行配置,使用UserDetailsService提供认证数据,在用户登录时使用连接查询从数据库中查询出用户的权限,再通过SpringSecurity配置类进行控制授权范围和自定义登录页面。

(2)注册:确定邀请码,用户填写表单异步提交,编写ServiceException自定义异常类,用于表示我们开发的项目中发生的异常现象,使用Spring验证框架:SpringValidation反馈错误信息。

2.首页模块

(1)标签筛选导航:声明一个集合(CopyOnWriteArrayList 是线程安全的ArrayList对象)保存数据库中所有的标签,当做缓存,提高代码运行效率,前端使用Vue和Html绑定显示所有标签。

(2)当前登录用户及问题列表展示:从springSecurity中获取用户Id,再进行查询获取当前用户对象,同时判断登录状态,编写获取用户问题、问题所有标签、时间等方法,其中标签需要进行String[]转化才可以实现样式,列表展示问题。

(3)分页:使用pageHeper组件规定下一次查询只查询指定页码的数据。

3.学员问题管理模块

(1)编辑问题:前端使用summernote富文本编辑器编辑问题,使用v-select插件来实现标签和老师的复选效果,在select内实现动态加载老师列表效果。

(2)问题发布:新建一个QuestionVo来接收表单提交的信息并进行SpringValidation验证,分析数据库后对老师进行缓存,搭建静态资源服务器来保存用户上传的图片资源,借助summernote富文本编辑器给我们提供的特殊方法onImageUpload来上传用户选中的图片。

(3)信息显示:问题状态显示、用户信息面板显示(进行复用)。

4.老师回复功能模块

(1)老师页面:根据用户角色区分开老师和学生登录后的首页,复用标签导航列表和用户信息面板,显示讲师问题列表。

(2)问题详情页面:显示当前问题的所有回答,对updateDuration方法进行重构,避免代码冗余,老师新增的回答直接显示在回答列表中,开发对回答的评论功能,在回答的实体类中添加评论的集合,根据用户身份信息开发删除和编辑评论。

5.问题采纳模块

(1)问题页分离:由于学生和老师在问题详情页面上些许不同的功能对页面进行分离,重构控制器,根据不同身份跳转不同页面。

(2)问题采纳:在Question实体类中添加三个常量增加可读性,AnswerController重构调用业务逻辑层方法。

6.微服务与SpringCloud

(1)创建Eureka注册中心,Eureka客户端,Zuul网关。

(2)单体应用到微服务架构:将UI界面迁移至网关,网关微服务项目设置路由,创建通用模块项目,迁移数据访问层、业务逻辑层、控制层,javafaq-eureka:注册中心,javafaq-gateway:网关,javafaq-sys:用户管理模块,javafaq-faq:问答管理模块,javafaq-search:搜索模块,javafaq-resource:静态资源服务器。

(3)Ribbon负载均衡于用户登录,迁移登录功能,使用Elasticsearch搜索,使用SpringData实现分页。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值