随着烘焙文化的普及,越来越多的烘焙爱好者希望通过在线平台分享与学习烘焙技巧。为了满足这一需求,智能烘焙社区系统应运而生,旨在为用户提供一个集学习、交流与展示的综合平台。该系统通过整合烘焙课程、社区互动、资讯分享等功能,帮助用户提升烘焙技能、交流经验,构建了一个积极互动的烘焙学习和交流空间。
智能烘焙社区系统的功能设计分为两大模块:注册用户端和管理员端。注册用户可以浏览首页、参与烘焙社区交流、查看网站公告与烘焙资讯、学习烘焙课程(包括视频与图文教程)、发布个人博客文章、收藏烘焙知识并管理个人资料。管理员端则负责平台的管理工作,包括用户管理、课程与博客文章的管理、烘焙知识的更新、网站公告发布、社区管理等。管理员可确保平台内容的合规性,并维护社区的秩序与活跃度。
在技术方案方面,系统采用了Java语言和SpringBoot框架作为后端开发工具,确保了系统的高性能和稳定性。前端部分使用Vue框架,使得用户界面响应迅速、交互体验良好。数据库采用MySQL,高效地管理和存储用户信息、课程数据及互动内容。通过SpringBoot的RESTful API与Vue前端进行数据交互,系统能够实现灵活的数据管理与展示,确保各项功能的顺畅运行。
智能烘焙社区系统将成为一个功能全面、操作简便的烘焙学习与交流平台,不仅能够帮助用户提升烘焙技能,还能促进烘焙爱好者之间的互动与经验分享。同时,管理员端的强大管理功能将确保平台内容的及时更新与有效管理,推动系统健康发展,成为一个广受欢迎的在线烘焙教育与社交平台。
Spring Boot Intelligent Baking Community System
Abstract:With the popularization of baking culture, more and more baking enthusiasts hope to share and learn baking techniques through online platforms. In order to meet this demand, the intelligent baking community system has emerged, aiming to provide users with a comprehensive platform for learning, communication, and presentation. The system integrates baking courses, community interaction, information sharing and other functions to help users improve their baking skills, exchange experiences, and build a positive and interactive baking learning and communication space.
The functional design of the intelligent baking community system is divided into two major modules: the registered user end and the administrator end. Registered users can browse the homepage, participate in baking community exchanges, view website announcements and baking information, learn baking courses (including videos and graphic tutorials), publish personal blog articles, collect baking knowledge, and manage personal information. The administrator is responsible for platform management, including user management, course and blog article management, baking knowledge updates, website announcement publishing, community management, etc. Administrators can ensure the compliance of platform content and maintain order and activity in the community.
In terms of technical solutions, the system adopts Java language and SpringBoot framework as backend development tools, ensuring high performance and stability of the system. The front-end part uses the Vue framework, which makes the user interface responsive and provides a good interactive experience. The database uses MySQL to efficiently manage and store user information, course data, and interactive content. By using SpringBoot's RESTful API to interact with Vue frontend, the system can achieve flexible data management and display, ensuring the smooth operation of various functions.
The intelligent baking community system will become a comprehensive and easy-to-use baking learning and communication platform, which can not only help users improve their baking skills, but also promote interaction and experience sharing among baking enthusiasts. At the same time, the powerful management function of the administrator side will ensure timely updates and effective management of platform content, promote the healthy development of the system, and become a popular online baking education and social platform.
Keywords: intelligent baking community system; Java language; Spring Boot framework; MySQL database
目 录
1绪论
1.1课题研究背景及意义
随着互联网技术的快速发展和在线教育的普及,数字化学习平台已成为人们获取知识和技能的重要途径。在烘焙行业,烘焙爱好者日益增多,许多人通过网络学习烘焙技巧、分享经验以及展示创作。传统的烘焙学习方式多依赖于线下课程、书籍和个别的教学视频,虽然能够满足基本需求,但缺乏互动性和系统化的学习路径。同时,烘焙爱好者之间的知识交流和经验分享也多依赖于社交平台,无法形成专门的、集中化的学习与交流空间。为了弥补这些缺陷,构建一个集学习、交流与分享为一体的智能烘焙社区平台显得尤为重要。
该平台不仅可以为用户提供系统化的烘焙课程,还能为用户提供一个便捷的社区交流环境,帮助用户提升烘焙技能、拓宽烘焙视野。因此,设计和实现一个基于现代技术框架的智能烘焙社区系统,不仅满足了市场需求,也具有广阔的应用前景。
研究旨在通过构建一个智能烘焙社区系统,推动烘焙学习与社区交流的数字化进程,填补当前在线烘焙平台在功能与用户体验上的空白。该系统集烘焙知识学习、社区互动、资讯分享于一体,为用户提供一个多维度的互动平台。通过设计合理的课程模块、博客发布和社区讨论区,系统为烘焙爱好者提供了一个便捷的知识获取和交流空间,降低了烘焙学习的门槛,提升了学习效率。同时,系统还为烘焙课程的个性化推荐和技能提升提供了技术支持,有助于用户系统地掌握烘焙技能。通过管理员端的内容审核、用户管理等功能,平台能够有效维护秩序,确保平台内容的合规性与更新及时性。系统的成功实施,不仅能够推动烘焙社区的发展,提升用户的学习体验,还能为类似的在线教育平台提供有益的参考与借鉴。
1.2国内外发展现状分析
近年来,随着国内烘焙行业的快速发展和互联网技术的普及,越来越多的烘焙爱好者开始利用在线平台学习烘焙技巧。国内各大烘焙教育平台逐步兴起,尤其是一些知名的烘焙培训机构,如“烘焙之家”、“麦烘烘”等,已经推出了多种在线烘焙课程。这些平台不仅提供基础的烘焙技能培训,还涵盖了烘焙创意设计、装饰技巧等更高阶的内容。与此同时,越来越多的烘焙社交平台也开始为烘焙爱好者提供交流、展示作品和互动的平台,如“美食杰”、“下厨房”等,这些平台鼓励用户分享自己的烘焙作品和经验,推动了国内烘焙文化的普及与发展。然而,当前国内的在线烘焙平台大多存在内容更新缓慢、缺乏个性化推荐功能、用户体验相对单一等问题,尤其是在如何实现更高效的学习路径规划和更深入的社区互动方面,尚未形成完善的解决方案。因此,构建一个既能提供系统化课程学习、又能增强社区互动的智能烘焙平台,成为当前国内烘焙学习领域的迫切需求。
在国际市场上,烘焙行业的发展同样迅速,尤其是在欧美等地区,烘焙文化有着悠久的历史和广泛的影响力。许多国际知名的烘焙教育平台如“King Arthur Baking School”、“The Great British Bake Off”等,已形成成熟的在线课程体系,提供从入门到专业的全面学习资源。这些平台不仅有系统化的课程,还注重社区建设,烘焙爱好者可以在平台上互相交流、切磋,并参与线上或线下的烘焙比赛,增加了学习的趣味性和互动性。此外,一些平台也采用了个性化推荐系统,根据用户的学习进度和兴趣提供定制化的内容,这大大提升了用户的学习体验和参与度。随着人工智能、大数据技术的不断发展,国外一些烘焙平台还通过智能分析用户行为,为其推荐最适合的课程或技巧。尽管如此,国外的烘焙平台也面临着一定的挑战,如平台内容的多样性不足、部分平台的课程收费较高,且未能在所有层面满足不同用户的需求。
综上所述,国内外的烘焙教育平台都在快速发展,国内市场尚处于快速扩张阶段,存在内容更新慢和个性化推荐等不足;而国外平台则更加注重课程体系和社区互动,但同样面临着内容多样性和收费问题。随着技术的不断进步,智能化、个性化的烘焙学习平台将成为未来的发展趋势。
1.3主要研究内容
本文的主要研究内容包括需求分析、技术方案设计、功能设计和数据库设计四个方面,旨在构建一个智能烘焙社区系统,为烘焙爱好者提供一个集学习、交流和展示的平台。
在需求分析方面,首先明确了系统的目标用户为烘焙爱好者,系统应提供课程学习、互动交流、知识分享等功能。基于用户需求,确定了系统应包含用户端和管理员端两大模块,其中用户端支持课程浏览、社区互动、博客发布等功能,而管理员端则负责用户管理、课程审核、内容发布等后台管理工作。
技术方案设计方面,系统采用Java语言和SpringBoot框架作为后端开发技术,利用Vue框架实现前端交互界面,确保系统的响应速度和良好的用户体验。后端与前端通过RESTful API进行数据交互,采用MySQL数据库进行数据存储,保证了数据的高效管理与查询。
功能设计上,系统包括用户注册与登录、课程学习、社区交流、博客发布、资讯浏览等功能,管理员可以管理用户、审核课程与文章、发布公告等。系统的功能模块通过清晰的设计逻辑与分层架构,实现了高效的用户操作和管理功能。
数据库设计方面,系统通过合理的数据表设计,确保用户信息、课程内容、社区互动等数据的完整性与高效查询,满足系统的稳定性与可扩展性需求。
2相关技术简介
2.1 Java语言
智能烘焙社区系统采用了Java语言作为后端开发的核心技术。Java语言因其跨平台特性和高度灵活性而备受青睐,使系统能够在不同操作系统上稳定运行,并为未来功能的拓展提供可靠的技术支持。同时,采用Spring Boot框架简化了配置,提升了开发效率和系统的稳定性。Java的选择确保了平台具有良好的可扩展性和稳定性,在为智能烘焙社区系统提供技术支持的同时,也为用户提供畅顺的体验。
2.2 SpringBoot 框架
Spring Boot,作为Spring生态系统中一颗璀璨的明星,以其“约定优于配置”的核心理念,极大地简化了Java应用的开发、部署与管理流程。它并非是对Spring框架的颠覆,而是在其基础上进行了深度封装与优化,旨在快速搭建独立的、生产级别的Spring应用。Spring Boot通过自动配置功能,减少了大量繁琐的配置工作,让开发者能够更加专注于业务逻辑的实现。同时,它集成了众多常用库,如数据库连接池、缓存、消息队列等,为系统开发提供了一站式的解决方案。此外,Spring Boot还支持多种部署方式,无论是传统的WAR包部署,还是现代的容器化部署,都能轻松应对。因此,选择Spring Boot作为智能烘焙社区系统的开发框架,不仅能够提升开发效率,还能确保系统的稳定性和可维护性。
2.3 JavaScript脚本语言
JavaScript 是一种广泛应用于网页开发的脚本语言,通常用于提升网页的交互性和动态效果。作为前端开发的核心技术之一,JavaScript 能够在用户与网页互动时实时响应,例如表单验证、动态内容加载、图像切换、菜单显示等。它可以通过与HTML和CSS紧密结合,创建具有动态效果和流畅用户体验的网页。
在智能烘焙社区系统中,JavaScript被广泛应用于页面交互逻辑的实现。例如,内容列表的动态加载、用户输入校验和页面动画效果等,均依赖JavaScript实现。利用AJAX技术,JavaScript可以实现无需刷新页面的异步数据交互,极大提高了用户体验。此外,JavaScript的前端框架(如React、Vue.js等)还能够帮助开发者构建高效、可维护的用户界面,使得智能烘焙社区系统在各种设备上都能流畅运行,满足现代消费者的需求。
2.4 MySQL数据库
MySQL数据库,作为开源关系型数据库管理系统的佼佼者,以其高性能、可靠性、易用性和灵活性,在全球范围内被广泛应用于各类企业级应用中。MySQL采用SQL(结构化查询语言)作为数据操作的标准语言,支持复杂的查询、数据更新、索引优化等功能,确保数据的高效存取和完整性。其强大的事务处理能力,为业务逻辑的原子性、一致性、隔离性和持久性提供了坚实保障。此外,MySQL还具备高度的可配置性和可扩展性,通过优化存储引擎、调整配置参数等手段,可以轻松应对高并发、大数据量的应用场景。在智能烘焙社区系统中,MySQL作为后端数据存储的核心,不仅为系统提供了稳定可靠的数据支持,还通过其丰富的数据操作功能,助力系统实现复杂的业务逻辑和高效的数据管理。
3系统需求分析
3.1系统功能需求分析
智能烘焙社区系统包括注册用户和管理员两个角色。注册用户可浏览首页、参与烘焙社区交流、查看网站公告与烘焙资讯、学习课程(包括视频与图文教程)、发布博客文章、获取烘焙知识并管理个人中心。管理员则负责后台管理,包括用户、课程、博客文章、烘焙知识及资讯的管理,以及课程分类、系统设置、轮播图与敏感词管理等。管理员还负责维护社区秩序、发布公告、统计数据,确保平台内容更新及时,服务顺畅,保障用户体验。
3.1.1 注册用户功能
- 首页:展示系统的最新动态,包括热门课程、推荐烘焙资讯、用户互动与博客文章,帮助用户快速了解平台内容并激发兴趣。
- 烘焙社区(交流论坛):提供一个互动平台,用户可以参与讨论、分享烘焙经验、交流心得、展示成品,并向他人请教问题,促进烘焙爱好者之间的互动与学习。
- 网站公告:集中展示平台发布的最新通知、重要公告和活动信息,确保用户及时了解系统更新、促销活动、社区管理规定等重要内容。
- 烘焙资讯:提供行业内外的最新烘焙资讯,包括趋势分析、食材选择、技术革新等,帮助用户拓宽视野,提升烘焙技能。
- 烘焙课程:提供一系列系统化的烘焙课程,详细描述每门课程的名称、类型、所需工具与食材准备、课程内容,以及配套的图文教程与视频教程,帮助用户通过学习实现烘焙技巧的提升。
- 博客文章:允许用户在平台上发布个人的烘焙心得与创作故事,其他用户可以评论、点赞或收藏,促进经验共享和社区氛围的建设。
- 烘焙知识:为用户提供全面的烘焙基础与进阶知识,包括技巧、配方、烘焙设备使用指南等,帮助用户系统地学习和掌握烘焙艺术。
- 个人中心:用户可以在个人中心管理个人信息、查看并编辑自己的博客文章,查看自己收藏的课程与烘焙知识,参与或管理烘焙社区互动,并设置个人账户和隐私设置。
3.1.2 管理员用户功能
- 后台首页:提供平台的管理首页,集中展示烘焙课程、博客文章、烘焙知识的统计数据,帮助管理员实时了解内容发布与用户活跃度,优化运营策略。
- 用户管理:管理员可以查看、修改用户的基本信息,管理用户的权限,处理用户的举报与封禁操作,确保平台社区的健康发展。
- 课程分类管理:管理员可以创建、修改、删除烘焙课程的分类结构,为课程内容提供清晰的分类展示,提升用户查找与学习的便利性。
- 烘焙课程管理:管理员可以添加、编辑、删除平台上的烘焙课程,确保课程信息的准确性和时效性,更新课程内容与教程形式以适应用户需求。
- 博客文章管理:管理员可以查看、审核和管理用户提交的博客文章,确保内容符合平台的发布标准,删除违规内容或不合适的文章。
- 烘焙分类管理:管理员可以管理平台上烘焙知识和资讯的分类结构,确保用户能够方便地找到相关的食谱、技巧、文章和资源。
- 烘焙知识管理:管理员负责添加、更新和删除平台上的烘焙知识内容,包括新技巧、食材介绍、烘焙工具推荐等,保持平台知识库的更新和完善。
- 系统管理:包含轮播图管理和敏感词管理,确保网站视觉展示的内容符合平台要求,同时通过敏感词管理保护用户免受不当信息的干扰。
- 网站公告管理:管理员可以发布、修改、删除网站公告,及时通知用户关于平台的重要信息或活动。
- 烘焙资讯管理:管理员负责管理平台发布的烘焙行业新闻、技巧分享、活动通知等资讯,确保内容的时效性和准确性。
- 交流管理:管理员可以对烘焙社区中的讨论内容进行管理,维护社区秩序,管理论坛中的分类结构,确保讨论内容健康、积极、互动活跃。
3.2系统非功能性分析
在研究智能烘焙社区系统时,非功能性需求分析是一个重要的部分。非功能性需求主要关注的是系统如何运行,而不是它具体完成什么功能。这些需求包括性能、可用性、安全性、可维护性、可扩展性、易用性等方面。以下是一个关于智能烘焙社区系统非功能性需求分析的概要。
性能需求:系统需确保快速响应和高吞吐量,以支持大量用户同时访问,即使在高峰时段也能保持流畅的操作体验,避免因延迟或卡顿影响用户体验。
可用性:安系统必须具备高可用性,采用冗余部署、负载均衡等策略,确保即使部分组件故障也能迅速恢复服务,减少服务中断时间,保障用户业务的连续性。
安全性:鉴于系统处理用户敏感信息,如个人信息等,必须实施严格的安全措施,包括数据加密、访问控制、防攻击机制等,以保护用户数据免受未授权访问或泄露。
可维护性:系统设计应注重可维护性,采用模块化、标准化的架构,提供详尽的开发文档和用户手册,确保系统易于理解和维护,降低长期运维成本。
可扩展性:随着业务的发展,系统可能需要扩展功能或提升性能。因此,系统需具备灵活的可扩展性,能够轻松添加新模块、优化性能,以应对未来增长的需求。
易用性:用户界面应直观易用,符合用户习惯,提供清晰的导航和友好的操作反馈,帮助用户快速上手并高效完成任务,提升整体用户满意度。
3.3系统可行性分析
通过智能烘焙社区系统的可行性分析,从技术可行性、经济可行性、操作可行性以及社会可行性四个维度进行深入探讨,以确保系统的开发与应用具有坚实的可行性基础。
3.3.1技术可行性
SpringBoot作为目前流行的Java企业级应用开发框架,以其“约定优于配置”的原则,极大地简化了开发流程,降低了技术门槛。前端采用Vue框架,不仅提升了用户界面的交互体验,也实现了前后端分离的现代Web架构。MySQL数据库作为后端数据存储,以其高性能和稳定性为系统提供了可靠的数据支持。综上所述,从技术角度来看,该系统的开发具备高度可行性。
3.3.2经济可行性
考虑到SpringBoot、JavaScript、及MySQL等均为开源技术,无需支付高昂的许可费用,大大降低了系统的开发成本。同时,这些技术拥有广泛的用户群体和成熟的社区支持,便于获取技术支持和资源共享。此外,系统的实施将显著提升系统管理的效率和用户体验,从而带来潜在的经济效益。因此,从经济角度来看,该系统的开发同样具备可行性。
3.3.3操作可行性
系统设计应遵循用户友好原则,确保用户能够轻松上手并高效使用。通过合理的界面布局、直观的操作流程以及详尽的帮助文档,可以大大降低用户的学习成本,提高系统的操作可行性。此外,系统还应具备完善的权限管理和数据安全机制,确保操作的安全性和合规性。
3.3.4社会可行性
智能烘焙社区系统具有较强的社会可行性。随着烘焙行业和在线教育的蓬勃发展,越来越多的烘焙爱好者渴望通过网络平台提升技能并交流经验。系统通过提供系统化的学习课程和互动社区,能够满足市场对高质量烘焙学习资源的需求。此外,智能化推荐和个性化学习路径的设计,有助于提高用户的学习效率和体验,符合当前社会对个性化教育的需求。因此,该系统具有广泛的用户基础和市场潜力。
从技术、经济、操作和社会四个维度来看,智能烘焙社区系统的开发均具备高度的可行性。
3.4系统用例分析
智能烘焙社区系统用例分析主要从注册用户、管理员两个实体展开描述。
3.4.1注册用户用例分析
注册用户用例包括用户通过输入用户名、邮箱和密码进行注册,系统验证用户信息的合法性,并为其创建账户。注册后,用户可选择完善个人资料,设置头像、兴趣爱好等信息。用户注册成功后,可访问平台的所有公开课程和社区功能,参与互动、浏览课程并进行学习。此外,系统还提供密码找回和账号安全设置功能,确保用户的账户安全。此用例确保了用户的顺利加入和后续操作的便捷性。详细用例图如图3.1所示。

