springboot香水分享平台的设计与实现
摘要
香水分享平台的设计与实现旨在为用户提供一个集香水信息浏览、交流互动、个性化收藏及管理于一体的综合服务平台。基于Spring Boot框架开发,该平台不仅支持普通用户注册登录后进行香水信息的详细查询和互动,如私信聊天、加入香单、评论点赞等,还提供了香水排行榜、香水百科以及社区论坛等功能模块,极大地丰富了用户的使用体验。此外,针对管理员设计了一系列后台管理功能,包括但不限于系统用户管理、香水信息管理、公告信息发布以及敏感词过滤等,确保平台内容的准确性和安全性。
在技术层面,通过采用Spring Boot作为核心框架,香水分享平台实现了前后端分离,提升了系统的可扩展性和维护性。小程序端则为用户提供了便捷的移动端入口,使用户能够随时随地访问平台资源。特别地,香水信息添加页面和管理系统使得香水数据的更新与维护变得简单高效,而轮播图管理和敏感词管理功能进一步增强了用户体验和平台的安全性。整个项目体现了对香水爱好者需求的深入理解和响应,同时也展示了现代Web开发技术在构建复杂业务逻辑和服务体系中的强大能力。
关键词:香水分享平台;SpringBoot;微信小程序
Abstract
The design and implementation of perfume sharing platform aims to provide users with a comprehensive service platform integrating perfume information browsing, communication and interaction, personalized collection and management. Developed based on the Spring Boot framework, the platform not only supports the detailed inquiry and interaction of perfume information by ordinary users after registration and login, such as private message chat, joining the fragrance list, commenting and liking, but also provides functional modules such as perfume ranking, perfume encyclopedia and community forum, greatly enriching the user experience. In addition, a series of background management functions have been designed for administrators, including but not limited to system user management, perfume information management, announcement information release and sensitive word filtering, etc., to ensure the accuracy and security of the platform content.
At the technical level, by using Spring Boot as the core framework, the perfume sharing platform realizes the separation of the front and back ends, and improves the scalability and maintenance of the system. The small program side provides users with a convenient mobile terminal entrance, allowing users to access platform resources anytime and anywhere. In particular, the perfume information addition page and management system make the update and maintenance of perfume data simple and efficient, while the rotation chart management and sensitive word management functions further enhance the user experience and the security of the platform. The entire project demonstrates a deep understanding and responsiveness to the needs of perfume lovers, while also demonstrating the power of modern Web development techniques in building complex business logic and services.
Key words:Perfume sharing platform; SpringBoot; Wechat mini program
目录
摘要
Abstract
1 绪 论
1.1 研究背景
1.2 国内外研究现状
1.3 选题目的
1.4 课题研究的意义
1.5 研究的内容及方法
2 相关技术介绍
2.1 Java语言
2.2 B/S框架
2.3 SpringBoot框架
2.4 Vue技术
2.5 MySQL数据库
2.6 微信开发者工具
3 系统分析
3.1 可行性分析
3.1.1 技术可行性
3.1.2 操作可行性
3.1.3 经济可行性
3.2 功能需求分析
3.2.1 普通用户功能
3.2.2 管理员功能
3.3 非功能性分析
4 系统设计
4.1 系统设计流程
4.1.1 用户登录流程
4.1.2 添加信息流程
4.1.3 修改信息流程
4.1.4 删除信息流程
4.2 系统功能模设计
4.3 数据库表ER
4.4 数据库表物理设计
5 系统实现
5.1 普通用户功能实现
5.1.1 注册页面
5.1.2 登录页面
5.1.3 首页
5.1.4 私信聊天
5.1.5 香水信息
5.1.6 香水排行榜
5.1.7 香水社区
5.1.8 我的
5.2 管理员功能实现
5.2.1 香水信息管理
5.2.2 香水排行榜管理
5.2.3 系统管理
5.2.4 资源管理
6 系统测试
6.1 测试目的
6.2 测试方法
6.3 测试内容
6.4 测试结论
7 结论
参考文献
致谢
附录
系统核心代码设计
1绪 论
1.1研究背景
香水作为一种独特的个人配饰,不仅能够增添个人魅力,还能表达个性与情感。随着互联网技术的发展和移动设备的普及,用户获取香水信息的方式从传统的线下体验逐渐转变为线上浏览和交流。然而,现有的香水分享平台在功能性和用户体验上仍存在诸多不足之处,如香水信息更新不及时、用户互动性差、个性化服务缺乏等。因此,设计并实现一个集香水信息查询、用户互动、个性化推荐以及后台管理于一体的香水分享平台显得尤为重要。这样的平台不仅能帮助用户更好地了解香水文化,发现心仪的产品,还能为用户提供一个分享心得、交流感受的空间。
在此背景下,本项目基于Spring Boot框架和小程序开发技术,致力于打造一个高效、便捷且功能全面的香水分享平台。通过整合香水品牌、香调类型、用户评价等多种信息资源,该平台为用户提供了一个全方位了解香水特性的窗口。同时,借助于私信聊天、香水排行榜、香水百科等功能模块,进一步增强了用户的参与度和满意度。对于管理员而言,平台提供的数据导入导出、敏感词过滤、公告发布等管理功能,有助于维护平台内容的准确性和安全性。这一研究不仅丰富了香水爱好者的信息获取渠道,也为香水文化的推广和发展提供了新的思路和技术支持。
1.2国内外研究现状
在国内,随着消费者对香水的认知和需求不断增长,越来越多的研究关注于香水市场的动态、消费者行为以及电商平台的角色。例如,艾媒咨询的报告显示,中国香水市场正在经历快速扩张,预计到2029年市场规模将达到515亿元人民币。此外,研究还揭示了消费者偏好趋势,如女性消费者占据主要市场份额,花果香调最受欢迎,并且香味的独特性成为选择香水的新风向。同时,线上渠道的重要性日益凸显,电商与直播平台成为了香水销售的重要途径,而内容分享平台则在消费者获取香水资讯方面扮演着关键角色。
在国外,香水行业同样是一个充满活力的研究领域,尤其是在品牌文化、消费者心理以及可持续发展等方面。国际上,香水不仅被视为一种美容产品,更是一种文化和艺术的表现形式。研究表明,西方消费者更加注重香水的品牌故事和调香师的艺术创意,这影响了他们的购买决策。此外,随着环保意识的增强,绿色和可持续香水产品的市场需求逐渐上升,促使企业探索更加环保的生产方式和包装材料。国外对于香水的研究还包括对不同文化和地域间香气偏好的差异分析,这些研究为香水品牌的全球化策略提供了理论依据。总体而言,无论是国内还是国外,香水行业的研究都显示出了其多元化的发展趋势和对消费者心理及行为的深入探讨。
1.3选题目的
香水分享平台的选题目的旨在通过设计与实现一个基于Spring Boot框架和小程序技术的香水分享平台,满足日益增长的香水爱好者对于便捷获取香水信息、交流使用心得以及个性化收藏管理的需求。该平台不仅提供详尽的香水资料查询、用户互动交流社区、个性化的香水推荐和管理功能,还为管理员提供了高效的数据管理和内容审核机制,确保平台信息的准确性和安全性。借此,本研究致力于促进香水文化的传播与发展,增强消费者对香水产品的了解与探索,同时为电子商务平台的设计与优化提供新的思路和技术支持,以适应数字化时代的发展趋势。
1.4课题研究的意义
研究香水分享平台的设计与实现具有重要的现实意义和理论价值。首先,从用户角度来看,该平台能够满足消费者对香水信息的获取需求,提供一个便捷、全面且互动性强的信息交流空间。通过整合香水品牌、香调类型、用户评价等多种资源,平台不仅帮助用户更好地了解香水产品的特性,还支持个性化推荐,使用户能够根据自己的喜好快速找到合适的香水。此外,社区功能如私信聊天、香水排行榜、香水百科等,增强了用户的参与感和归属感,促进了香水文化的传播与发展。这为香水爱好者提供了一个共享经验、交流心得的理想场所,同时也为潜在消费者提供了丰富的参考信息。
从技术和商业角度分析,本研究利用Spring Boot框架和小程序技术进行开发,展示了现代信息技术在构建高效、灵活的网络服务平台上的应用潜力。通过对香水信息管理、后台数据维护、内容安全审核等功能模块的设计,研究强调了系统设计对于提升用户体验和保障平台健康运营的重要性。此外,管理员端的功能设置也为平台的长期发展提供了有力支持,包括但不限于数据更新、敏感词过滤以及公告发布等,确保了平台内容的新鲜度和安全性。总之,这一研究不仅推动了香水行业数字化转型的步伐,也为类似电子商务平台的设计与优化提供了有价值的参考案例和技术借鉴。
1.5研究的内容及方法
香水分享平台的研究内容主要集中在香水分享平台的功能设计与实现上,包括用户端和管理员端的多个功能模块。在用户端,研究详细探讨了注册登录、首页展示、私信聊天、香水信息浏览、香水排行榜、香水百科、香水社区以及个人信息管理等功能的设计思路。例如,在香水信息模块中,通过提供详细的香水描述(如品牌、香调类型、调香师、留香时间等)和用户互动功能(点赞、收藏),增强了用户的参与度。而在管理员端,则着重于系统用户管理、香水信息及香单管理、排行榜管理、系统管理和公告信息发布等功能的设计,确保平台内容的质量与安全。这些功能的设计旨在为用户提供一个全面且个性化的香水信息服务平台,同时保障平台运营的高效性。
为了实现上述功能,本研究采用了Spring Boot框架进行后端开发,并结合小程序技术来构建用户友好的移动端界面。Spring Boot以其简化配置、快速部署的特点,非常适合用于开发这种需要处理复杂业务逻辑的服务平台。此外,通过引入数据库管理系统(如MySQL或PostgreSQL)存储用户信息、香水详情、评论等内容,保证数据的一致性和安全性。对于前端开发,采用微信小程序或其他类似的小程序框架,可以有效地提升用户体验,使其能够便捷地访问香水信息并进行互动。研究方法还包括需求分析、系统设计、编码实现、测试验证等多个阶段,以确保系统的功能性、稳定性和可扩展性。通过对用户反馈的持续收集与分析,进一步优化平台功能,满足用户的多样化需求。
2相关技术介绍
2.1Java语言
Java语言是一种广泛使用的高级编程语言,具有平台无关性、面向对象特性和丰富的标准库。Java通过Java虚拟机(JVM)实现跨平台运行,开发者可以编写一次代码,在任何支持JVM的环境中执行[1]。Java的面向对象特性使得代码复用和模块化变得更加容易,促进了软件的维护和扩展。Java支持多线程编程,允许开发者在同一程序中同时执行多个任务,提升了应用程序的性能。
Java语言的语法结构简洁且易于理解,吸引了大量开发者。Java的标准库包含数据结构、输入输出处理、网络编程等众多功能模块。这使得开发者在构建应用程序时能够高效利用已有工具,减少重复劳动。Java广泛应用于企业级应用、移动应用、Web开发和大数据处理等领域。
2.2 B/S框架
B/S(Browser/Server)架构是一种基于浏览器和服务器的系统架构模式,用户通过浏览器与服务器进行交互。B/S架构简化了客户端的部署和管理,用户无需在本地安装复杂的软件,只需使用标准浏览器即可访问应用程序。服务器端负责处理业务逻辑和数据存储,客户端则主要负责展示用户界面和数据交互[2]。B/S架构的设计使得系统更新和维护集中在服务器端,降低了维护成本。
B/S架构通常采用Web技术进行实现,包括HTML、CSS和JavaScript等。用户在浏览器中发起请求,服务器响应并返回数据。数据传输通常通过HTTP或HTTPS协议进行,B/S架构的灵活性使其适用于在线购物、信息管理系统和社交网络等各类应用场景[3]。由于其易于扩展性,B/S架构可以方便地支持大规模用户访问,适应不断变化的业务需求。
2.3 SpringBoot框架
SpringBoot框架是基于Spring框架的开源项目,简化Java应用程序的开发过程。SpringBoot通过约定优于配置的理念,减少了传统Spring应用的繁琐配置,开发者可以快速搭建和部署应用程序。框架提供了一系列默认配置,支持自动化配置,简化了应用启动的复杂性[4]。SpringBoot内置了嵌入式Web服务器,使得开发者能够独立运行Java应用,无需外部容器。
SpringBoot支持微服务架构,开发者可以轻松创建和管理多个微服务。框架集成了丰富的功能模块,包括安全、数据访问和消息中间件等,支持RESTful API和JSON数据格式的处理[5]。SpringBoot还提供了强大的监控和管理功能,允许开发者实时监控应用的健康状态和性能指标。借助SpringBoot,开发者能够高效构建和维护现代企业级应用,满足复杂业务需求。
2.4 Vue技术
Vue是一种渐进式JavaScript框架,专注于构建用户界面。Vue采用组件化的开发模式,允许开发者将应用程序拆分为独立的、可重用的组件,从而提高了开发效率和代码的可维护性[6]。框架的核心库专注于视图层,支持数据绑定和DOM操作,提供了简洁的API。Vue的虚拟DOM机制提升了应用的性能,减少了实际DOM操作的次数。
Vue支持双向数据绑定,能够自动更新视图与模型之间的变化。开发者可以通过Vue的指令系统,简化数据展示和事件处理。Vue还支持路由管理和状态管理,使得开发复杂单页面应用变得更加容易[7]。借助Vue的生态系统,开发者能够使用多种工具和库来扩展功能,满足不同的业务需求。Vue在前端开发中逐渐成为主流选择,受到广泛关注和应用。
2.5 MySQL数据库
MySQL是一种开源关系型数据库管理系统,广泛应用于Web应用和企业级数据存储。MySQL支持结构化查询语言,允许开发者通过标准语句进行数据的创建、读取、更新和删除操作[8]。数据库通过表格形式组织数据,支持数据完整性和约束条件的定义。MySQL的存储引擎机制使得用户可以根据具体需求选择不同的存储引擎,以优化性能和功能。
MySQL具有高性能和可扩展性,支持大规模数据存储和高并发访问。系统提供了丰富的用户权限管理和数据加密安全特性。MySQL能够与多种编程语言和框架兼容,广泛应用于内容管理系统、电子商务平台和数据分析等各种场景。
2.6微信开发者工具
微信开发者工具是一款专为小程序开发设计的应用,它通过不断改进提供了便捷的操作方式,在开发过程中可以通过微信扫描二维码来访问,从而实现快速、准确的小程序开发和调试[9]。根据用户需求,我们将采用不同的屏幕大小优化小程序的设计;完成视图布置后,可通过执行编辑功能快速更改当前的视图界面。控制台方便调试打印输出信息,而上传代码至腾讯服务器时需填写版本号和备注信息以确保代码的安全性和准确性。查看资源文件可以快速调整相关项目的文件目录,便于断点调试;使用远程调试技术,无论是在手机端还是PC端,都能轻松进行开发工作。本地数据存储显示了本地存储的数据,通过使用子父层级结构更易于进行视图调试。考虑到微信小程序的代码体积应保持在2M以内,在开发过程中还需严格检查合法域名信息,并为小程序后台配置服务器域名。微信开发者工具已成为开发过程中不可或缺的一部分,并且正在不断地改进和完善。
3系统分析
3.1可行性分析
3.1.1技术可行性
系统采用当前主流的SpringBoot和Vue.js开发框架,具备良好的技术基础。这些技术已被广泛应用于多种商业项目,具备成熟的文档和社区支持,便于开发获取必要的资源与解决方案。个人拥有丰富的相关技术经验,能够有效应对潜在技术挑战。所需的软硬件资源易于获取,且具备良好的兼容性,降低了技术实现的难度。
3.1.2操作可行性
系统具备直观友好的用户界面,支持简便的导航和功能访问,极大地提升了用户的使用体验。系统提供了自定义的工作流程和角色权限管理,使不同层级的用户能够快速上手,完成各自的任务。
3.1.3经济可行性
系统所使用的软件为开源技术,降低了使用费用,同时硬件成本较低,使得整体初始投入相对合理,具备较高性价比。因此,系统在经济上是完全可行的。
3.2功能需求分析
3.2.1普通用户功能
(1)注册登录:用户可以通过注册成为系统用户,注册后可以用账号密码登录系统。
(2)首页:用户进入香水分享平台的时候,首先映入眼帘的是系统的首页、私信聊天、香水信息、香水排行榜、香水百科、香水社区、公告信息等信息。
(3)私信聊天:用户可以通过私信聊天功能与好友进行一对一的交流,点击“添加好友”按钮可以添加新朋友。此外,用户还可以参与群聊,与多个朋友一起讨论香水心得和个人喜好,分享更多乐趣。
(4)香水信息:在香水信息模块中,用户能够浏览不同品牌的香水信息列表,查看每款香水的图片、名称、品牌和香调类型等基本信息。点击感兴趣的香水可进入详情页,展示了更详细的香水描述,如调香师、留香时间、用户评分以及前调、中调和后调成分等,同时用户可点击“加入香单”按钮把喜欢的香水加入个人香单列表,记录加入日期与备注信息,便于日后管理和分享自己的香水收藏。此外,用户还可以利用点赞、收藏等功能互动交流。
(5)香水排行榜:在香水排行榜模块中,用户可以通过香水排行榜功能查看最受欢迎的香水,排行榜根据点赞数、点击数、收藏数和发布时间进行排序。用户可以轻松找到高人气的香水,并根据自己的喜好进行选择点赞、收藏和评论。
(6)香水百科:用户点击可查看新闻资讯列表,同时可对资讯文章进行点赞、收藏和评论。
(7)香水社区:用户点击可查看交流论坛帖子列表,可对帖子进行查看、点赞、收藏和评论;同时可点击“发布”按钮填写论坛发布信息,包括封面图、标题、分类、标签和正文。
(8)公告信息:通知公告功能模块用于发布重要信息和更新通知。用户可以在这里查看最新的网站公告、关于我们、联系方式和网站介绍等内容,确保及时获取有关香水的相关信息和动态。
(9)我的:我的包含多个功能模块,用户可以在“我的”页面查看和管理个人信息,包括收藏的香水、香单信息和参与的社区活动。此外,用户还可以通过该页面进行退出登录操作,确保账户安全。
普通用户用例图如下:

图3-1普通用户用例图
3.2.2管理员功能
(1)登录:管理员账号密码由系统生成,可使用账号密码可进行登录系统后台,使用系统功能进行管理,并可对自己的个人信息和密码进行管控。
(2)系统用户:管理员点击可查看系统用户(管理员、普通用户)列表中某个用户的详情,可以对用户信息进行查询、审核、添加和删除操作。
(3)香调分类管理:管理员点击可查看香调分类列表,同时可对香调分类就那些增删改查。
(4)香水信息管理:管理员可以通过香水信息管理功能,先点击“下载导入文档”按钮获取模板,将需要添加或更新的香水信息填入文档后,再点击“导入”按钮完成数据上传。此外,管理员也可以直接点击“香水信息添加”按钮在添加页面中添加香水信息,也可对信息查看、编辑和删除,确保平台数据库的准确性和完整性。
(5)香单信息管理:管理员点击可查看香单信息列表。
(6)香水排行榜管理:管理员点击可查看香水排行榜列表和香水排行榜添加;点击进入“香水排行榜添加”看填写相关信息,包括榜单名称、排行日期、中文名称、香水类型、排行名词、香水品牌、香水图片、排行说明和排行详情。
(7)系统管理:管理员可以通过系统管理功能,进行轮播图管理和敏感词管理。在轮播图管理中,可以上传、编辑和删除首页展示的图片,确保平台视觉效果的更新和美观。在敏感词管理中,可以设置和维护敏感词汇列表,过滤不当内容,保障平台信息的安全性和合规性。
(8)公告信息管理:当管理点击“公告信息管理”时,可查看公告信息;如需添加新的公告信息,点击右侧“添加”按钮,输入标题和正文,点击“确认”按钮进行添加。
(9)资源管理:管理员点击可查香水百科和百科分类;如需添加新的百科,点击“添加”按钮,上传封面图,输入标题,选择分类,输入标签、描述和正文,点击“确认”按钮进行添加。同时可对百科和分类进行增删改查。
(10)交流管理:管理员可以通过“交流管理”功能来管理和维护香水社区。可以查看用户的帖子,确保社区交流内容的健康和积极。此外,管理员还可以通过查询、重置和删除等功能,对社区中的信息进行有效的管理和维护。
管理员用例图如下:

图3-2 管理员用例图
3.3非功能性分析
香水分享平台的非功能性需求比如香水分享平台的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-3表格中:
表3-3香水分享平台非功能需求表
|
安全性 |
主要指香水分享平台数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
|
可靠性 |
可靠性是指香水分享平台能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。 |
|
性能 |
性能是影响香水分享平台占据市场的必要条件,所以性能最好要佳才好。 |
|
可扩展性 |
比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
|
易用性 |
用户只要跟着香水分享平台的页面展示内容进行操作,就可以了。 |
|
可维护性 |
香水分享平台开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
4系统设计
4.1系统设计流程
4.1.1用户登录流程
用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如图4-1所示。

图4-1登录流程图
4.1.2添加信息流程
管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如图4-2所示。

图4-2添加信息流程图
4.1.3修改信息流程
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入;若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图4-3所示。

图4-3修改信息流程图
4.1.4删除信息流程
用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节;若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如图4-4所示。

图4-4删除信息流程图
4.2系统功能模设计
通过系统的总体需求分析已经了解到系统的所有功能,本节将从普通用户、和管理员模块分别展开描述。其总体设计模块图如图4-5所示。

图4-5系统功能图
4.3数据库表ER
数据库概念模型是数据库设计的一个阶段,它描述了数据库中数据的逻辑结构和之间的关系,而不关注具体的实现细节[10]。概念模型通常用于数据库设计的初期阶段,以帮助开发人员和用户理解数据库中存储的数据以及数据之间的关系。
数据库概念模型通常采用高层次的概念来描述数据,常见的概念模型包括实体-关系模型(Entity-Relationship Model,ERM)、面向对象模型(Object-Oriented Model)等。在概念模型中,数据被抽象为实体(Entity)和实体之间的关系(Relationship),并且定义了实体的属性(Attribute),通常以E-R图来表达。系统总ER图如下。

