
联系博主源码获取 / 项目咨询 / 首页置顶链接 点我进入源码获取 / 项目咨询 / 首页置顶链接 点我进入源码获取 / 项目咨询 / 首页置顶链接 点我进入摘要随着我国高等教育规模的持续扩大和信息化建设的不断推进传统的校园服务管理模式已难以满足当代大学生多元化、便捷化的生活需求。在校大学生面临着信息获取分散、事务办理流程繁琐、资源共享渠道有限等诸多痛点如失物招领效率低下、故障维修响应滞后、校园资讯传播渠道单一等问题日益突出。针对上述现状本文设计并实现了一套基于SpringBoot与Vue前后端分离架构的校园服务平台系统旨在为高校师生打造一个集信息发布、互动交流、生活服务于一体的综合性智慧校园服务平台。本系统采用前后端分离的设计思想后端基于SpringBoot 2.2.5框架搭建整合MyBatis-Plus持久层框架实现数据访问采用Redis作为缓存中间件提升系统响应速度并引入Druid数据库连接池优化数据源管理前端使用Vue 2.x框架配合Vue Router实现单页面路由管理结合Element UI组件库构建规范化的用户界面。系统主要功能模块包括用户注册与登录、个人中心管理、校园论坛交流、文章资讯发布、失物招领、故障维修申报、表白墙互动、校外玩乐推荐、学校公告通知、评论管理、轮播图配置等同时支持管理员后台对用户、论坛、文章、分类等数据进行统一管理。系统还集成了WebSocket实时通信、支付宝支付SDK、百度AI接口等扩展能力为后续功能迭代预留了良好的扩展性。经测试该系统运行稳定界面友好交互流畅各功能模块均能按照预期业务流程正常运行。相较于传统的校园管理模式本平台有效整合了分散的校园服务资源显著提升了信息传播效率和事务处理效率为构建和谐、便捷、高效的智慧校园生态提供了有力的技术支撑具有较高的实际应用价值和推广意义。关键词校园服务平台SpringBootVue前后端分离智慧校园MyBatis-Plus关键代码package com.project.demo.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.project.demo.entity.AccessToken; import com.project.demo.entity.User; import com.project.demo.entity.UserGroup; import com.project.demo.service.UserGroupService; import com.project.demo.service.UserService; import com.project.demo.controller.base.BaseController; import com.project.demo.util.RsaUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.time.Duration; import java.util.*; /** * 用户账户用于保存用户登录信息(User)表控制层 */ Slf4j RestController RequestMapping(user) public class UserController extends BaseControllerUser, UserService { /** * 服务对象 */ Autowired public UserController(UserService service) { setService(service); } Autowired private UserGroupService userGroupService; Autowired private RedisTemplate redisTemplate; /** * 注册 * param user * return */ PostMapping(register) public MapString, Object signUp(RequestBody User user) { // 查询用户 MapString, String query new HashMap(); MapString,Object map JSON.parseObject(JSON.toJSONString(user)); query.put(username,user.getUsername()); List list service.selectBaseList(service.select(query, new HashMap())); if (list.size()0){ return error(30000, 用户已存在); } map.put(password,service.encryption(String.valueOf(map.get(password)))); service.insert(map); return success(1); } /** * 找回密码 * param form * return */ PostMapping(forget_password) public MapString, Object forgetPassword(RequestBody User form,HttpServletRequest request) { JSONObject ret new JSONObject(); String username form.getUsername(); String code form.getCode(); String password form.getPassword(); // 判断条件 if(code null || code.length() 0){ return error(30000, 验证码不能为空); } if(username null || username.length() 0){ return error(30000, 用户名不能为空); } if(password null || password.length() 0){ return error(30000, 密码不能为空); } // 查询用户 MapString, String query new HashMap(); query.put(username,username); List list service.selectBaseList(service.select(query, service.readConfig(request))); if (list.size() 0) { User o (User) list.get(0); JSONObject query2 new JSONObject(); JSONObject form2 new JSONObject(); // 修改用户密码 query2.put(user_id,o.getUserId()); form2.put(password,service.encryption(password)); service.update(query, service.readConfig(request), form2); return success(1); } return error(70000,用户不存在); } /** * 登录 * param data * param httpServletRequest * return */ PostMapping(login) public MapString, Object login(RequestBody MapString, String data, HttpServletRequest httpServletRequest) { log.info([执行登录接口]); String username data.get(username); String email data.get(email); String phone data.get(phone); String password data.get(password); try { password RsaUtils.decryptByPrivateKey(password); }catch (Exception e){ return error(30000,解密失败); } List resultList null; MapString, String map new HashMap(); if(username ! null .equals(username) false){ map.put(username, username); resultList service.selectBaseList(service.select(map, new HashMap())); } else if(email ! null .equals(email) false){ map.put(email, email); resultList service.selectBaseList(service.select(map, new HashMap())); } else if(phone ! null .equals(phone) false){ map.put(phone, phone); resultList service.selectBaseList(service.select(map, new HashMap())); }else{ return error(30000, 账号或密码不能为空); } if (resultList null || password null) { return error(30000, 账号或密码不能为空); } //判断是否有这个用户 if (resultList.size()0){ return error(30000,用户不存在); } User byUsername (User) resultList.get(0); MapString, String groupMap new HashMap(); groupMap.put(name,byUsername.getUserGroup()); List groupList userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap())); if (groupList.size()1){ return error(30000,用户组不存在); } UserGroup userGroup (UserGroup) groupList.get(0); //查询用户审核状态 if (!StringUtils.isEmpty(userGroup.getSourceTable())){ String res service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId()); if (resnull){ return error(30000,用户不存在); } if (!res.equals(已通过)){ return error(30000,该用户审核未通过); } } //查询用户状态 if (byUsername.getState()!1){ return error(30000,用户非可用状态不能登录); } String face data.get(is_face); String md5password service.encryption(password); if (!StringUtils.isEmpty(face) face.equals(face)){ if (byUsername.getPassword().equals(md5password)) { // 返回用户信息 JSONObject user JSONObject.parseObject(JSONObject.toJSONString(byUsername)); JSONObject ret new JSONObject(); ret.put(obj,user); return success(ret); } else { return error(30000, 账号或密码不正确); } }else { if (byUsername.getPassword().equals(md5password)) { // 存储Token到数据库 AccessToken accessToken new AccessToken(); accessToken.setToken(UUID.randomUUID().toString().replaceAll(-, )); accessToken.setUser_id(byUsername.getUserId()); Duration duration Duration.ofSeconds(7200L); redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration); // 返回用户信息 JSONObject user JSONObject.parseObject(JSONObject.toJSONString(byUsername)); user.put(token, accessToken.getToken()); JSONObject ret new JSONObject(); ret.put(obj,user); return success(ret); } else { return error(30000, 账号或密码不正确); } } } /** * 修改密码 * param data * param request * return */ PostMapping(change_password) public MapString, Object change_password(RequestBody MapString, String data, HttpServletRequest request){ // 根据Token获取UserId String token request.getHeader(x-auth-token); Integer userId tokenGetUserId(token); // 根据UserId和旧密码获取用户 MapString, String query new HashMap(); String o_password data.get(o_password); query.put(user_id ,String.valueOf(userId)); query.put(password ,service.encryption(o_password)); int count service.selectBaseCount(service.count(query, service.readConfig(request))); if(count 0){ // 修改密码 MapString,Object form new HashMap(); form.put(password,service.encryption(data.get(password))); service.update(query,service.readConfig(request),form); return success(1); } return error(10000,密码修改失败); } /** * 登录态 * param request * return */ GetMapping(state) public MapString, Object state(HttpServletRequest request) { JSONObject ret new JSONObject(); // 获取状态 String token request.getHeader(x-auth-token); // 根据登录态获取用户ID Integer userId tokenGetUserId(token); log.info([返回userId] {},userId); if(userId null || userId 0){ return error(10000,用户未登录!); } // 根据用户ID获取用户 MapString,String query new HashMap(); query.put(user_id ,String.valueOf(userId)); // 根据用户ID获取 List resultList service.selectBaseList(service.select(query,service.readConfig(request))); if (resultList.size() 0) { JSONObject user JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0))); user.put(token,token); ret.put(obj,user); return success(ret); } else { return error(10000,用户未登录!); } } /** * 登录态 * param request * return */ GetMapping(quit) public MapString, Object quit(HttpServletRequest request) { String token request.getHeader(x-auth-token); try{ redisTemplate.delete(token); }catch (Exception e){ e.printStackTrace(); } return success(退出登录成功); } /** * 获取登录用户ID * param token * return */ public Integer tokenGetUserId(String token) { log.info([获取的token] {},token); // 根据登录态获取用户ID if(token null || .equals(token)){ return 0; } AccessToken byToken (AccessToken) redisTemplate.opsForValue().get(token); if(byToken null){ return 0; } return byToken.getUser_id(); } /** * 重写add * return */ PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { MapString,Object map service.readBody(request.getReader()); map.put(password,service.encryption(String.valueOf(map.get(password)))); service.insert(map); return success(1); } }运行截图技术栈后端框架 Spring Boot Java最主流后端框架开箱即用少写配置快速搭建服务前端框架 Vue 渐进式前端框架组件化开发页面交互流畅数据库 MySQL 关系型数据库按表存数据免费稳定、用得最广持久层框架 MyBatis / MyBatis-Plus 负责Java和数据库之间传数据省去手写大量SQL缓存 Redis 把常用数据放内存读取更快减轻数据库压力构建工具 Maven 自动下载和管理第三方依赖包一键打包项目开发语言 Java (JDK 1.8) 后端用Java编写1.8是主流稳定版本由于篇幅限制获取完整文章或源码、代做项目的本人置顶帖子上方点我进入有CSDN 平台官方提供的学长联系方式的名片。点赞、收藏、关注不迷路