图3.1注册用户用例图
3.4.2管理员用例分析
管理员用例包括管理员登录后台管理系统,进行用户管理、课程管理和内容审核等操作。管理员可以查看、修改或删除用户信息,发布、更新和删除烘焙课程,审核用户提交的博客文章和评论内容,确保平台的内容合规且高质量。管理员还负责管理用户权限、处理投诉和反馈,并生成平台数据报告以优化系统功能。通过这些操作,管理员维护系统秩序,提升平台的运营效率和用户体验。详细用例图如图3.2所示。

图3.2管理员用例图
4系统设计
4.1系统总体设计思路
智能烘焙社区系统采用Browser/Server结构,(浏览器/服务器)和基于Web服务前后台交互的模式,是一个适用于Windows体系环境下的模型结构。只要用户有符合程序运行的硬件系统,并连上互联网,便可以在任何时间、任何地点使用。系统工作原理图如图4.1所示:

图4.1系统工作原理图
其最终前后台交互原理如图4.2所示。

图4.2前后台交互原理
具体交互流程为:浏览器中执行具体操作,操作命令将生成一个do方法。该方法使得浏览器能够访问后台中的Controller层,Controller层由于业务上的需要执行进而访问Service层。Service层收到指令后将会去调用内部DAO层的接口。接口将会和MyBatis层下的一个SQL语句相对接。对接好之后进而访问MySql数据库。更新底层数据,然后将数据同步回MyBatis层,同步变化后的数据将通过DAO层接口,Service层和后台Controller层,直观反映到浏览器页面上。
4.2系统结构设计
智能烘焙社区系统的整体结构设计如图4.3所示。