图4-6系统ER图
4.4数据库表物理设计
表 4-1-access_token(登陆访问时长)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
token_id |
int |
|
是 |
是 |
临时访问牌ID |
|
2 |
token |
varchar |
64 |
否 |
否 |
临时访问牌 |
|
3 |
info |
text |
65535 |
否 |
否 |
信息 |
|
4 |
maxage |
int |
|
是 |
否 |
最大寿命:默认2小时 |
|
5 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
6 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
|
7 |
user_id |
int |
|
是 |
否 |
用户编号 |
表 4-2-article(文章)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
article_id |
mediumint |
|
是 |
是 |
文章id |
|
2 |
title |
varchar |
125 |
是 |
是 |
标题 |
|
3 |
type |
varchar |
64 |
是 |
否 |
文章分类 |
|
4 |
hits |
int |
|
是 |
否 |
点击数 |
|
5 |
praise_len |
int |
|
是 |
否 |
点赞数 |
|
6 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
7 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
|
8 |
source |
varchar |
255 |
否 |
否 |
来源 |
|
9 |
url |
varchar |
255 |
否 |
否 |
来源地址 |
|
10 |
tag |
varchar |
255 |
否 |
否 |
标签 |
|
11 |
content |
longtext |
4294967295 |
否 |
否 |
正文 |
|
12 |
img |
varchar |
255 |
否 |
否 |
封面图 |
|
13 |
description |
text |
65535 |
否 |
否 |
文章描述 |
表 4-3-article_type(文章分类)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
type_id |
smallint |
|
是 |
是 |
分类ID |
|
2 |
display |
smallint |
|
是 |
否 |
显示顺序 |
|
3 |
name |
varchar |
16 |
是 |
否 |
分类名称 |
|
4 |
father_id |
smallint |
|
是 |
否 |
上级分类ID |
|
5 |
description |
varchar |
255 |
否 |
否 |
描述 |
|
6 |
icon |
text |
65535 |
否 |
否 |
分类图标 |
|
7 |
url |
varchar |
255 |
否 |
否 |
外链地址 |
|
8 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
9 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-4-auth(用户权限管理)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
auth_id |
int |
|
是 |
是 |
授权ID |
|
2 |
user_group |
varchar |
64 |
否 |
否 |
用户组 |
|
3 |
mod_name |
varchar |
64 |
否 |
否 |
模块名 |
|
4 |
table_name |
varchar |
64 |
否 |
否 |
表名 |
|
5 |
page_title |
varchar |
255 |
否 |
否 |
页面标题 |
|
6 |
path |
varchar |
255 |
否 |
否 |
路由路径 |
|
7 |
parent |
varchar |
64 |
否 |
否 |
父级菜单 |
|
8 |
parent_sort |
int |
|
是 |
否 |
父级菜单排序 |
|
9 |
position |
varchar |
32 |
否 |
否 |
位置 |
|
10 |
mode |
varchar |
32 |
是 |
否 |
跳转方式 |
|
11 |
add |
tinyint |
|
是 |
否 |
是否可增加 |
|
12 |
del |
tinyint |
|
是 |
否 |
是否可删除 |
|
13 |
set |
tinyint |
|
是 |
否 |
是否可修改 |
|
14 |
get |
tinyint |
|
是 |
否 |
是否可查看 |
|
15 |
field_add |
text |
65535 |
否 |
否 |
添加字段 |
|
16 |
field_set |
text |
65535 |
否 |
否 |
修改字段 |
|
17 |
field_get |
text |
65535 |
否 |
否 |
查询字段 |
|
18 |
table_nav_name |
varchar |
500 |
否 |
否 |
跨表导航名称 |
|
19 |
table_nav |
varchar |
500 |
否 |
否 |
跨表导航 |
|
20 |
option |
text |
65535 |
否 |
否 |
配置 |
|
21 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
22 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-5-code_token(验证码)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
code_token_id |
int |
|
是 |
是 |
验证码ID |
|
2 |
token |
varchar |
255 |
否 |
否 |
令牌 |
|
3 |
code |
varchar |
255 |
否 |
否 |
验证码 |
|
4 |
expire_time |
timestamp |
|
是 |
否 |
失效时间 |
|
5 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
6 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-6-collect(收藏)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
collect_id |
int |
|
是 |
是 |
收藏ID |
|
2 |
user_id |
int |
|
是 |
是 |
收藏人ID |
|
3 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
|
4 |
source_field |
varchar |
255 |
否 |
否 |
来源字段 |
|
5 |
source_id |
int |
|
是 |
否 |
来源ID |
|
6 |
title |
varchar |
255 |
否 |
否 |
标题 |
|
7 |
img |
varchar |
255 |
否 |
否 |
封面 |
|
8 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
9 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-7-comment(评论)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
comment_id |
int |
|
是 |
是 |
评论ID |
|
2 |
user_id |
int |
|
是 |
是 |
评论人ID |
|
3 |
reply_to_id |
int |
|
是 |
否 |
回复评论ID |
|
4 |
content |
longtext |
4294967295 |
否 |
否 |
内容 |
|
5 |
nickname |
varchar |
255 |
否 |
否 |
昵称 |
|
6 |
avatar |
varchar |
255 |
否 |
否 |
头像地址 |
|
7 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
8 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
|
9 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
|
10 |
source_field |
varchar |
255 |
否 |
否 |
来源字段 |
|
11 |
source_id |
int |
|
是 |
否 |
来源ID |
表 4-8-forum(论坛)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
forum_id |
mediumint |
|
是 |
是 |
论坛ID |
|
2 |
display |
smallint |
|
是 |
否 |
排序 |
|
3 |
user_id |
mediumint |
|
是 |
否 |
用户ID |
|
4 |
nickname |
varchar |
16 |
否 |
否 |
昵称 |
|
5 |
praise_len |
int |
|
否 |
否 |
点赞数 |
|
6 |
hits |
int |
|
是 |
否 |
访问数 |
|
7 |
title |
varchar |
125 |
是 |
否 |
标题 |
|
8 |
keywords |
varchar |
125 |
否 |
否 |
关键词 |
|
9 |
description |
varchar |
255 |
否 |
否 |
描述 |
|
10 |
url |
varchar |
255 |
否 |
否 |
来源地址 |
|
11 |
tag |
varchar |
255 |
否 |
否 |
标签 |
|
12 |
img |
text |
65535 |
否 |
否 |
封面图 |
|
13 |
content |
longtext |
4294967295 |
否 |
否 |
正文 |
|
14 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
15 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
|
16 |
avatar |
varchar |
255 |
否 |
否 |
发帖人头像 |
|
17 |
type |
varchar |
64 |
是 |
否 |
论坛分类 |
|
18 |
istop |
int |
|
是 |
否 |
是否置顶 |
表 4-9-forum_type(论坛分类)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
type_id |
smallint |
|
是 |
是 |
分类ID |
|
2 |
name |
varchar |
16 |
是 |
否 |
分类名称 |
|
3 |
description |
varchar |
255 |
否 |
否 |
描述 |
|
4 |
url |
varchar |
255 |
否 |
否 |
外链地址 |
|
5 |
father_id |
smallint |
|
是 |
否 |
上级分类ID |
|
6 |
icon |
varchar |
255 |
否 |
否 |
分类图标 |
|
7 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
8 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-10-fragrant_classification(香调分类)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
fragrant_classification_id |
int |
|
是 |
是 |
香调分类ID |
|
2 |
fragrance_type |
varchar |
64 |
否 |
否 |
香调类型 |
|
3 |
create_time |
datetime |
|
是 |
否 |
创建时间 |
|
4 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-11-hits(用户点击)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
hits_id |
int |
|
是 |
是 |
点赞ID |
|
2 |
user_id |
int |
|
是 |
否 |
点赞人 |
|
3 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
4 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
|
5 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
|
6 |
source_field |
varchar |
255 |
否 |
否 |
来源字段 |
|
7 |
source_id |
int |
|
是 |
否 |
来源ID |
表 4-12-incense_list_information(香单信息)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
incense_list_information_id |
int |
|
是 |
是 |
香单信息ID |
|
2 |
chinese_name |
varchar |
64 |
否 |
否 |
中文名称 |
|
3 |
english_name |
varchar |
64 |
否 |
否 |
英文名称 |
|
4 |
perfume_brand |
varchar |
64 |
否 |
否 |
香水品牌 |
|
5 |
fragrance_type |
varchar |
64 |
否 |
否 |
香调类型 |
|
6 |
ordinary_user |
int |
|
否 |
否 |
普通用户 |
|
7 |
user_name |
varchar |
64 |
否 |
否 |
用户姓名 |
|
8 |
name_of_incense_list |
varchar |
64 |
否 |
否 |
香单名称 |
|
9 |
incense_single_grouping |
varchar |
64 |
否 |
否 |
香单分组 |
|
10 |
date_added |
date |
|
否 |
否 |
加入日期 |
|
11 |
note_information |
text |
65535 |
否 |
否 |
备注信息 |
|
12 |
create_time |
datetime |
|
是 |
否 |
创建时间 |
|
13 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
|
14 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
|
15 |
source_id |
int |
|
否 |
否 |
来源ID |
|
16 |
source_user_id |
int |
|
否 |
否 |
来源用户 |
表 4-13-notice(公告)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
notice_id |
mediumint |
|
是 |
是 |
公告ID |
|
2 |
title |
varchar |
125 |
是 |
否 |
标题 |
|
3 |
content |
longtext |
4294967295 |
否 |
否 |
正文 |
|
4 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
5 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-14-ordinary_user(普通用户)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
ordinary_user_id |
int |
|
是 |
是 |
普通用户ID |
|
2 |
user_name |
varchar |
64 |
否 |
否 |
用户姓名 |
|
3 |
user_gender |
varchar |
64 |
否 |
否 |
用户性别 |
|
4 |
user_area |
varchar |
64 |
否 |
否 |
用户地区 |
|
5 |
personality_signature |
varchar |
64 |
否 |
否 |
个性签名 |
|
6 |
examine_state |
varchar |
16 |
是 |
否 |
审核状态 |
|
7 |
user_id |
int |
|
是 |
否 |
用户ID |
|
8 |
create_time |
datetime |
|
是 |
否 |
创建时间 |
|
9 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-15-perfume_information(香水信息)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
perfume_information_id |
int |
|
是 |
是 |
香水信息ID |
|
2 |
chinese_name |
varchar |
64 |
是 |
是 |
中文名称 |
|
3 |
english_name |
varchar |
64 |
否 |
否 |
英文名称 |
|
4 |
perfume_brand |
varchar |
64 |
否 |
否 |
香水品牌 |
|
5 |
fragrance_type |
varchar |
64 |
否 |
否 |
香调类型 |
|
6 |
perfume_pictures |
varchar |
255 |
否 |
否 |
香水图片 |
|
7 |
perfume_attributes |
varchar |
64 |
否 |
否 |
香水属性 |
|
8 |
perfumer |
varchar |
64 |
否 |
否 |
调香师 |
|
9 |
fragrance_retention_time |
varchar |
64 |
否 |
否 |
留香时间 |
|
10 |
user_rating |
varchar |
64 |
否 |
否 |
用户评分 |
|
11 |
front_tone_composition |
text |
65535 |
否 |
否 |
前调成分 |
|
12 |
mid_tone_component |
text |
65535 |
否 |
否 |
中调成分 |
|
13 |
post_adjustment_component |
text |
65535 |
否 |
否 |
后调成分 |
|
14 |
introduction_to_perfume |
text |
65535 |
否 |
否 |
香水简介 |
|
15 |
details |
longtext |
4294967295 |
否 |
否 |
详情内容 |
|
16 |
hits |
int |
|
是 |
否 |
点击数 |
|
17 |
praise_len |
int |
|
是 |
否 |
点赞数 |
|
18 |
collect_len |
int |
|
是 |
否 |
收藏数 |
|
19 |
comment_len |
int |
|
是 |
否 |
评论数 |
|
20 |
recommend |
int |
|
是 |
否 |
智能推荐 |
|
21 |
incense_list_information_limit_times |
int |
|
是 |
否 |
加入香单限制次数 |
|
22 |
create_time |
datetime |
|
是 |
否 |
创建时间 |
|
23 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-16-perfume_leaderboard(香水排行榜)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
perfume_leaderboard_id |
int |
|
是 |
是 |
香水排行榜ID |
|
2 |
list_name |
varchar |
64 |
否 |
否 |
榜单名称 |
|
3 |
ranking_date |
date |
|
否 |
否 |
排行日期 |
|
4 |
chinese_name |
varchar |
64 |
否 |
否 |
中文名称 |
|
5 |
type_of_perfume |
varchar |
64 |
否 |
否 |
香水类型 |
|
6 |
ranking |
varchar |
64 |
否 |
否 |
排行名次 |
|
7 |
perfume_brand |
varchar |
64 |
否 |
否 |
香水品牌 |
|
8 |
perfume_pictures |
varchar |
255 |
否 |
否 |
香水图片 |
|
9 |
row_description |
text |
65535 |
否 |
否 |
排行说明 |
|
10 |
ranking_details |
longtext |
4294967295 |
否 |
否 |
排行详情 |
|
11 |
hits |
int |
|
是 |
否 |
点击数 |
|
12 |
praise_len |
int |
|
是 |
否 |
点赞数 |
|
13 |
collect_len |
int |
|
是 |
否 |
收藏数 |
|
14 |
comment_len |
int |
|
是 |
否 |
评论数 |
|
15 |
create_time |
datetime |
|
是 |
否 |
创建时间 |
|
16 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-17-praise(点赞)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
praise_id |
int |
|
是 |
是 |
点赞ID |
|
2 |
user_id |
int |
|
是 |
是 |
点赞人 |
|
3 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
4 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
|
5 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
|
6 |
source_field |
varchar |
255 |
否 |
否 |
来源字段 |
|
7 |
source_id |
int |
|
是 |
否 |
来源ID |
|
8 |
status |
tinyint |
|
是 |
否 |
点赞状态:1为点赞,0已取消 |
表 4-18-sensitive_vocabulary(敏感词汇)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
sensitive_vocabulary_id |
int |
|
是 |
是 |
敏感词汇ID |
|
2 |
sensitive_vocabulary |
varchar |
64 |
否 |
否 |
敏感词汇 |
|
3 |
create_time |
datetime |
|
是 |
否 |
创建时间 |
|
4 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-19-slides(轮播图)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
slides_id |
int |
|
是 |
是 |
轮播图ID |
|
2 |
title |
varchar |
64 |
否 |
否 |
标题 |
|
3 |
content |
varchar |
255 |
否 |
否 |
内容 |
|
4 |
url |
varchar |
255 |
否 |
否 |
链接 |
|
5 |
img |
varchar |
255 |
否 |
否 |
轮播图 |
|
6 |
hits |
int |
|
是 |
否 |
点击量 |
|
7 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
8 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-20-upload(文件上传)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
upload_id |
int |
|
是 |
是 |
上传ID |
|
2 |
name |
varchar |
64 |
否 |
否 |
文件名 |
|
3 |
path |
varchar |
255 |
否 |
否 |
访问路径 |
|
4 |
file |
varchar |
255 |
否 |
否 |
文件路径 |
|
5 |
display |
varchar |
255 |
否 |
否 |
显示顺序 |
|
6 |
father_id |
int |
|
否 |
否 |
父级ID |
|
7 |
dir |
varchar |
255 |
否 |
否 |
文件夹 |
|
8 |
type |
varchar |
32 |
否 |
否 |
文件类型 |
表 4-21-user(用户账户)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
user_id |
int |
|
是 |
是 |
用户ID |
|
2 |
state |
smallint |
|
是 |
否 |
账户状态:(1可用|2异常|3已冻结|4已注销) |
|
3 |
user_group |
varchar |
32 |
否 |
否 |
所在用户组 |
|
4 |
login_time |
timestamp |
|
是 |
否 |
上次登录时间 |
|
5 |
phone |
varchar |
11 |
否 |
否 |
手机号码 |
|
6 |
phone_state |
smallint |
|
是 |
否 |
手机认证:(0未认证|1审核中|2已认证) |
|
7 |
username |
varchar |
16 |
是 |
否 |
用户名 |
|
8 |
nickname |
varchar |
16 |
否 |
否 |
昵称 |
|
9 |
password |
varchar |
64 |
是 |
否 |
密码 |
|
10 |
|
varchar |
64 |
否 |
否 |
邮箱 |
|
11 |
email_state |
smallint |
|
是 |
否 |
邮箱认证:(0未认证|1审核中|2已认证) |
|
12 |
avatar |
varchar |
255 |
否 |
否 |
头像地址 |
|
13 |
open_id |
varchar |
255 |
否 |
否 |
针对获取用户信息字段 |
|
14 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
表 4-22-user_chat_friend(聊天用户好友)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
user_chat_friend_id |
int |
|
是 |
是 |
ID |
|
2 |
user_id |
int |
|
是 |
否 |
用户ID |
|
3 |
friend_user_id |
int |
|
是 |
否 |
用户好友ID |
|
4 |
friend_user_name |
varchar |
255 |
否 |
否 |
好友名称 |
|
5 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
6 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-23-user_chat_group(聊天用户群聊)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
user_chat_group_id |
int |
|
是 |
是 |
ID |
|
2 |
group_id |
int |
|
否 |
否 |
群聊ID |
|
3 |
group_name |
varchar |
255 |
否 |
否 |
群聊名称 |
|
4 |
user_id |
int |
|
否 |
否 |
用户ID |
|
5 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
6 |
update_time |
timestamp |
|
是 |
否 |
更新时间 |
表 4-24-user_chat_read(聊天用户消息)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
user_chat_read_id |
varchar |
255 |
是 |
是 |
ID |
|
2 |
user_id |
int |
|
否 |
否 |
接收人ID |
|
3 |
send_user_id |
int |
|
否 |
否 |
发送人ID |
|
4 |
group_id |
int |
|
否 |
否 |
群聊ID |
|
5 |
type |
int |
|
否 |
否 |
类型1-点对点消息,2-群聊消息 |
|
6 |
create_time |
timestamp |
|
否 |
否 |
时间 |
|
7 |
message |
text |
65535 |
否 |
否 |
消息 |
表 4-25-user_group(用户组)
|
编号 |
字段名 |
类型 |
长度 |
是否非空 |
是否主键 |
注释 |
|
1 |
group_id |
mediumint |
|
是 |
是 |
用户组ID |
|
2 |
display |
smallint |
|
是 |
否 |
显示顺序 |
|
3 |
name |
varchar |
16 |
是 |
否 |
名称 |
|
4 |
description |
varchar |
255 |
否 |
否 |
描述 |
|
5 |
source_table |
varchar |
255 |
否 |
否 |
来源表 |
|
6 |
source_field |
varchar |
255 |
否 |
否 |
来源字段 |
|
7 |
source_id |
int |
|
是 |
否 |
来源ID |
|
8 |
register |
smallint |
|
否 |
否 |
注册位置 |
|
9 |
create_time |
timestamp |
|
是 |
否 |
创建时间 |
|
10 |
update_time |
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.1.5香水信息
香水信息:在香水信息模块中,用户能够浏览不同品牌的香水信息列表,查看每款香水的图片、名称、品牌和香调类型等基本信息。点击感兴趣的香水可进入详情页,展示了更详细的香水描述,如调香师、留香时间、用户评分以及前调、中调和后调成分等,同时用户可点击“加入香单”按钮把喜欢的香水加入个人香单列表,记录加入日期与备注信息,便于日后管理和分享自己的香水收藏。此外,用户还可以利用点赞、收藏等功能互动交流。界面如下图所示。


