项目编号:BS-XX-141
一,项目简介
本项目主要实现一个基于课程选课的社区交流系统,主要的业务背景为每个老师可以自己开设相应的选修课,并指定可以选修的人数,学生登陆系统后可以进行选课,并可以在线针对自己的选课进行在线讨论,点赞等互动行为。管理员则主要是对基本信息的相关管理,比如用户和角色、权限管理等,本系统有着完备的权限管理控制系统,可以根据需要自定角色并分配相应的权限。系统采用前后端分离开发的方式来实现。
二,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
前端技术:jsp+easyui+ajax+jquery
后端技术:spring+springmvc+mybatis+定时任务
三,系统展示
下面展示一下系统的主要功能:
登陆页面:
用户注册
用户管理
菜单管理
角色管理
权限分配
个人信息
学生登陆系统
选课
参与所选课程的社区讨论
老师登陆系统
开设课程
参与社区讨论
四,核心代码展示
package com.course.api.controller; import com.course.api.config.Result.Result; import com.course.api.config.Result.Results; import com.course.api.entity.Comment; import com.course.api.service.Impl.CommentServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/comment") public class CommentController { @Autowired CommentServiceImpl commentService; /** * 查询当前课程的论坛数据 * @param courseId * @return List */ @GetMapping("getCommentList") public Result getCommentList(@RequestParam Long courseId) { return Results.success(commentService.getCommentInfo(courseId)); } /** * 添加评论 * @param comment * @return */ @PostMapping("/add") public Result add(@RequestBody Comment comment) { commentService.addComment(comment); return Results.success(); } /** * 删除评论 * @param id * @return */ @DeleteMapping("/delete/{id}") public Result remove(@PathVariable(value = "id") Long id) { commentService.removeById(id); return Results.success(); } }
package com.course.api.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.course.api.config.Result.Result; import com.course.api.config.Result.Results; import com.course.api.entity.CommentThumbs; import com.course.api.service.Impl.CommentThumbsImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/commentThumbs") public class CommentThumbsController { @Autowired CommentThumbsImpl commentThumbsService; /** * 获取用户点赞的帖子 * @param userId * @return */ @GetMapping("/getLikeComments") public Result getLikeComments(@RequestParam Long userId) { return Results.success(commentThumbsService.list(new QueryWrapper<CommentThumbs>().eq("user_id", userId))); } /** * 点赞 * @param commentThumbs * @return */ @PostMapping("/giveThumbs") public Result giveThumbs(@RequestBody CommentThumbs commentThumbs) { commentThumbsService.addThumbs(commentThumbs); return Results.success(); } /** * 取消点赞 * @param id * @return */ @DeleteMapping("/cancel/{id}") public Result cancel(@PathVariable(value = "id") Long id) { commentThumbsService.cancelThumbs(id); return Results.success(); } }
package com.course.api.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.course.api.config.Result.Result; import com.course.api.config.Result.Results; import com.course.api.entity.Course; import com.course.api.service.Impl.CourseServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/course") public class CourseController { @Autowired CourseServiceImpl courseService; /** * 获取课程分页数据 * @param page * @param pageSize * @param teacherId * @return */ @GetMapping("/getCourseList") public Result getCourseList(@RequestParam int page, @RequestParam int pageSize, @RequestParam(defaultValue = "0") Long teacherId) { IPage<Course> courseIPage = new Page<>(page, pageSize); QueryWrapper<Course> queryWrapper = new QueryWrapper<>(); if (teacherId > 0) { queryWrapper.eq("teacher_id", teacherId); } return Results.success(courseService.page(courseIPage, queryWrapper)); } /** * 获取全部课程信息 * @return */ @GetMapping("/getAllCourseList") public Result getAllCourseList() { return Results.success(courseService.list()); } /** * 添加课程 * @param course * @return newCourseId */ @PostMapping("/add") public Result add(@RequestBody Course course) { courseService.save(course); List<Course> courseList = courseService.list(); System.out.println(courseList.get(courseList.size() - 1).getId()); return Results.success(courseList.get(courseList.size() - 1).getId()); } /** * 修改课程信息 * @param course * @return */ @PutMapping("update") public Result update(@RequestBody Course course) { if (courseService.updateById(course)) return Results.success(); else return Results.failure("编辑失败"); } /** * 删除课程 * @param id * @return */ @DeleteMapping("delete/{id}") public Result remove(@PathVariable(value = "id") Long id) { if (courseService.removeById(id)) return Results.success(); else return Results.failure("删除失败"); } /** * 选课 * @param courseId * @param userId * @return */ @PutMapping("/selectCourse/{courseId}/{userId}") public Result selectCourse(@PathVariable(value = "courseId") Long courseId, @PathVariable(value = "userId") Long userId) { courseService.selectCourseById(courseId, userId); return Results.success(); } /** * 退选 * @param courseId * @param userId * @return */ @PutMapping("deselectCourse/{courseId}/{userId}") public Result deselectCourse(@PathVariable(value = "courseId") Long courseId, @PathVariable(value = "userId") Long userId) { courseService.deselectCourseById(courseId, userId); return Results.success(); } }
package com.course.api.controller; import com.course.api.config.Result.Result; import com.course.api.config.Result.Results; import com.course.api.entity.Menu; import com.course.api.mapper.RoleMenuMapper; import com.course.api.service.Impl.MenuServiceImpl; import com.course.api.service.Impl.RoleServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/menu") public class MenuController { @Autowired MenuServiceImpl menuService; @Autowired RoleServiceImpl roleService; @Autowired RoleMenuMapper roleMenuMapper; /** * 获取菜单信息 * @param name * @return */ @GetMapping("/getTreeMenu") public Result getTreeMenu(@RequestParam(defaultValue = "") String name) { return Results.success(menuService.selectTreeMenu(name)); } /** * 添加菜单 * @param menu * @return */ @PostMapping("/add") public Result add(@RequestBody Menu menu) { return Results.success(menuService.save(menu)); } /** * 编辑菜单 * @param menu * @return */ @PutMapping("/update") public Result update(@RequestBody Menu menu) { return Results.success(menuService.updateById(menu)); } /** * 删除菜单 * @param id * @return */ @DeleteMapping("/delete/{id}") public Result remove(@PathVariable(value = "id") Long id) { return Results.success(menuService.removeById(id)); } /** * 获取对应角色的路由信息 * @param userType * @return */ @GetMapping("/getRouteList") public Result getRouteList(@RequestParam String userType) { Long roleId = roleService.selectRoleId(userType); List<Long> menuIds = roleMenuMapper.selectByRoleId(roleId); List<Menu> menus = menuService.selectTreeMenu(""); // 对查出的所有菜单针对对应角色进行过滤 List<Menu> roleMenu = menuService.filterMenu(menus, menuIds); return Results.success(roleMenu); } }
五,项目总结
本系统基于前后端分离开发实现,界面设计简洁大方,人机交互方便,适合做课程设计与毕业设计。