图4.3整体功能结构设计图
4.3系统功能设计
4.3.1用户登录流程
当用户进入登录页面时,当其在浏览器执行具体操作的时候,后端会同步显示,如图4.4所示。

图4.4登录流程图
4.3.2系统操作流程
系统操作流程包括用户和管理员的主要操作步骤。用户首先通过注册和登录进入平台,浏览并选择感兴趣的课程,参与社区互动或发布博客内容。系统根据用户行为提供个性化推荐。管理员登录后台管理系统,审核用户提交的内容,管理课程和用户信息,发布公告和处理用户反馈。操作流程如图4.5所示。

图4.5系统操作流程图
4.4系统核心代码设计
智能烘焙社区系统的核心代码设计如下:
4.4.1用户注册
注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如下所示。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,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);
}
4.4.2用户登录
登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, 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");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
4.4.3修改密码
修改密码,通过请求data,获取旧密码,并将新密码重新赋值,期间都是需要通过加密,代码如下所示。
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x.auth.token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, 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){
// 修改密码
Map<String,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,"密码修改失败!");
4.4.4修改数据
修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如下所示。
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
4.4.5删除数据
删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如下所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] . 删除操作:{}",wrapper.getSqlSelect());
}
4.4.6获取数据
通过请求的参数获取列表数据,代码如下所示。
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
4.4.7图片上传
通过请求的参数获取列表数据,代码如下所示。
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
4.5数据库设计
4.5.1数据库设计原则
智能烘焙社区系统在进行数据库设计时,考虑到个人能力与数据库选择,选择了数据库Mysql。以下将使用E.R展示数据库中设计的实体及主要的字段和类型及数据库的描述。
4.5.2数据库实体
通过建立智能烘焙社区系统的E.R模型图。以此来设计详细的数据库资料实体,以下为具体图例:
(1)注册用户实体图如下图所示;