图5-5香水信息界面。 图5-6香单信息界面。
5.1.6香水排行榜
香水排行榜:在香水排行榜模块中,用户可以通过香水排行榜功能查看最受欢迎的香水,排行榜根据点赞数、点击数、收藏数和发布时间进行排序。用户可以轻松找到高人气的香水,并根据自己的喜好进行选择点赞、收藏和评论。界面如下图所示。

图5-7香水排行榜界面。
5.1.7香水社区
香水社区:用户点击可查看交流论坛帖子列表,可对帖子进行查看、点赞、收藏和评论;同时可点击“发布”按钮填写论坛发布信息,包括封面图、标题、分类、标签和正文。界面如下图所示。

图5-8香水社区界面。
5.1.8我的
我的:我的包含多个功能模块,用户可以在“我的”页面查看和管理个人信息,包括收藏的香水、香单信息和参与的社区活动。此外,用户还可以通过该页面进行退出登录操作,确保账户安全。界面如下图所示。

图5-9我的界面。
5.2管理员功能实现
5.2.1香水信息管理
香水信息管理:管理员可以通过香水信息管理功能,先点击“下载导入文档”按钮获取模板,将需要添加或更新的香水信息填入文档后,再点击“导入”按钮完成数据上传。此外,管理员也可以直接点击“香水信息添加”按钮在添加页面中添加香水信息,也可对信息查看、编辑和删除,确保平台数据库的准确性和完整性。界面如下图所示。

