技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。
🍅文末获取源码联系🍅
🍅文末获取源码联系🍅
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
《课程设计专栏》
《Java专栏》
《Python专栏》
⛺️心若有所向往,何惧道阻且长
文章目录
- 一、运行环境要求
- 二、开发工具推荐
- 后端开发工具:
- 前端开发工具:
- 三、技术框架剖析
- 四、适用场景
- 五、功能说明
- 管理员角色功能:
- 用户角色功能:
- 六、项目运行与环境配置
- 环境配置:
- 项目启动:
- 七、功能页面展示
- 八、部分代码展示
在当下数字化浪潮席卷各个领域的时代,宠物爱好者对于便捷、全面的宠物服务平台的需求日益凸显。今天,我们将深入探讨一款基于 JavaWeb 的 Spring Boot 宠物平台系统,其凭借先进的技术架构,为宠物领域构建了一个功能丰富的生态环境。接下来,我们将从运行环境、开发工具、技术框架、功能模块以及使用说明等多个方面,全方位剖析这个宠物平台项目。
一、运行环境要求
Java 环境:本宠物平台系统依托 Java≥8 的运行环境。Java 8 及其后续版本引入了诸多强大特性,极大地提升了开发效率与代码质量。Lambda 表达式使得代码逻辑更为简洁,开发者能够以更直观的方式处理集合操作和事件驱动编程。在处理用户收藏的宠物信息列表时,借助 Lambda 表达式可轻松实现对收藏内容的筛选、排序等操作。
Stream API 则为高效处理数据流提供了有力支持,在分析用户浏览宠物记录、精准推送相关信息时,能够便捷地进行数据过滤、映射和聚合,确保系统在 Java 平台上稳定且高效地运行。
数据库:选用 MySQL≥5.7 作为数据存储的根基。MySQL 凭借其开源、高性能、可靠性以及庞大的生态系统,在全球各类项目中广泛应用。在宠物平台系统中,它肩负着存储用户信息(涵盖注册登录信息、用户偏好设置等)、宠物信息(包括宠物种类、名称、年龄、健康状况等)、宠物分类信息、领养申请数据、捐赠信息等关键数据的重任。通过其高效的索引机制和事务处理能力,保障了数据的快速读写与一致性,为平台的各项功能提供坚实的数据支撑。
Node.js 环境:Node.js≥14 在本项目中占据关键地位,尤其是在前后端分离架构中,它充当着连接前端 Vue 与后端 Spring Boot 的核心桥梁。Node.js 基于 Chrome V8 引擎构建,采用事件驱动、非阻塞 I/O 模型,使其具备出色的性能,能够快速处理大量并发请求。在宠物平台中,Node.js 主要负责协调前后端的数据交互,例如通过 Express 框架搭建接口服务,实现前端页面与后端服务的无缝对接。当用户在前端请求查看宠物详细信息时,Node.js 能迅速将请求转发给后端,获取数据并返回给前端,显著提升系统的响应速度与用户体验。需要着重指出的是,鉴于 Node.js 在前后端分离项目中的关键作用,对于尚未掌握 Node.js 的开发者而言,贸然涉足此类项目开发可能会面临诸多挑战。
二、开发工具推荐
后端开发工具:
Eclipse:作为一款经典的开源集成开发环境(IDE),Eclipse 拥有丰富的插件资源,能够全方位满足 Java 开发的多样化需求。在开发宠物平台后端时,开发者可借助其强大的代码编辑功能,如代码自动补全、语法高亮显示、代码导航等,显著提高编码效率。同时,其内置的调试工具和项目管理功能,方便对项目进行构建、部署和调试,助力高效完成代码编写与系统搭建工作。
IntelliJ IDEA:以智能代码补全、强大的代码分析和重构功能闻名。对于像宠物平台这样的复杂项目,IDEA 能够精准识别代码中的潜在问题,并提供针对性的优化建议。在处理大量宠物数据的业务逻辑时,IDEA 的代码分析功能可帮助开发者发现性能瓶颈,通过重构功能对代码进行优化,大幅提高开发效率,让开发者能够更专注于业务逻辑的实现。
MyEclipse:专为 JavaEE 开发打造的 IDE,集成了众多企业级开发工具与框架支持。在开发宠物平台后端时,MyEclipse 提供了便捷的 Web 项目开发环境,支持热部署、可视化的 JSP 编辑器等功能,方便进行 Web 项目的开发、部署与调试,为开发者提供一站式开发体验,减少开发过程中的繁琐配置工作。
STS(Spring Tool Suite):专门针对 Spring 框架开发的 IDE,对 Spring 相关技术支持卓越。鉴于宠物平台采用了 Spring Boot 框架,STS 在项目创建、配置及开发过程中,能够提供便捷操作与智能提示。在创建 Spring Boot 项目时,STS 可自动生成项目骨架,配置好基本依赖项,大大缩短项目搭建时间,加速开发进程。
前端开发工具:
WebStorm:作为专业的 JavaScript 开发工具,对前端各类技术支持完善,具备强大的代码智能提示与重构功能。在开发宠物平台前端 Vue 部分时,WebStorm 能准确识别 Vue 组件的语法和属性,提供智能代码补全和错误提示。同时,其重构功能可帮助开发者轻松优化 Vue 组件结构,提高代码的可维护性与复用性,助力高效编写代码,提升开发效率。
VSCode:凭借轻量化、开源以及丰富的插件生态深受开发者喜爱。在宠物平台前端开发中,开发者可根据自身需求定制开发环境。通过安装 ESLint 插件实现代码格式化和语法检查,确保代码风格的一致性和规范性;安装 Vue.js 相关插件,为 Vue 开发提供语法高亮、代码片段等功能,提高开发质量。
HBuilderX:在 HTML5 开发方面表现出色,对移动应用开发支持良好,内置丰富的组件库。在开发宠物平台前端时,可借助其丰富组件快速搭建页面,提升开发速度。利用其内置的图片展示组件、列表组件等,能够快速实现宠物信息展示页面、领养申请页面等,减少前端开发的工作量。
三、技术框架剖析
Spring Boot:作为核心框架,Spring Boot 极大地简化了 Spring 应用的开发过程。通过自动配置和起步依赖等特性,摒弃了大量繁琐的 XML 配置工作,使开发者能够快速搭建出稳定的后端服务。在宠物平台中,Spring Boot 负责处理业务逻辑,如用户登录注册验证、宠物信息管理、领养申请处理、捐赠流程管理等;管理数据库连接,确保与 MySQL 数据库的高效交互;提供接口服务,与前端 Vue 进行数据通信。例如,通过 Spring Boot 的自动配置,开发者无需手动配置数据库连接池、事务管理器等,即可快速搭建起一个功能完备的后端服务。
MyBatis - Plus:在数据库操作方面,MyBatis - Plus 在 MyBatis 的基础上进行了增强。它提供了更强大的 CRUD 操作功能,通过简单的配置和方法调用,即可实现对数据库的高效访问。开发者可根据业务需求编写自定义 SQL 语句,精准实现数据的增删改查操作,提高数据访问的灵活性与性能。在宠物平台中,MyBatis - Plus 负责将后端业务逻辑与数据库进行交互,如查询宠物信息、获取领养申请列表等,确保数据的正确存储与读取。
Vue.js:前端采用 Vue.js 框架,具有轻量级、高效的特点。Vue.js 通过组件化开发模式,将页面拆分成一个个可复用的组件,便于代码的维护与扩展。在宠物平台前端,Vue.js 实现了用户界面的构建,包括宠物信息展示界面、领养申请界面、用户个人中心界面等。将宠物展示组件独立封装,方便在不同页面中复用,同时通过 Vue.js 的响应式原理,实现宠物信息的实时更新,为用户带来流畅的浏览体验。
ElementUI:作为一款基于 Vue.js 的前端 UI 框架,ElementUI 提供了丰富的组件库,如按钮、表单、表格、导航栏等。在宠物平台前端开发中,使用 ElementUI 能够快速搭建出美观、易用的用户界面,减少前端开发的工作量。通过使用 ElementUI 的组件,能够统一页面风格,提升用户体验。
四、适用场景
课程设计:对于计算机相关专业的学生而言,这款宠物平台系统是绝佳的课程设计案例。学生参与系统开发,能够深入理解 JavaWeb 技术栈在实际项目中的应用,掌握软件开发从需求分析、设计、编码到测试部署的全流程,提升编程能力和项目实践经验。在开发过程中,学生可以学习如何使用 Spring Boot 构建后端服务、Vue.js 开发前端界面、MyBatis - Plus 进行数据库操作等,将课堂所学知识应用到实际项目中。
大作业:作为课程大作业,学生在教师指导下,可对系统进行功能扩展或优化。这不仅能巩固所学知识,还能培养创新能力与团队协作能力。学生可以尝试增加个性化宠物推荐算法、社交互动功能等,或者优化系统的性能。通过团队协作完成大作业,学生能够学会如何分工合作、沟通协调,提高解决实际问题的能力。
毕业设计:对于即将毕业的学生,将宠物平台作为毕业设计项目,能够全面展示大学期间所学知识与技能。从需求分析、系统设计、编码实现到测试部署,整个过程锻炼学生解决实际问题的能力,为步入职场做好准备。在毕业设计中,学生需要深入研究用户需求,设计合理的系统架构,实现高效的算法和稳定的功能,通过撰写毕业设计论文,总结项目经验,为未来的职业发展打下坚实基础。
项目练习:无论是开发新手还是有一定经验的开发者,都可将该系统作为项目练习对象。通过搭建、学习和改造系统,加深对 JavaWeb 技术栈的理解,提升自身开发水平。对于开发新手来说,可以从基础功能入手,逐步掌握各个技术的使用方法;对于有经验的开发者,可以尝试对系统进行性能优化、功能扩展等,挑战更高难度的技术问题,提升自己的技术能力。
学习演示:在教学过程中,教师可将宠物平台作为学习演示案例,向学生展示如何运用多种技术构建完整的应用系统,帮助学生更好地理解课程知识,激发学习兴趣。在讲解 JavaWeb 开发时,教师可以通过展示该系统的开发过程,详细介绍 Spring Boot、Vue.js、MyBatis - Plus 等技术的应用场景和使用方法,让学生更加直观地感受技术的魅力,提高学习效果。
五、功能说明
管理员角色功能:
登录与个人中心:管理员通过登录进入系统,在个人中心可进行个人信息管理、密码修改等操作。
用户管理:对平台用户信息进行全面管理,包括查看用户注册信息、登录记录,对异常账号进行处理,如封禁违规账号、重置用户密码等,维护平台的正常秩序。
宠物分类管理:对宠物的种类进行分类设置和管理,方便用户快速查找不同类型的宠物。可添加新的宠物分类、编辑现有分类信息、删除不再使用的分类。
宠物科普管理:发布和管理宠物科普知识内容,如宠物饲养技巧、疾病预防知识等。管理员可对科普文章进行添加、修改、删除操作,确保科普信息的准确性和及时性。
宠物信息管理:对平台上的宠物信息进行录入、编辑和删除操作。包括宠物的基本信息(如品种、年龄、性别等)、健康状况、照片等。审核新上传的宠物信息,确保信息真实有效。
领养申请管理:处理用户提交的领养申请,查看申请详情,包括申请人信息、申请领养的宠物信息、申请理由等。对申请进行审核,决定是否批准领养,并及时反馈给申请人。
爱心捐赠管理:管理平台的爱心捐赠项目,包括捐赠项目的创建、编辑、删除。查看捐赠记录,对捐赠资金和物资进行统计和管理。
捐赠信息管理:对用户的捐赠信息进行详细记录和管理,确保捐赠流程透明化。可查询捐赠者信息、捐赠金额、捐赠时间等。
宠物救助管理:发布宠物救助信息,组织宠物救助活动。管理救助过程中的相关信息,如救助宠物的情况、救助进度等。
宠物论坛管理:对宠物论坛进行管理,审核用户发布的帖子,删除违规内容,维护论坛的良好秩序。可置顶重要帖子,促进用户之间的交流。
社区留言板管理:查看和回复用户在社区留言板的留言,收集用户的意见和建议,及时解决用户问题。
系统管理:对系统的基本设置进行管理,如系统参数配置、数据备份与恢复等。保障系统的稳定运行。
用户角色功能:
注册与登录:新用户通过注册功能创建账号,填写必要信息,如用户名、密码、邮箱等。注册成功后,可通过输入用户名和密码登录系统。同时,支持第三方账号登录,如微信、QQ 登录,方便用户快速登录使用。
个人中心管理:用户登录后,在个人中心可查看和修改个人信息,如昵称、性别、联系方式等。还能管理自己的收藏内容、查看个人的领养申请记录、捐赠记录等。
美食鉴赏管理:用户可以发布自己对宠物美食的鉴赏内容,分享宠物食品的使用体验、评价等。同时,也能查看其他用户发布的美食鉴赏信息,进行互动交流。
好友管理:添加、删除好友,查看好友列表。与好友进行私信交流,分享宠物相关的经验和趣事。
收藏管理:将感兴趣的宠物信息、宠物科普文章、美食鉴赏内容等收藏到个人收藏夹中,方便随时查看。收藏夹支持分类管理,用户可自定义收藏夹名称,将收藏的内容进行分类整理。
个人信息管理:完善个人的宠物相关信息,如自己饲养的宠物种类、数量等。设置个人的偏好,如关注的宠物类型、感兴趣的宠物话题等。
美食鉴赏发布与管理:用户可发布新的宠物美食鉴赏内容,对已发布的内容进行编辑、删除操作。还能查看自己发布内容的浏览量、点赞数、评论数等数据。
六、项目运行与环境配置
环境配置:
JDK 安装:下载并安装 JDK1.8,配置系统环境变量中的 JAVA_HOME,使其指向 JDK 安装目录。同时,在 PATH 环境变量中添加 JDK 的 bin 目录路径,确保在命令行中能够执行 Java 相关命令。
MySQL 安装与配置:安装 MySQL 数据库,创建用于存储宠物平台数据的数据库实例,并配置好数据库用户名、密码等信息。在项目的配置文件中,正确填写数据库连接信息,包括数据库地址、端口号、数据库名称、用户名和密码等,确保后端服务能够与 MySQL 数据库正常交互。
前端开发工具安装:根据个人喜好选择 WebStorm、VSCode 或 HBuilderX 等前端开发工具进行安装。安装完成后,打开工具并配置好相关的开发环境,如安装 Vue.js 插件、配置代码格式化工具等,为前端开发做好准备。
后端开发工具安装:选择 Eclipse、IntelliJ IDEA、MyEclipse 或 STS 等后端开发工具进行安装。安装完成后,导入宠物平台项目,配置好项目的运行环境,包括 JDK 版本、Maven 设置等,确保能够正常运行和调试后端代码。
项目启动:
数据库准备:使用 Navicat 或者其他数据库管理工具,在 MySQL 中创建与项目 sql 文件名称对应的数据库,并导入项目的 sql 文件,初始化数据库表结构和初始数据。
项目导入与构建:使用 IDEA、Eclipse 或 MyEclipse 导入项目,导入成功后,在开发工具的命令行中执行 maven clean;maven install 命令,下载项目所需的依赖包,并构建项目。
数据库配置修改:将项目中 application.yml 配置文件中的数据库配置部分,修改为自己实际的数据库连接信息,确保项目能够正确连接到数据库。
项目运行:运行项目,在浏览器中输入相应地址:
前台地址:http://localhost:8080/springboot3148x/front/dist/index.html 。用户可使用 “用户账号 1”,密码 “123456” 登录前台系统,体验各项用户功能。
后台地址:http://localhost:8080/springboot3148x/admin/dist/index.html#/login 。管理员使用账号 “admin”,密码 “admin” 登录后台系统,进行系统管理操作。用户也可使用 “用户账号 1”,密码 “123456” 登录后台查看个人相关信息(部分权限受限)。
注意事项:项目文件路径中不能含有中文、空格、特殊字符等,否则在图片上传等操作时可能会出现上传不成功的问题。在开发和部署过程中,请严格遵守这一要求,确保项目的正常运行。
这款基于 Spring Boot 的宠物平台系统,凭借其完善的功能、先进的技术框架和广泛的适用场景,为宠物爱好者和开发者都带来了独特的价值。无论是为宠物爱好者提供便捷的服务,还是为开发者提供学习实践的平台,都具有重要意义。
七、功能页面展示
八、部分代码展示
管理员用户管理控制层
@Controller
@RequestMapping("admin/user")
public class adminUserController {@AutowiredUserService userService;@AutowiredPostMapper postMapper;@AutowiredShareMapper shareMapper;@AutowiredSponsorMapper sponsorMapper;@GetMapping("")public String write(Model model, HttpSession session,@RequestParam(value = "page", defaultValue = "1") int page,@RequestParam(value = "limit", defaultValue = "12") int limit) {model.addAttribute("info", userService.queryUserAll(page, limit));return "admin/admin_user";}@GetMapping("delete")public String deleteUser(@RequestParam("userId") int userId) {User user = userService.queryUserById(userId);if (user.getUserPhone().equals("1111")) {return "redirect:/admin/user";}postMapper.deletePostByPhone(user.getUserPhone());shareMapper.deleteShareByPhone(user.getUserPhone());sponsorMapper.deleteSponsorByPhone(user.getUserPhone());userService.deleteUser(userId);return "redirect:/admin/user";}
}此部分代码定义了管理员用户管理的控制层。adminUserController类处理与管理员操作相关的用户请求。write方法用于查询所有用户信息并将其传递给视图admin/admin_user,支持分页功能。deleteUser方法负责删除用户,在删除前会检查用户的手机号码,若为1111则不进行删除操作,否则删除该用户相关的帖子、分享、赞助信息,并最终删除用户本身。
详情管理控制层
@Controller
@RequestMapping("details")
public class detailsController {@AutowiredIndexService indexService;@AutowiredNoticeService noticeService;@AutowiredDetailsService detailsService;@AutowiredPostService postService;@AutowiredSponsorService sponsorService;@AutowiredShareService shareService;@AutowiredCommentMapper commentMapper;@AutowiredHttpSession session;@AutowiredReportService reportService;@AutowiredSentenceService sentenceService;@GetMappingpublic String index(Model model, Integer id, String status) {int i = -1;if (status.equals(IndexFrom.Post.getDesc())) {i = 0;} else if (status.equals(IndexFrom.Share.getDesc())) {i = 1;} else if (status.equals(IndexFrom.Sponsor.getDesc())) {i = 2;}session.setAttribute(CatConst.USER_DETAILS_STATUS, i);session.setAttribute(CatConst.USER_DETAILS_CODE, id);model.addAttribute("comments", detailsService.findComment(i, id));detailsService.addCount(id, i);model.addAttribute("count", commentMapper.queryCount1(id, i));model.addAttribute("recommends", detailsService.findRecommends(i));IndexVo info = detailsService.findDetails(id, i);model.addAttribute("info", info);model.addAttribute("url", TitleUtil.getUrl());List indexMax = indexService.findMaxCount();List notices = noticeService.queryNotice();model.addAttribute("notices", notices);model.addAttribute("indexMax", indexMax);Sentence sentence = sentenceService.findSentence();model.addAttribute("sentence", sentence);return "details";}@PostMapping("interceptor/addComment")public String comment(String comment, Model model) {int i = (int) session.getAttribute(CatConst.USER_DETAILS_STATUS);int id = (int) session.getAttribute(CatConst.USER_DETAILS_CODE);User user = (User) session.getAttribute("user_session");Comment comment1 = new Comment();comment1.setCommentContent(comment);comment1.setCommentPhone(user.getUserPhone());comment1.setCommentCreatetime(new Date());comment1.setCommentPsId(id);comment1.setCommentSource(i);commentMapper.addComment(comment1);model.addAttribute("comments", detailsService.findComment(i, id));detailsService.addCount(id, i);model.addAttribute("count", commentMapper.queryCount1(id, i));model.addAttribute("recommends", detailsService.findRecommends(i));IndexVo info = detailsService.findDetails(id, i);model.addAttribute("info", info);List indexMax = indexService.findMaxCount();List notices = noticeService.queryNotice();model.addAttribute("notices", notices);model.addAttribute("indexMax", indexMax);Sentence sentence = sentenceService.findSentence();model.addAttribute("sentence", sentence);model.addAttribute("url", TitleUtil.getUrl());return "details";}@PostMapping("interceptor/report")public String report(String reason, Model model) {int i = (int) session.getAttribute(CatConst.USER_DETAILS_STATUS);int id = (int) session.getAttribute(CatConst.USER_DETAILS_CODE);User user = (User) session.getAttribute("user_session");if (reason.equals("") == false) {Report report = new Report();report.setReportUser(user.getUserNickname());report.setReportCreatetime(new Date());report.setReportContent(reason);if (i == 0) {report.setReportFrom("启示");}if (i == 1) {report.setReportFrom("分享");}if (i == 2) {report.setReportFrom("赞助");}report.setReportFromId(id);reportService.addReport(report);}model.addAttribute("comments", detailsService.findComment(i, id));detailsService.addCount(id, i);model.addAttribute("recommends", detailsService.findRecommends(i));IndexVo info = detailsService.findDetails(id, i);model.addAttribute("info", info);List indexMax = indexService.findMaxCount();List notices = noticeService.queryNotice();model.addAttribute("notices", notices);model.addAttribute("indexMax", indexMax);Sentence sentence = sentenceService.findSentence();model.addAttribute("sentence", sentence);model.addAttribute("url", TitleUtil.getUrl());return "details";}
}这部分是详情管理控制层代码。detailsController类处理与详情页面相关的请求。index方法根据传入的status参数确定详情类型(帖子、分享或赞助),设置相关会话属性,查询评论、详情信息、推荐内容等并传递给视图details。comment方法用于添加评论,report方法用于提交举报信息,这两个方法在执行相应操作后都会重新查询相关数据并返回details视图。
登录管理控制层
@Controller
@RequestMapping("")
public class loginController {@AutowiredUserService userService;@GetMapping(value = {"/login"})public String login() {return "login";}@GetMapping("reBack")public String reBack(HttpSession session) {String url = (String) session.getAttribute("user_old_url");if (url == null) {url = "/";}return "redirect:" + url;}@GetMapping(value = {"login1"})public String login1(@RequestParam(value = "userUrl") String userUrl, HttpSession session) {if (userUrl != null) {session.setAttribute(CatConst.USER_SESSION_URL, userUrl);}return "login";}@PostMapping("login/getLogin")@ResponseBodypublic LoginResult getLogin(@RequestParam(value = "phone") String phone,@RequestParam(value = "password") String password, HttpSession session) {User user = userService.queryByPhone(phone);if (user != null) {if (user.getUserPassword().equals(MD5Util.getMD5(password))) {session.setAttribute(CatConst.USER_SESSION_KEY, user);if (user.getUserPhone().equals("1111")) {session.setAttribute(CatConst.USER_SESSION_administrators, user.getUserPhone());}return new LoginResult(true, "登录成功");} else {return new LoginResult(false, "密码错误");}} else {return new LoginResult(false, "用户名错误");}}@PostMapping("/login/register")@ResponseBodypublic JsonResult register(User user, @RequestParam(value = "userCode") String userCode, HttpSession session) {String code = session.getAttribute(CatConst.USER_SESSION_CODE).toString();if (code.equals(userCode)) {if (userService.queryByPhone(user.getUserPhone()) != null) {return new JsonResult(false, "电话号码已经注册!");} else {user.setUserPassword(MD5Util.getMD5(user.getUserPassword()));user.setUserCreatetime(new Date());user.setUserUrl(TitleUtil.getUrl());int i = userService.addUser(user);if (i == 1) {session.removeAttribute(CatConst.USER_SESSION_CODE);return new JsonResult(true, "注册成功!");} else {return new JsonResult(false, "注册失败!");}}} else {return new JsonResult(false, "验证码错误!");}}@PostMapping("login/updatePassword")@ResponseBodypublic JsonResult updatePassword(@RequestParam(value = "userPhone") String userPhone,@RequestParam(value = "userCode") String userCode,@RequestParam(value = "userPassword") String userPassword, HttpSession session) {String code = session.getAttribute(CatConst.USER_SESSION_CODE).toString();if (code.equals(userCode)) {int i = userService.updateUserPhone(MD5Util.getMD5(userPassword), userPhone);if (i == 1) {session.removeAttribute(CatConst.USER_SESSION_CODE);return new JsonResult(true, "密码更新成功!");} else {return new JsonResult(false, "密码更新失败!");}} else {return new JsonResult(false, "验证码错误!");}}@PostMapping("login/getCode")@ResponseBodypublic JsonResult getCode(@RequestParam(value = "userPhone") String userPhone, HttpSession session) {DuanxinService duanxinService = new DuanxinService();// int code = duanxinService.duanXin(userPhone);session.setAttribute(CatConst.USER_SESSION_CODE, "1234");return new JsonResult(true, "发送成功");}
}```c
@Controller
@RequestMapping("")
public class loginController {@AutowiredUserService userService;@GetMapping(value = {"/login"})public String login() {return "login";}@GetMapping("reBack")public String reBack(HttpSession session) {String url = (String) session.getAttribute("user_old_url");if (url == null) {url = "/";}return "redirect:" + url;}@GetMapping(value = {"login1"})public String login1(@RequestParam(value = "userUrl") String userUrl, HttpSession session) {if (userUrl != null) {session.setAttribute(CatConst.USER_SESSION_URL, userUrl);}return "login";}@PostMapping("login/getLogin")@ResponseBodypublic LoginResult getLogin(@RequestParam(value = "phone") String phone,@RequestParam(value = "password") String password, HttpSession session) {User user = userService.queryByPhone(phone);if (user != null) {if (user.getUserPassword().equals(MD5Util.getMD5(password))) {session.setAttribute(CatConst.USER_SESSION_KEY, user);if (user.getUserPhone().equals("1111")) {session.setAttribute(CatConst.USER_SESSION_administrators, user.getUserPhone());}return new LoginResult(true, "登录成功");} else {return new LoginResult(false, "密码错误");}} else {return new LoginResult(false, "用户名错误");}}@PostMapping("/login/register")@ResponseBodypublic JsonResult register(User user, @RequestParam(value = "userCode") String userCode, HttpSession session) {String code = session.getAttribute(CatConst.USER_SESSION_CODE).toString();if (code.equals(userCode)) {if (userService.queryByPhone(user.getUserPhone()) != null) {return new JsonResult(false, "电话号码已经注册!");} else {user.setUserPassword(MD5Util.getMD5(user.getUserPassword()));user.setUserCreatetime(new Date());user.setUserUrl(TitleUtil.getUrl());int i = userService.addUser(user);if (i == 1) {session.removeAttribute(CatConst.USER_SESSION_CODE);return new JsonResult(true, "注册成功!");} else {return new JsonResult(false, "注册失败!");}}} else {return new JsonResult(false, "验证码错误!");}}@PostMapping("login/updatePassword")@ResponseBodypublic JsonResult updatePassword(@RequestParam(value = "userPhone") String userPhone,@RequestParam(value = "userCode") String userCode,@RequestParam(value = "userPassword") String userPassword, HttpSession session) {String code = session.getAttribute(CatConst.USER_SESSION_CODE).toString();if (code.equals(userCode)) {int i = userService.updateUserPhone(MD5Util.getMD5(userPassword), userPhone);if (i == 1) {session.removeAttribute(CatConst.USER_SESSION_CODE);return new JsonResult(true, "密码更新成功!");} else {return new JsonResult(false, "密码更新失败!");}} else {return new JsonResult(false, "验证码错误!");}}@PostMapping("login/getCode")@ResponseBodypublic JsonResult getCode(@RequestParam(value = "userPhone") String userPhone, HttpSession session) {DuanxinService duanxinService = new DuanxinService();// int code = duanxinService.duanXin(userPhone);session.setAttribute(CatConst.USER_SESSION_CODE, "1234");return new JsonResult(true, "发送成功");}
}