图4.6注册用户实体图
(2)烘焙课程信息实体图如下图所示;

图4.7烘焙课程信息实体图
(3)烘焙社区信息实体E.R图如下图所示;

图4.8烘焙社区信息实体E.R图
(4)整体数据库实体E.R图如下图所示:

图4.9数据库E.R图
4.5.3数据库表设计
以下为系统开发过程中所使用的数据表如下所示:
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
| 2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
| 3 | info | text | 65535 | 0 | Y | N | ||
| 4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
| 2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
| 3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
| 4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
| 5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
| 9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
| 10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
| 11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
| 12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
| 13 | description | text | 65535 | 0 | Y | N | 文章描述 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
| 3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
| 4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
| 5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
| 6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
| 7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
| 2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
| 3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
| 4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
| 5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
| 6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
| 7 | parent | varchar | 64 | 0 | Y | N | 父级菜单 | |
| 8 | parent_sort | int | 10 | 0 | N | N | 0 | 父级菜单排序 |
| 9 | position | varchar | 32 | 0 | Y | N | 位置: | |
| 10 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
| 11 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
| 12 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
| 13 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
| 14 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
| 15 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
| 16 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
| 17 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
| 18 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
| 19 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
| 20 | option | text | 65535 | 0 | Y | N | 配置: | |
| 21 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 22 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | baking_classification_id | int | 10 | 0 | N | Y | 烘焙分类ID | |
| 2 | baking_type | varchar | 64 | 0 | Y | N | 烘焙类型 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | baking_course_id | int | 10 | 0 | N | Y | 烘焙课程ID | |
| 2 | course_name | varchar | 64 | 0 | Y | N | 课程名称 | |
| 3 | course_type | varchar | 64 | 0 | Y | N | 课程类型 | |
| 4 | required_tools | varchar | 64 | 0 | Y | N | 所需工具 | |
| 5 | food_preparation | text | 65535 | 0 | Y | N | 食材准备 | |
| 6 | course_content | text | 65535 | 0 | Y | N | 课程内容 | |
| 7 | course_details | longtext | 2147483647 | 0 | Y | N | 课程详情 | |
| 8 | video_tutorial | varchar | 255 | 0 | Y | N | 视频教程 | |
| 9 | graphic_tutorial | text | 65535 | 0 | Y | N | 图文教程 | |
| 10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
| 11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
| 13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | baking_knowledge_id | int | 10 | 0 | N | Y | 烘焙知识ID | |
| 2 | baking_name | varchar | 64 | 0 | Y | N | 烘焙名称 | |
| 3 | baking_type | varchar | 64 | 0 | Y | N | 烘焙类型 | |
| 4 | baking_techniques | varchar | 64 | 0 | Y | N | 烘焙技巧 | |
| 5 | baking_recipe | text | 65535 | 0 | Y | N | 烘焙配方 | |
| 6 | baking_content | text | 65535 | 0 | Y | N | 烘焙内容 | |
| 7 | baking_details | longtext | 2147483647 | 0 | Y | N | 烘焙详情 | |
| 8 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
| 9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | blog_article_id | int | 10 | 0 | N | Y | 博客文章ID | |
| 2 | registered_user | int | 10 | 0 | Y | N | 0 | 注册用户 |
| 3 | article_title | varchar | 64 | 0 | Y | N | 文章标题 | |
| 4 | article_type | varchar | 64 | 0 | Y | N | 文章类型 | |
| 5 | article_tags | varchar | 64 | 0 | Y | N | 文章标签 | |
| 6 | article_content | text | 65535 | 0 | Y | N | 文章内容 | |
| 7 | article_details | longtext | 2147483647 | 0 | Y | N | 文章详情 | |
| 8 | article_images | varchar | 255 | 0 | Y | N | 文章图片 | |
| 9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
| 10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 11 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
| 12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | code_token_id | int | 10 | 0 | N | Y | ||
| 2 | token | varchar | 255 | 0 | Y | N | ||
| 3 | code | varchar | 255 | 0 | Y | N | 验证码 | |
| 4 | expire_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 失效时间 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
| 3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 6 | title | varchar | 255 | 0 | Y | N | 标题: | |
| 7 | img | varchar | 255 | 0 | Y | N | 封面: | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
| 3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
| 4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
| 5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
| 6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | course_classification_id | int | 10 | 0 | N | Y | 课程分类ID | |
| 2 | course_type | varchar | 64 | 0 | Y | N | 课程类型 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
| 3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
| 4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
| 5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
| 6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
| 7 | title | varchar | 125 | 0 | N | N | 标题 | |
| 8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
| 9 | description | varchar | 255 | 0 | Y | N | 描述 | |
| 10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
| 11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
| 12 | img | text | 65535 | 0 | Y | N | 封面图 | |
| 13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
| 14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
| 17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
| 18 | istop | int | 10 | 0 | N | N | 0 | 是否置顶 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
| 2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
| 3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
| 4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
| 5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
| 6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
| 2 | title | varchar | 125 | 0 | N | N | 标题: | |
| 3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
| 4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | registered_user_id | int | 10 | 0 | N | Y | 注册用户ID | |
| 2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 3 | contact_information | varchar | 16 | 0 | Y | N | 联系方式 | |
| 4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
| 5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | schedule_id | smallint | 5 | 0 | N | Y | 日程ID:[0,32767] | |
| 2 | content | varchar | 255 | 0 | Y | N | 日程内容 | |
| 3 | scheduled_time | datetime | 19 | 0 | Y | N | 计划时间 | |
| 4 | user_id | int | 10 | 0 | N | N | 用户id | |
| 5 | create_time | datetime | 19 | 0 | Y | N | 创建时间 | |
| 6 | update_time | datetime | 19 | 0 | Y | N | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | score_id | int | 10 | 0 | N | Y | 评分ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 评分人: |
| 3 | nickname | varchar | 64 | 0 | Y | N | 昵称: | |
| 4 | score_num | double | 5 | 2 | N | N | 0.00 | 评分: |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 7 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 8 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 9 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
| 2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
| 2 | title | varchar | 64 | 0 | Y | N | 标题: | |
| 3 | content | varchar | 255 | 0 | Y | N | 内容: | |
| 4 | url | varchar | 255 | 0 | Y | N | 链接: | |
| 5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
| 6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
| 2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
| 3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
| 4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
| 5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
| 6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
| 7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
| 8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_id | int | 10 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
| 2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
| 3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
| 4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
| 5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
| 6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
| 7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
| 8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
| 9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
| 10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
| 11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
| 12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
| 14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
| 3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
| 4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
| 9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5系统实现
5.1注册用户功能实现
5.1.1前台首页
前台首页是用户进入平台的第一界面,设计简洁直观。首页展示平台的核心功能,如热门课程、推荐活动、最新博客和社区动态等。用户可以通过导航栏访问注册、登录、课程、社区等模块。首页还提供搜索功能,方便用户快速找到感兴趣的内容。同时,首页还设置了注册和登录入口,用户可以直接进行账号注册或登录,快速进入平台进行学习和互动。如下图所示。