图5-10香水信息管理界面。

图5-11香水信息添加界面。
5.2.2香水排行榜管理
香水排行榜管理:管理员点击可查看香水排行榜列表和香水排行榜添加;点击进入“香水排行榜添加”看填写相关信息,包括榜单名称、排行日期、中文名称、香水类型、排行名词、香水品牌、香水图片、排行说明和排行详情。界面如下图所示。

图5-12 香水排行榜添加界面。
5.2.3系统管理
系统管理:管理员可以通过系统管理功能,进行轮播图管理和敏感词管理。在轮播图管理中,可以上传、编辑和删除首页展示的图片,确保平台视觉效果的更新和美观。在敏感词管理中,可以设置和维护敏感词汇列表,过滤不当内容,保障平台信息的安全性和合规性。界面如下图所示。

图5-13系统管理界面。
5.2.4资源管理
资源管理:管理员点击可查香水百科和百科分类;如需添加新的百科,点击“添加”按钮,上传封面图,输入标题,选择分类,输入标签、描述和正文,点击“确认”按钮进行添加。同时可对百科和分类进行增删改查。界面如下图所示。

图5-14资源管理界面。
6系统测试
6.1测试目的
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
6.2测试方法
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例[11]。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
6.3测试内容
用户登录功能测试
表6-1 用户登录功能测试表
|
用例名称 |
普通用户登录系统 |
|
目的 |
测试用户通过正确的用户名和密码可否登录功能 |
|
前提 |
未登录的情况下 |
|
测试流程 |
1) 进入登录页面 2) 输入正确的用户名和密码 |
|
预期结果 |
用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
|
实际结果 |
实际结果与预期结果一致 |
香水信息查看功能测试:
表6-2 香水信息查看功能测试表
|
用例名称 |
香水信息查看测试 |
|
目的 |
测试用户能否正常查看香水信息 |
|
前提 |
用户登录 |
|
测试流程 |
点击首页的香水信息 |
|
预期结果 |
是否可以查看香水信息列表 |
|
实际结果 |
实际结果与预期结果一致 |
香水信息添加功能测试:
表6-3香水信息添加功能测试表
|
用例名称 |
香水信息添加管理测试 |
|
目的 |
测试香水信息功能能否正常编辑发布 |
|
前提 |
管理员正常登录 |
|
测试流程 |
(1)管理员登录,点击“香水信息管理”,再点击“香水信息添加”,填写相关信息。 (2)点击确认按钮提交 |
|
预期结果 |
页面显示新的香水信息 |
|
实际结果 |
实际结果与预期结果一致 |
密码修改功能测试:
表6-4密码修改功能测试表
|
用例名称 |
密码修改测试用例 |
|
目的 |
测试管理员密码修改功能 |
|
前提 |
管理员用户正常登录情况下 |
|
测试流程 |
1)管理员密码修改并完成填写。 2)点击进行提交。 |
|
预期结果 |
使用新的密码可以登录 |
|
实际结果 |
实际结果与预期结果一致 |
6.4测试结论
根据以上测试结果,可以总结出系统的各项功能均能按预期正常运行。用户登录功能测试表明,用户在输入正确的用户名和密码后能够成功登录;香水信息看功能测试验证了用户能够正常搜索查看香水信息;香水信息管理功能成功完成了信息发布和搜索显示;管理员密码修改功能也能顺利完成密码更新,且新密码能够正常登录。总的来说,系统功能完善,用户体验良好,各项功能均符合预期。
7结论
本研究成功设计并实现了一个基于Spring Boot框架和微信小程序技术的香水分享平台,该平台集成了香水信息浏览、用户互动交流、个性化推荐以及后台管理等多种功能。通过整合详尽的香水资料查询、用户社区互动、个性化的香水推荐与管理等功能模块,平台不仅提升了用户体验,还促进了香水文化的传播与发展。用户能够便捷地获取香水信息、分享使用心得,并根据个人喜好进行香水收藏和管理。同时,管理员端的功能设置确保了平台内容的质量与安全,实现了对香水信息的有效管理和维护。研究表明,这种综合性的服务平台能够极大地满足用户需求,增强用户参与感和满意度。
此外,通过对开发过程的研究和实践,我们验证了采用Spring Boot框架和微信小程序技术在构建高效、灵活的网络服务平台上的有效性。这些技术的应用不仅简化了开发流程,还提高了系统的可扩展性和维护性。尤其在当前数字化快速发展的背景下,本研究为类似电子商务平台的设计与优化提供了有价值的参考案例和技术支持。未来的工作可以进一步探索如何利用大数据分析和人工智能技术提升个性化推荐的准确性,以及如何通过引入更多社交元素来增强用户的互动性和粘性,从而持续推动香水分享平台的发展和创新。综上所述,本研究不仅为香水爱好者提供了一个全面的信息服务平台,也为行业内的技术应用和发展提供了新的思路。
参考文献
致谢
在本项目的实施过程中,许多人给予了我无私的支持和帮助,令我深感感谢。
我要衷心感谢我的指导老师。不仅在项目的初期提供了宝贵的建议,还在整个过程中给予了我细致入微的指导。专业知识和严谨态度始终激励着我,让我在遇到困难时能够保持信心,继续前行。每一次的讨论都让我对项目有了更深刻的理解,帮助我克服了许多技术难题。
我也要感谢参与用户测试的同学们。你们的反馈和建议为我们系统的优化提供了重要的参考,帮助我们更好地理解用户需求。正是因为有了你们的参与,我们才能够不断改进,提升系统的用户体验。感谢所有支持我的家人和朋友。你们的理解与鼓励让我在项目的紧张时刻始终能够保持积极的心态,成为我前进的动力。每当我遇到挑战时,想到你们的支持,我就能够重新振作,继续努力。最后,我要感谢所有在我职业发展过程中给予帮助的人。每一次的交流与分享都让我受益匪浅,拓宽了我的视野,让我在这条道路上走得更加坚定。
项目的完成不仅是我个人努力的结果,更是许多人共同支持与协作的成果。在此,我再次向所有关心和支持我的人表达衷心的感谢。希望未来我们能够继续携手,共同创造更多的价值和成就。
附录
系统核心代码设计
代码:
连接数据库的文件在Resources 文件夹下的application.yml文件,代码如下:
server:
port: 5000
servlet:
context-path: /api
spring:
mvc:
static-path-pattern: /upload/**
resources:
static-locations: file:此处填写地址/project93355/server/src/main/resources/static
datasource:
jdbc:mysql://127.0.0.1:3306/projectxxxxx?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
jackson:
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
项目启动文件Application.java,代码如下:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableJpaRepositories
@MapperScan("com.project.demo.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
修改数据代码如下:
@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);
}
删除一条数据代码如下:
@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());
}
通过请求的参数获取列表数据,代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
获取某个组下面的数量,代码如下:
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Integer value= service.selectSqlToInteger(service.groupCount(service.readQuery(request), service.readConfig(request)));
return success(value);
}
注册页登录代码如下:
/**
* 注册
* @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);
}
MD5加密,代码如下:
public String encryption(String plainText) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return re_md5;
}
登录页代码如下:
/**
* 登录
* @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<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
找回密码,接收用户输入的用户名、密码、验证码,并进行条件判断,代码如下:
/**
* 找回密码
* @param form
* @return
*/
@PostMapping("forget_password")
public Map<String, 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, "密码不能为空");
}
请关注点赞+私信博主,免费领取项目源码
网硕互联帮助中心



![基于python的人脸检测识别录像系统[python]-计算机毕业设计源码+LW文档-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/02/20260210120457-698b1ee9bfff8-220x150.jpg)

评论前必须登录!
注册