图5.1首页界面图
5.1.2用户注册
用户在首页点击“注册”按钮,进入注册页面。填写必要的信息,包括用户名、邮箱、密码,并设置密码确认。系统会进行邮箱格式验证,确保用户信息的准确性。若邮箱已被注册,系统会提示用户进行登录或找回密码。注册完成后,用户可以选择完善个人资料,如头像、兴趣等,提升个性化体验。注册成功后,用户将自动跳转至个人主页,开始使用平台的各项功能。如下图所示。

图5.2用户注册界面图
5.1.3用户登录
用户在首页点击“登录”按钮,进入登录页面,输入已注册的邮箱和密码进行验证。系统会检查账户信息是否匹配,若信息正确,用户即可成功登录,进入平台首页或个人主页。若输入信息错误,系统会提示用户重新输入,支持“忘记密码”功能,通过邮箱重置密码。登录后,用户可访问课程、社区互动、个人设置等功能,享受个性化的学习体验。登录信息会通过加密方式存储,保障用户数据安全。如下图所示。

图5.3用户登录界面图
5.1.4烘焙社区
烘焙社区是平台为用户提供的互动空间,旨在促进烘焙爱好者之间的交流与分享。用户可以在论坛中发布烘焙心得、技巧、食谱等内容,或提问并回答其他用户的问题。社区支持帖子评论、点赞、分享等功能,增强互动性。用户还可以根据兴趣加入不同的子论坛,参与专题讨论。管理员会对社区内容进行适度审核,确保讨论健康、积极。通过这个功能,平台不仅提供学习资源,还打造了一个温馨的烘焙爱好者社交环境。如下图所示。

图5.4烘焙社区查看界面图

图5.5发布帖子界面图
5.1.5烘焙课程
烘焙课程是平台为用户提供的学习模块,旨在帮助用户掌握各种烘焙技能。课程包括基础烘焙、蛋糕制作、饼干烘焙、装饰技巧等内容。每个课程包含视频教学、图文步骤和实操建议,用户可以根据自己的学习进度进行查看和实践。平台还支持互动功能,用户可以在课程下留言讨论、提问,获取反馈。如下图所示。

图5.6烘焙课程列表界面图

图5.7课程视频观看界面图
5.1.6个人中心
个人中心是用户在平台的专属页面,集成个人信息和各类功能。用户可以在个人首页查看基本资料、学习进度及动态;通过博客文章发布、编辑烘焙心得和食谱,与其他用户互动;在烘焙社区参与讨论、提问或回答问题,结交烘焙爱好者;同时,用户还可以在收藏模块保存喜爱的课程、文章和帖子,方便随时查看。个人中心提供便捷管理,提升个性化学习与互动体验。如下图所示。

图5.8个人中心界面图
5.2管理员功能实现
5.2.1后台首页
后台首页是管理员的核心操作界面,提供平台各项数据概览。包括烘焙课程统计,显示课程数量、学习进度和学员数据;博客文章统计,展示文章数量、阅读量和互动情况;烘焙知识统计,跟踪知识内容的参与度和热度。这些数据帮助管理员实时掌握平台运营情况,优化资源分配和内容管理,提升用户体验。界面简洁,便于管理员快速查看并做出决策。如下图所示。

图5.9后台首页界面
5.2.2用户管理
用户管理模块允许管理员查看和管理平台上的所有用户信息。管理员可以对用户进行封禁、删除、信息修改等操作,确保平台环境的安全与和谐。此外,还可以根据用户行为进行分类管理,提供个性化的推荐和服务。用户管理功能有助于管理员高效维护平台秩序,提升用户体验。如下图所示。

图5.10用户管理界面
5.2.3烘焙课程管理
管理员对平台上的烘焙课程进行全面管理。管理员可以查看和编辑课程内容、课程状态、学习人数、课程评分等信息,确保课程质量和更新。该模块还支持课程审核、删除以及分类管理,便于优化课程结构和内容。管理员还可通过数据统计和用户反馈,调整课程内容或增加新课程,提升学习体验和平台吸引力。如下图所示。

图5.11烘焙课程添加界面
5.2.4博客文章管理
博客文章管理模块允许管理员对平台上的所有博客文章进行审核和管理。管理员可以查看文章发布情况、阅读量、评论互动等信息,并进行文章审核、删除或修改等操作。通过该模块,管理员可以确保文章内容符合平台规范,避免不适当内容的发布。同时,管理员还可以根据文章表现进行推荐或调整,以提升平台内容的质量和用户体验。如下图所示。

图5.12博客文章管理界面
5.2.5烘焙知识管理
管理员对平台上的烘焙知识内容进行管理和维护。管理员可以查看和编辑知识文章、教程、技巧分享等,确保内容的准确性和实用性。该模块支持内容审核、删除以及分类管理,确保平台知识资源的质量和可访问性。管理员还可根据用户反馈和热点话题更新或新增内容,提升用户学习体验,并推动平台知识体系的完善与发展。如下图所示。

图5.13烘焙知识管理界面
6系统测试
6.1系统测试目标
为了保证智能烘焙社区系统的质量,使其能够稳定的运行,并排除其可能存在的未知隐患。解除软件可能存在的故障,理清楚测试与纠错的关系,如下图所示。

图6.1测试与纠错信息流程
6.2系统功能测试
通过对系统中所含的主要实体对象及其功能操作进行测试用例设计。以下是详细的测试表:
表6.1用户注册测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 用户注册 | 输入正确的用户名和密码 | 注册成功,提示注册完成 |
| TC002 | 用户注册 | 输入已存在的用户名 | 注册失败,提示用户名已存在 |
| TC003 | 用户注册 | 输入格式错误的邮箱地址 | 注册失败,提示邮箱格式错误 |
| TC004 | 用户注册 | 不输入密码 | 注册失败,提示密码不能为空 |
| TC005 | 用户注册 | 输入弱密码(如123456) | 注册失败,提示密码强度不足 |
表6.2用户登录测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 用户登录 | 输入正确的用户名和密码 | 登录成功,进入主页 |
| TC002 | 用户登录 | 输入错误的用户名 | 登录失败,提示用户名不存在 |
| TC003 | 用户登录 | 输入错误的密码 | 登录失败,提示密码错误 |
| TC004 | 用户登录 | 未输入用户名或密码 | 登录失败,提示用户名或密码不能为空 |
| TC005 | 用户登录 | 多次输入错误密码 | 登录失败,提示账户已被锁定 |
表6.3查看烘焙社区帖子测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 查看烘焙社区帖子 | 点击某个帖子,查看帖子详情 | 成功加载帖子内容,显示正常 |
| TC002 | 查看烘焙社区帖子 | 查看不存在的帖子 | 提示帖子不存在 |
| TC003 | 查看烘焙社区帖子 | 进入社区后,点击最新帖子 | 成功加载最新帖子 |
| TC004 | 查看烘焙社区帖子 | 未登录情况下查看帖子 | 提示需要登录才能查看帖子 |
| TC005 | 查看烘焙社区帖子 | 点击帖子内的链接,跳转到相关页面 | 成功跳转至链接页面 |
表6.4查看烘焙课程测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 查看烘焙课程 | 选择某课程,查看课程详情 | 成功加载课程内容,显示正常 |
| TC002 | 查看烘焙课程 | 查看已删除的课程 | 提示课程已删除 |
| TC003 | 查看烘焙课程 | 进入课程列表,查看所有课程 | 成功加载所有课程列表 |
| TC004 | 查看烘焙课程 | 未登录状态下查看课程内容 | 提示需登录才能查看课程内容 |
| TC005 | 查看烘焙课程 | 点击课程中的视频或文件,查看播放情况 | 成功播放视频或下载文件 |
表6.5发布博客文章测试表
| 测试用例编号 | 功能模块 | 测试用例描述 | 测试结果 |
| TC001 | 发布博客文章 | 输入完整的文章标题和内容,点击发布 | 文章发布成功,提示发布完成 |
| TC002 | 发布博客文章 | 不输入文章标题,点击发布 | 发布失败,提示标题不能为空 |
| TC003 | 发布博客文章 | 输入过长的文章内容,超过字数限制 | 发布失败,提示内容超出字数限制 |
| TC004 | 发布博客文章 | 未登录状态下尝试发布文章 | 提示需登录才能发布文章 |
| TC005 | 发布博客文章 | 输入不规范的格式(如HTML标签错误) | 发布失败,提示格式不正确 |
6.3测试结果总结
通过对用户注册、登录、查看烘焙社区帖子、查看烘焙课程以及发布博客文章等功能模块的全面测试,系统的基本功能均符合预期。用户注册测试表中,正确输入数据时注册成功,而错误数据如已存在用户名、格式错误的邮箱等均能正确提示并阻止注册。用户登录功能测试表也表明,系统能有效识别正确和错误的用户名及密码,保障账户安全。查看烘焙社区帖子和课程的测试结果显示,系统能够顺利加载内容,并提示未登录用户进行登录操作。发布博客文章的测试也表明,系统在发布时会进行有效的输入校验,避免不规范数据提交。整体来看,平台的用户交互体验流畅,功能完整,能够合理应对各种异常输入,保障用户体验与平台安全。
结 论
本文设计并实现了一个智能烘焙社区系统,旨在为烘焙爱好者提供一个集学习、交流与展示的综合平台。通过详细的需求分析与功能设计,系统分为用户端与管理员端两大模块,提供了多项核心功能,如烘焙课程学习、社区互动、博客发布、资讯浏览、用户管理、课程管理和内容审核等。系统不仅满足了用户个性化学习与社交需求,还通过强大的后台管理功能确保平台的健康运行。
在技术实现方面,系统采用SpringBoot作为后端开发框架,利用其高效的RESTful API设计与MySQL数据库的结合,实现了数据的高效存储与管理。前端部分使用Vue框架,提升了用户体验,使得页面更加动态和响应迅速。系统架构灵活且具备良好的扩展性,能够支持更多功能模块的增加与用户量的增长。
预期该系统能够为广大烘焙爱好者提供一个便捷、高效的学习平台,促进烘焙技术的传播与经验的共享。同时,系统的管理模块将帮助管理员高效地运营平台,确保内容更新及时、用户体验良好。总体而言,本系统的实现不仅推动了烘焙社区的互动与发展,也为相关在线教育平台的设计提供了有益的参考。
参考文献
- 阿迪力·肉孜,阿里木江·阿布迪日依木,卡里哈希·阿得力.基于Vue.js的科技服务中心管理系统的研究与设计[J].电脑知识与技术,2024,20(30):35-37.
- 钟育伙.基于SpringBoot+Vue的校园活动管理系统设计与实现[J].电子技术,2024,53(10):56-57.
- Yuanrun Zhu.Contract Management System Based on SpringBoot and Vue[J].Advances in Computer, Signals and Systems,2024,8(5):
- 周玉光,赵海涛,樊继慧,麦泳楠.基于SpringBoot的消防站健身房系统建设[J].电脑知识与技术,2024,20(17):75-77.
- 张新海,朱祎.基于MVVM模式SpringBoot框架的高校信息化项目管理系统[J].信息技术与信息化,2024,(05):54-58.
- Yixuan Liu.Design and Implementation of a Student Attendance Management System based on Springboot and Vue Technology[J].Frontiers in Computing and Intelligent Systems,2024,8(1):91-97.
- 王培培.基于SpringBoot的网上商城管理系统设计与实现[J].现代计算机,2024,30(07):117-120.
- 钱志达,孙裕文.烘焙知识智能问答系统设计与实现研究[A]2022年中国家用电器技术大会论文集[C].中国家用电器协会,《电器》杂志社,2023:6.
- Yu Yang.Design and Implementation of Student Information Management System Based on Springboot[J].Advances in Computer, Signals and Systems,2022,6(6):
- Wu Hejing.Commerce Middle Office Management System Based on Springboot[J].International Journal of Advanced Network, Monitoring and Controls,2022,7(2):32-45.
- 刘业成.美食广场智慧餐饮平台的设计与实现[D].东南大学,2021.
- Fuyuan Cheng.Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J].Advances in Educational Technology and Psychology,2021,5(2):
- 朱敏.基于微信小程序的美食服务平台的设计与实现[J].电子技术与软件工程,2021,(08):50-51.
- 王佳安,王可心,李直旭.美食精准搜索与智能推荐平台的设计与实现[J].福建电脑,2019,35(08):27-30.
- 浦仕钧,朱浩悦,郭金,张军军.西安餐饮美食平台的设计与实现[J].电子测试,2015,(18):4-5+37.
致 谢
在本论文的撰写和系统开发过程中,我深刻体会到个人独立完成一项系统开发工作的挑战与成就感。首先,我要感谢我的导师,在整个研究和开发过程中给予了我无私的指导与建议。无论是在技术细节还是研究思路上,他都为我提供了宝贵的方向性指导,帮助我克服了许多难题。虽然整个开发过程是由我独立完成的,但导师的意见使我在遇到瓶颈时有了清晰的解决思路。
在开发过程中,我经历了从系统需求分析、架构设计到功能实现的完整过程。这不仅锻炼了我的编码能力,也让我在项目管理、时间安排和问题解决等方面有了长足的进步。我独立完成了系统的每一行代码,并通过反复测试和优化确保了系统的稳定性和性能。在遇到技术难题时,我通过查阅大量文献、技术文档和社区讨论,自主解决了各类问题,这个过程让我更加理解了技术的深度与广度。
同时,我也要感谢我的家人和朋友,他们在开发的整个过程中给予了我莫大的支持和鼓励,成为我坚持完成这项工作的动力。正是在这些力量的支持下,我才能独立完成这项系统开发并顺利完成论文的撰写。
16万+

被折叠的 条评论
为什么被折叠?



