SpringBoot的校园美食推荐系统的设计与实现-附源码42284

摘 要

基于SpringBoot的校园美食推荐系统项目采用B/S模式,以Java编程语言和MySQL数据库为基础,致力于为校园用户提供便捷的美食推荐和订餐体验。系统主要功能模块包括系统用户管理、美食介绍管理、美食分类管理、美食标签管理、系统管理、资源管理和商城管理。通过面向对象的开发模式,系统能够满足用户线上美食推荐和订餐的需求。

该校园美食推荐系统项目的背景、作用和意义进行了分析,为研究工作提供了合理性基础。针对校园用户对美食推荐和订餐的需求和技术问题进行了详细分析,验证了系统的必要性和技术可行性。在技术方面,系统采用SpringBoot框架,结合MySQL数据库进行开发,实现了系统的设计和部署,以满足用户的实际需求。

本次报告首先介绍了校园美食推荐系统项目的背景和意义,然后对系统的需求和技术问题进行了分析,最后介绍了系统的设计思路和实现方法。通过该校园美食推荐系统的开发和部署,为校园用户提供了便捷的美食推荐和订餐服务,促进了校园美食文化的传播和推广。

关键词:校园美食推荐系统;Spring Boot框架;MySQL数据库。

 

A Campus Food Recommendation System Based on SpringBoot

Abstract

The campus food recommendation system project based on SpringBoot adopts B/S mode, based on Java programming language and MySQL database, committed to providing convenient food recommendation and ordering experience for campus users. The main functional modules of the system include system user management, food introduction management, food classification management, food label management, system management, resource management, and mall management. Through an object-oriented development model, the system can meet the needs of users for online food recommendation and ordering.

The background, role, and significance of the campus food recommendation system project were analyzed, providing a reasonable basis for research work. A detailed analysis was conducted on the needs and technical issues of campus users for food recommendation and ordering, verifying the necessity and technical feasibility of the system. In terms of technology, the system adopts the SpringBoot framework and is developed in conjunction with MySQL database to achieve system design and deployment to meet the actual needs of users.

This report first introduces the background and significance of the campus food recommendation system project, then analyzes the requirements and technical issues of the system, and finally introduces the design ideas and implementation methods of the system. Through the development and deployment of the campus food recommendation system, convenient food recommendation and ordering services have been provided to campus users, promoting the dissemination and promotion of campus food culture.

Key words:Campus food recommendation system; Spring Boot framework; MySQL database.

  

第1章 绪论

1.1 研究背景

1.2 研究意义

1.3 国内外研究动态

1.4 论文结构与章节安排

第2章 相关技术介绍

2.1 Springboot框架

2.2 Java语言与JDK开发环境

2.3 B/S结构

2.4 MySQL数据库

2.5 Tomcat服务器

第3章 系统需求分析

3.1 可行性分析

3.1.1 技术可行性分析

3.1.2 经济可行性分析

3.1.3 操作可行性分析

3.2 功能需求分析

3.3 非功能性需求分析

第4章 系统概要设计

4.1 系统体系结构

4.1.1 前端用户功能结构图设计

4.1.2 后端管理员功能结构图设计

4.2 系统功能设计

4.3 子模块设计设计

4.3.1 系统前端界面

4.3.2 系统后端界面

第5章 数据库设计

5.1 数据库概念结构设计

5.2 数据库逻辑结构设计

5.3 表access_token (登陆访问时长)

5.4 表address (收货地址:)

5.5 表article (文章:用于内容管理系统的文章)

5.6 表article_type (文章分类)

5.7 表auth (用户权限管理)

5.8 表cart (购物车)

5.9 表collect (收藏)

5.10 表comment (评论)

5.11 表food_classification (美食分类)

5.12 表food_introduction (美食介绍)

5.13 表food_labels (美食标签)

5.14 表food_mall (美食商城)

5.15 表goods (商品信息)

5.16 表goods_type (商品类型)

5.17 表hits (用户点击)

5.18 表logistics_delivery (物流配送)

5.19 表notice (公告)

5.20 表order (订单)

5.21 表praise (点赞)

5.22 表regular_users (普通用户)

5.23 表slides (轮播图)

5.24 表upload (文件上传)

5.25 表user (用户账户:用于保存用户登录信息)

5.26 表user_group (用户组:用于用户前端身份和鉴权)

第6章 详细设计与实现

6.1 前台用户功能模块

6.1.1 前台首页界面

6.1.2 注册界面

6.1.3 登录界面

6.1.4 美食商城详情界面

6.1.5 购物管理界面

6.1.6 订单管理界面

6.2 管理员功能模块

6.2.1 用户管理界面

6.2.2 美食标签界面

6.2.3 美食分类界面

6.2.4 商城管理界面

第7章 系统的测试

7.1 测试的目的

7.2 系统测试用例

7.3 系统测试结果

第8章 总结与展望

参考文献

致  谢

第1章 绪论

1.1 研究背景

随着科技的发展和互联网的普及,人们的生活方式发生了翻天覆地的变化。特别是在疫情之后,线上服务成为了主流,极大地改变了人们的消费习惯。餐饮行业作为服务业的重要组成部分,也受到了这一趋势的深刻影响。传统的餐饮模式面临着诸多挑战,如客流量不稳定、服务效率不高、菜品更新不及时等。因此,开发一款能够解决这些问题,并满足用户日益增长的线上点餐需求的系统变得尤为重要。

SpringBoot作为一种轻量级、快速开发的Java框架,具有高度的灵活性和可扩展性,非常适合用于构建Web应用。基于SpringBoot的校园美食推荐系统,旨在通过技术手段,提升校园餐饮服务的品质和效率。该系统能够整合校园内各餐饮商家的信息,为用户提供丰富多样的菜品选择,并通过智能推荐算法,根据用户的口味偏好和历史记录,推送最合适的菜品。

此外,该系统还能够实现线上支付、订单跟踪、评价反馈等功能,为用户提供更加便捷的一站式服务。同时,通过对数据的分析和挖掘,商家可以了解用户的需求和偏好,优化菜品结构和服务流程,提高经营效率和盈利能力。

因此,基于SpringBoot的校园美食推荐系统的研究背景,是基于当前互联网技术的发展、消费者行为的改变以及餐饮行业转型升级的需求。通过该系统的研究和开发,不仅可以提升校园餐饮服务的品质和效率,还可以推动餐饮行业的数字化、智能化发展。

1.2研究意义

   基于SpringBoot的校园美食推荐系统的研究具有深远的意义和广泛的应用前景。随着信息技术的快速发展和互联网的普及,校园美食推荐系统作为一种创新的服务模式,为校园用户提供了便捷、个性化的美食推荐和订餐体验,对校园生活的改善和美食文化的传播具有重要影响。

首先,该系统的研究和实施有助于提升校园生活品质和用户体验。通过智能化的美食推荐和便捷的订餐服务,学生和教职工可以更便利地选择心仪的美食,享受高质量的用餐体验,从而提高校园生活的舒适度和便捷性。

其次,校园美食推荐系统的推广对于校园商家和餐饮业者来说也具有重要意义。系统为商家提供了一个新的营销平台,帮助他们拓展市场、增加曝光度,并吸引更多顾客。通过系统的推广,校园内的餐饮业态将更加多样化,促进了校园美食文化的繁荣和发展。

此外,基于SpringBoot的校园美食推荐系统的研究成果对于推动校园信息化建设和智慧校园建设具有重要意义。系统的数字化服务平台为校园提供了便捷的信息交流和服务平台,推动了校园信息化水平的提升,助力校园向数字化智慧化方向迈进。

综上所述,基于SpringBoot的校园美食推荐系统的研究具有提升校园生活品质、促进校园商家发展、推动校园信息化建设和智慧校园建设等多重意义。该系统的实施将为校园社区带来更多便利和优质的服务,为校园文化和校园管理带来新的活力和机遇。

1.3国内外研究动态

一、国外研究动态

在国外,餐饮行业的发展与科技创新紧密相连。美国作为餐饮业的领先者,率先应用了多项先进技术,如大数据分析、云计算等,来提升餐饮服务的效率和质量。特别是在外卖和点餐系统方面,美国已经有了相对成熟的市场和技术应用。例如,通过自然语言处理(NLP)技术,使得用户可以通过语音或文字输入自己的需求,系统则能够智能推荐或生成相应的订单。

日本在战后受到美国的影响,其餐饮业也经历了快速的变革。他们不仅引进了美国的先进经验,还结合了本土的餐饮文化,形成了独特的餐饮服务体系。例如,许多日本餐厅都采用了电子菜单和移动支付,为用户提供更加便捷的服务体验。

随着这些先进技术的应用,欧洲等其他地区也逐渐开始跟进,推动餐饮业向数字化、智能化方向发展。

二、国内研究动态

相比之下,国内餐饮业在科技应用方面起步较晚,但发展势头迅猛。自2002年上海的一家高档餐厅首次使用在线订餐系统以来,这一技术迅速在全国范围内得到推广。特别是在新冠肺炎疫情爆发后,由于线下实体受到严重冲击,线上订餐和外卖服务得到了前所未有的关注和发展。

在这一背景下,基于SpringBoot的校园美食推荐系统应运而生。该系统结合了大数据、等先进技术,能够根据学生的口味、偏好和历史订单等信息,智能推荐适合的美食。同时,该系统还提供了便捷的在线支付和订单管理功能,极大地提高了学生的用餐体验和商家的服务效率。

此外,随着移动互联网的普及和智能设备的快速发展,国内餐饮业在数字化转型方面也在不断探索和创新。例如,许多餐厅开始采用智能机器人送餐、无人配送等技术,为用户提供更加智能、高效的服务体验。

三、总结与展望

无论是国外还是国内,餐饮业都在经历着数字化转型的浪潮。基于SpringBoot的校园美食推荐系统作为其中的一种应用形式,不仅提高了学生的用餐体验和商家的服务效率,也为餐饮业的数字化转型提供了有益的参考和借鉴。未来,随着技术的不断发展和创新,相信餐饮业将会迎来更加智能化、便捷化的新时代。

1.4论文结构与章节安排

本次写作的论文,在结构方面主要分为七大部分,每一部分都必不可少,共同组合形成一个完好的论文结构,具体的安排列出如下。

绪论部分,该部分讲述的是校园美食推荐系统的开发背景,明确开发的意义以及系统的研究动态,并对系统的整个章节安排进行介绍。

系统分析部分,该部分首先从可行性入手进行分析,明确程序开发可行后,进而对程序的功能以及姓名需求进行分析。

系统概要设计,对系统前后台的功能分别进行设计,然后完成系统的总体功能以及各个子模块的设计。

系统数据库的设计,对系统的数据库实体以及数据库表进行设计

系统的实现部分,对系统每一角色主要实现的功能的页面来进行展示一下。

系统测试部分,介绍测试的测试目的,用例,完成对程序测试工作,让投入运行的程序减少出错的几率,力求最好。

总结部分,此刻所有的工作都已经完成了,在此进行总结,展望。

第2章 相关技术介绍

2.1 Springboot框架

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。

2.2 Java语言与JDK开发环境 

Java是美国sun公司所推出的一款程序设计语言,其能够在多个平台内应用,具有良好兼容性,进而其凭借自身优势在数据中心、个人PC与科技超级计算机等平台内广泛应用,具有目前最为庞大的开发者专业社群[3]。

JDK为美国sun公司为java开发员所推出的一款全新产品,要是没有JDK的情况下,所安装的java程序也就无法运行[4]。

2.3 B/S结构

基于Java技术开发的B/S架构系统,需要借助Tomcat服务器应用程序进行部署运行[5]。用户访问系统的时候,通过浏览器向应用程序服务器端发起访问请求,服务器端的程序在接到用户请求以后,服务器端应用程序对客户请求做出相应,在调用服务器端的业务逻辑程序完成和数据库端的交互,进一步生成相应的HTML/XML数据,最终把结果反馈给浏览器端用户[5]。

在该系统的开发中,开发模式采用B/S架构技术进行实现,通过部署服务器端应用程序,实现用户通过网站域名或者内网IP地址访问系统,实现系统中数据的动态化呈现和管理,加之页面效果的动态化呈现,不仅提升了页面的表现力,而且管理者可以随时更新系统中的各种信息,充分满足管理者和访问用户之间的信息交互[6]。

2.4 MySQL数据库

MySQL经过多次的更新,功能层面已经非常的丰富和完善了,从MySQL4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的MySQL支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷[7][8]。

针对本文中设计的产业园区项目信息管理系统在实际的实现过程中,最终选择MySQL数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的MySQL来对产业园区项目信息管理系统后台数据进行存储操作[9][10]。

2.5 Tomcat服务器

Tomcat软件是在一个开放的、参与式的环境中开发的,许多人都喜欢使用它[13]。它可以独立的被应用,却不适用于并发访问较高的情况。它是一个小型的服务连接器,程序员用它来测试服务器页面。Tomcat服务器的性能稳定、容易上手、不需要消费即可获得等,这些益处抓住开发者的眼球,使用者擢发难数[11]。

 

第3章 系统需求分析

3.1可行性分析

可行性分析是系统分析的第一步,通过可行性分析我们可以得出系统是不是值得开发,如果系统的开发是不可信的,那么就没有必要再进行下面的操作,对于本校园美食推荐系统在可行性方面进行了技术、经济以及操作的分析。

3.1.1技术可行性分析

校园美食推荐系统在技术上采用的是JAVA语言、基于B/S模式,后台使用了Springboot框架结合MYSQL数据库,这些技术在校期间都已经学习过,而且用这些技术开发过一些小的系统,同时在实际开发中JAVA功能强大被普通应用,因此开发技术是没有问题的。

3.1.2经济可行性分析

开发校园美食推荐系统并不需要投入太多,开发工具、服务器、数据库等,都可以通过网络搜索、下载、安装,只需要一台普通的计算机就可以完成操作,而且在系统功能规划上都是通过问卷调查了解用户需求,通过百度、知网库、学校图书馆查阅相关系统,了解它们对系统具体实现的功能需求,然后进行设计开发,不存在任何开销,因此系统的开发在经济方面是可行的。

3.1.3 操作可行性分析

校园美食推荐系统在开发的时候充分了解用户群体,对于没有学习过计算机的用户也进行考虑在内,在系统的开发中首页有醒目的导航栏,使得即使没有学习过计算机课程的用户,也可以根据导航栏的提示进行操作,非常方便,因此系统在操作上是可行的。

3.2功能需求分析

(1)校园美食推荐系统的功能主要分为前台用户根据自己的需求进行注册登录,浏览美食信息并对选中的美食进行下单购买操作。后台系统为管理员、管理员则主要对系统用户管理、美食分类管理、美食介绍管理、美食标签管理、系统管理、系统公告管理和资源管理、商城管理进行处理。

用户用例图如下所示。

3-1 用户用例图

管理员用例图如下所示。

3-2 管理员用例图

(2)美食商城模块:管理员在后台可以对美食商城进行增删改查,管理员对美食商城的美食进行新增、修改或删除,用户则实现美食的加购、评论、购买等操作。如下图3-3所示。

3-3菜品信息模块用例图

(3)购物管理:用户对喜欢的美食可以进行购买,可以选择立即购买或者加入到购物车中进行购买,如下图3-4所示。

3-4购物车管理模块用例图

(4)订单管理:在校园美食推荐系统中,用户和管理员都能够管理订单,可以对订单进行查看、删除。如下图3-5所示。

3-5订单管理模块用例图

3.3非功能性需求分析

校园美食推荐系统的性能性需求分析主要是分析本校园美食推荐系统的安全性怎么样(是否会泄露用户个人信息),可靠性怎么样(用户操作的时候是不是能够根据实际操作显示信息),性能怎么样(运行是否操作流畅),可拓展性怎么样(功能能否继续拓展)等。具体可以表示在如下3-1表格中:

3-1 校园美食推荐系统非功能需求表

安全性

主要指校园美食推荐系统数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指校园美食推荐系统能够按照用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响校园美食推荐系统占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着校园美食推荐系统的页面展示内容进行操作,就可以了。

可维护性

校园美食推荐系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

第4章 系统概要设计

4.1系统体系结构

本校园美食推荐系统总体的体系结构图分为前端用户体系结构和后端管理员体系结构,其具体结构图如图4-1和图4-2所示

4.1.1前端用户功能结构图设计

4-1 校园美食推荐系统前端功能结构图

4.1.2后端管理员功能结构图设计

4-2 校园美食推荐系统后端功能结构图

4.2系统设计

用户管理模块

该模块是为所有用户登录设计的,如注册用户这种普通用户登录后只能进行自己的普通功能操作(如个人信息修改),管理员能对整个系统的数据进行管理,主要是用户的登录权限以及用户登录后在系统里的操作权限。

美食商城模块

普通用户和美食商城的美食信息存在学习关系,关系为一对多,根据美食信息用户将美食购买数据传入到订单数据中,操作人为普通用户,然后生成订单列表,普通用户查看个人历史订单列表,可以进行数据销毁。

美食资讯模块

普通用户和美食资讯存在学习关系,关系为一对多,根据美食资讯来将评论数据传入到美食资讯数据中,操作人为普通用户,然后生成评论列表,普通用户可以进行数据销毁。

美食介绍维护模块

操作人来录入美食介绍数据,点击美食介绍录入按钮,依次填写要录入的美食介绍数据,点击提交按钮,将数据提交至数据库,然后刷新美食介绍数据页面,每条数据右边有删除和编辑按钮,来完成相应的删除和更新功能。

美食分类模块

管理员点击美食分类管理菜单,点击新增添加美食分类,添加美食分类数据,填写标题、内容、类别、图片,提交成功后,美食分类管理页面刷新,新数据成功载入页面。

订单管理模块

订单管理为用户订单页面和管理员订单管理页面,用户登录系统后,选择想要加购的美食,生成订单,管理员查询该订单信息,是否生成已支付订单,并对此订单点击发货。

4.3子模块设计设计

4.3.1系统前端界面

系统前端普通用户的功能包含了首页、系统公告、美食资讯、美食商城、商城管理、美食介绍、个人中心等六部分。

(1)用户在前台可以查看美食信息,让用户了解美食的各种资讯,可以对自己喜欢的美食进行加购,也可以实现对美食的评论,与共同爱好者产生交流,用例说明如下表所示:

4-1 美食信息用例图

用例名称

美食信息加购/评论

角色

普通用户

用例说明

用户在前台查看美食信息,对喜欢的美食进行加购、评论

前置条件

用户登录

后置条件

对用户的加购、评论在系统中展示出来

基本事件流

1、用户通过浏览器进入本校园美食推荐系统

2、用户登录到系统当中

3、用户进入美食推荐首页列表,选择商品进入详情

4、用户点击加购或者评论

5、在评论框输入评论内容,点击提交

推展流程

异常事件流

1、用户没有登录

2、输入的评论内容为空

其他

(2)校园美食推荐系统主要的功能就是订餐,所有在系统中用户可以选择自己喜欢的美食进行加入购物车进行购买,用例说明如下表所示:

4-2 美食用例图

用例名称

美食购买

角色

普通用户

用例说明

用户在前台查看美食商城中心,对喜欢的商品进行加购、评论、立即购买、加入购物车

前置条件

用户登录

后置条件

对美食加入购物车或者立即购买

基本事件流

1、用户通过浏览器进入本校园美食推荐系统

2、用户登录到系统当中

3、用户进入美食分类,选择商品进入详情

4、加入购物车或者立即购买

5、在评论框输入评论内容,点击提交

拓展流程

选择支付方式

异常事件流

1、用户没有登录,需要注册登录后才能操作

2、购买失败需要取消付款

其他

4.3.2系统后端界面

校园美食推荐系统的后台是由管理员进行操作的,主要实现管理员对网站信息、人员信息、美食标签、美食介绍、美食分类、资源管理、商城管理以及个人信息的管理。

4-3 美食管理用例图

用例名称

美食分类管理

角色

管理员用户

用例说明

对系统当中的美食分类进行增删改查

前置条件

管理员登录

后置条件

基本事件流

1、管理员通过后台登录到系统当中

2、选择美食分类管理下的分类按钮

3、显示系统当中的所有的美食分类信息,可以输入关键词查询

4、选择内容进行增删改查

5、点击提交

拓展流程

异常事件流

输入的美食信息内容不正确,提示错误信息

其他

第5章 数据库设计

数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。

5.1 数据库概念结构设计

下面是整个校园美食推荐系统中主要的数据库表总E-R实体关系图。

5-1 校园美食推荐系统总E-R关系图

5.2数据库逻辑结构设计

通过上一小节中校园美食推荐系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

    1. 表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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. 表address (收货地址:)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

address_id

int

10

0

N

Y

收货地址:

2

name

varchar

32

0

Y

N

姓名:

3

phone

varchar

13

0

Y

N

手机:

4

postcode

varchar

8

0

Y

N

邮编:

5

address

varchar

255

0

N

N

地址:

6

user_id

mediumint

8

0

N

N

用户ID:[0,8388607]用户获取其他与用户相关的数据

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

default

bit

1

0

N

N

0

默认判断

    1. 表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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. 表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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 (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

    1. 表cart (购物车)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

cart_id

int

10

0

N

Y

购物车ID:

2

title

varchar

64

0

Y

N

标题:

3

img

varchar

255

0

N

N

0

图片:

4

user_id

int

10

0

N

N

0

用户ID:

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

state

int

10

0

N

N

0

状态:使用中,已失效

8

price

double

9

2

N

N

0.00

单价:

9

price_ago

double

9

2

N

N

0.00

原价:

10

price_count

double

11

2

N

N

0.00

总价:

11

num

int

10

0

N

N

1

数量:

12

goods_id

mediumint

8

0

N

N

商品id:[0,8388607]

13

type

varchar

64

0

N

N

未分类

商品分类:

14

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

    1. 表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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 (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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. 表food_classification (美食分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

food_classification_id

int

10

0

N

Y

美食分类ID

2

food_classification

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. 表food_introduction (美食介绍)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

food_introduction_id

int

10

0

N

Y

美食介绍ID

2

food_name

varchar

64

0

Y

N

美食名称

3

cover

varchar

255

0

Y

N

封面

4

food_classification

varchar

64

0

Y

N

美食分类

5

taste

varchar

64

0

Y

N

口味

6

production_materials

varchar

64

0

Y

N

制作材料

7

purchase_link

varchar

255

0

Y

N

购买链接

8

creating_videos

varchar

255

0

Y

N

制作视频

9

food_introduction

longtext

2147483647

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. 表food_labels (美食标签)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

food_labels_id

int

10

0

N

Y

美食标签ID

2

food_labels

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. 表food_mall (美食商城)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

food_mall_id

int

10

0

N

Y

美食商城ID

2

food_specifications

varchar

64

0

Y

N

美食规格

3

food_flavors

varchar

64

0

Y

N

美食口味

4

food_labels

varchar

64

0

Y

N

美食标签

5

praise_len

int

10

0

N

N

0

点赞数

6

recommend

int

10

0

N

N

0

智能推荐

7

cart_title

varchar

125

0

Y

N

标题:[0,125]用于产品html的标签中

8

cart_img

text

65535

0

Y

N

封面图:用于显示于产品列表页

9

cart_description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

10

cart_price_ago

double

8

2

N

N

0.00

原价:[1]

11

cart_price

double

8

2

N

N

0.00

卖价:[1]

12

cart_inventory

int

10

0

N

N

0

商品库存

13

cart_type

varchar

64

0

N

N

未分类

商品分类:

14

cart_content

longtext

2147483647

0

Y

N

正文:产品的主体内容

15

cart_img_1

text

65535

0

Y

N

主图1:

16

cart_img_2

text

65535

0

Y

N

主图2:

17

cart_img_3

text

65535

0

Y

N

主图3:

18

cart_img_4

text

65535

0

Y

N

主图4:

19

cart_img_5

text

65535

0

Y

N

主图5:

20

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

21

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

    1. 表goods (商品信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

goods_id

mediumint

8

0

N

Y

产品id:[0,8388607]

2

title

varchar

125

0

Y

N

标题:[0,125]用于产品和html的<title>标签中

3

img

text

65535

0

Y

N

封面图:用于显示于产品列表页

4

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

5

price_ago

double

8

2

N

N

0.00

原价:[1]

6

price

double

8

2

N

N

0.00

卖价:[1]

7

sales

int

10

0

N

N

0

销量:[0,1000000000]

8

inventory

int

10

0

N

N

0

商品库存

9

type

varchar

64

0

N

N

商品分类:

10

hits

int

10

0

N

N

0

点击量:[0,1000000000]访问这篇产品的人次

11

content

longtext

2147483647

0

Y

N

正文:产品的主体内容

12

img_1

text

65535

0

Y

N

主图1:

13

img_2

text

65535

0

Y

N

主图2:

14

img_3

text

65535

0

Y

N

主图3:

15

img_4

text

65535

0

Y

N

主图4:

16

img_5

text

65535

0

Y

N

主图5:

17

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

18

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

19

customize_field

text

65535

0

Y

N

自定义字段

20

source_table

varchar

255

0

Y

N

来源表:

21

source_field

varchar

255

0

Y

N

来源字段:

22

source_id

int

10

0

N

N

0

来源ID:

23

user_id

int

10

0

Y

N

0

添加人

    1. 表goods_type (商品类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

int

10

0

N

Y

商品分类ID:

2

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

3

name

varchar

255

0

Y

N

商品名称:

4

desc

varchar

255

0

Y

N

描述:

5

icon

varchar

255

0

Y

N

图标:

6

source_table

varchar

255

0

Y

N

来源表:

7

source_field

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. 表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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. 表logistics_delivery (物流配送)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

logistics_delivery_id

int

10

0

N

Y

物流配送ID

2

order_number

varchar

64

0

Y

N

订单号

3

product_name

varchar

64

0

Y

N

商品名称

4

purchase_quantity

varchar

64

0

Y

N

购买数量

5

total_transaction_amount

double

11

2

Y

N

0.00

交易总额

6

the_date_of_issuance

date

10

0

Y

N

发货日期

7

delivery_number

varchar

30

0

Y

N

配送订单

8

ordinary_users

int

10

0

Y

N

0

普通用户

9

shipping_address

varchar

64

0

Y

N

收货地址

10

delivery_status

varchar

64

0

Y

N

配送状态

11

signing_status

varchar

64

0

Y

N

签收状态

12

recommend

int

10

0

N

N

0

智能推荐

13

contact_name

varchar

255

0

Y

N

联系人名字

14

merchant_id

int

10

0

Y

N

商家id

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

    1. 表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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. 表order (订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

order_id

int

10

0

N

Y

订单ID:

2

order_number

varchar

64

0

Y

N

订单号:

3

goods_id

mediumint

8

0

N

N

商品id:[0,8388607]

4

title

varchar

32

0

Y

N

商品标题:

5

img

varchar

255

0

Y

N

商品图片:

6

price

double

10

2

N

N

0.00

价格:

7

price_ago

double

10

2

N

N

0.00

原价:

8

num

int

10

0

N

N

1

数量:

9

price_count

double

8

2

N

N

0.00

总价:

10

norms

varchar

255

0

Y

N

规格:

11

type

varchar

64

0

N

N

未分类

商品分类:

12

contact_name

varchar

32

0

Y

N

联系人姓名:

13

contact_email

varchar

125

0

Y

N

联系人邮箱:

14

contact_phone

varchar

11

0

Y

N

联系人手机:

15

contact_address

varchar

255

0

Y

N

收件地址:

16

postal_code

varchar

9

0

Y

N

邮政编码:

17

user_id

int

10

0

N

N

0

买家ID:

18

merchant_id

mediumint

8

0

N

N

0

商家ID:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

21

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

22

state

varchar

16

0

N

N

待付款

订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成

23

remark

text

65535

0

Y

N

订单备注

24

delivery_state

varchar

16

0

Y

N

未配送

发货状态:未配送,已配送

25

vip_discount

double

11

2

Y

N

0.00

折扣

    1. 表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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. 表regular_users (普通用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

regular_users_id

int

10

0

N

Y

普通用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

gender

varchar

64

0

Y

N

性别

4

mobile_phone_number

varchar

16

0

Y

N

手机号码

5

food_recommendations

varchar

64

0

Y

N

美食推荐

6

examine_state

varchar

16

0

N

N

已通过

审核状态

7

user_id

int

10

0

N

N

0

用户ID

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

    1. 表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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 (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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 (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

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

email

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

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

    1. 表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

第6章 详细设计与实现

6.1前台用户功能模块

6.1.1前台首页界面

当进入校园美食推荐系统的时候,首先映入眼帘的是系统的导航栏,导航栏右边是轮播图以及公告栏,其主界面展示如下图6-1所示。

6-1 前台首页界面图

6.1.2注册界面

不是校园美食推荐系统中正式会员的是可以在线进行注册的,当用户点击“注册”按钮,填写上自己的账号+密码+确认密码+昵称+头像等,再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可会员注册成功。其用注册流程图如图6-2所示,注册界面展示如下图6-3所示。

6-2注册流程图

6-3 前台注册界面图

注册页代码如下:

    /**

     * 注册

     * @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);

}     

注册页password则使用了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;

}

6.1.3登录界面

校园美食推荐系统中的前台上注册后的会员是可以通过自己的账户名和密码进行登录的,当会员输入完整的自己的账户名和密码信息后,点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到校园美食推荐系统的首页中;否则将会提示相应错误信息,用户登录流程如图6-4所示,登录界面如下图6-5所示。

6-4 登录流程图

6-5会员登录界面图

登录代码如下:

 /**

     * 登录

     * @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<>()));

        }

        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);

        Map<String, 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 (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        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, "账号或密码不正确");

        }

    }

6.1.4美食商城详情界面

当访客点击美食商城后将会进入该款美食的详情界面,可以了解到该美食的图片信息、分类信息、价钱信息等,同时可以对该美食进行加购、评论,美食详情展示页面如图6-6所示,购买流程图如图6-7所示。

6-6 美食商城详情界面图

6-7购买流程图

6.1.5购物管理界面

当用户点击“购物车”按钮则会显示自己加入购物车的美食信息,然后对其进行购买管理,购物管理界面如下图6-8所示。

6-8 购物管理界面图

6.1.6订单管理界面

在点击导航栏上的“订单管理”后,会显示自己提交的所有的订单,可以按照订单状态等进行查看,订单管理界面如下图6-9所示。

6-9 点餐订单界面图

6.2管理员功能模块

6.2.1用户管理界面

校园美食推荐系统中的管理人员是可以对前台注册的普通用户和商家进行管理。用户管理如下图6-10所示。

6-10用户管理界面图

6.2.2美食标签界面

校园美食推荐系统中的管理人员是可以对校园美食推荐系统内的不同美食标签下的美食标签列表和美食标签添加进行维护和管理的,美食标签管理界面如下图6-11所示。

6-11美食标签管理界面图

6.2.3美食分类界面

校园美食推荐系统中的管理人员是可以对校园美食推荐系统内的美食的类别进行管控。美食分类添加界面如下图6-12所示。

6-12美食分类添加界面图

新增一条数据,通过post传入一个json对象,然后经过request.getReader(),最后经过readBody()转成一个Map,含有String和Object,key用的是字段名,Object存放数据,最终得到Map,insert用拼装sql,读取body,组装成一个insert对象,runCountSql()语句,代码如下:

    @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

修改一个数据,原理与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);

    }

删除一条数据,通过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());

    }

6.2.4商城管理界面

校园美食推荐系统中的管理人员是可以对校园美食推荐系统内的商城管理里的美食商城、分类列表、订单列表和订单配送等进行操作的,商城管理界面如下图6-13所示。

6-13 商城管理界面图

第7章 系统的测试

7.1测试的目的

系统的前台、后台、数据库完成以后,这个系统才算是完成了一半,我们在这之后要对系统进行最后的一个阶段,那就是测试了,测试对一个系统来说是非常重要的,有的时候开发完一个系统,如果测试不合格的话,这个系统是没有办法进行投入使用的,所有我们要用测试对系统的功能进行检验,把不完善的功能尽量完善,把出现的bug解决掉,然后给用户呈现出一个完美的系统。通过对系统最后一步的测试,使得开发人员对自己的系统更加有信心,更加积极的为后期的系统版本的更新提供支持。

7.2系统测试用例

系统测试包括:用户登录功能测试、美食商城展示功能测试、美食介绍添加、美食搜索、密码修改功能测试,如表7-1、7-2、7-3、7-4、7-5所示:

用户登录功能测试:

7-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

美食商城查看功能测试:

7-2 美食商城查看功能测试表

用例名称

美食商城查看

目的

测试美食商城查看功能

前提

用户登录

测试流程

点击美食商城列表

预期结果

可以查看到所有美食商城信息

实际结果

实际结果与预期结果一致

管理员添加美食介绍界面测试:

7-3 管理员添加美食介绍界面测试表

用例名称

美食介绍发布测试用例

目的

测试美食介绍发布功能

前提

管理员用户正常登录情况下

测试流程

1)管理员点击美食介绍,然后点击添加后并填写信息。

2)点击进行提交。

预期结果

提交以后,页面首页会显示新的美食介绍 

实际结果

实际结果与预期结果一致

美食搜索功能测试:

7-4 美食搜索功能测试表

用例名称

美食搜索测试

目的

测试美食搜索功能

前提

测试流程

1)在搜索框填入搜索关键字。

2)点击搜索按钮。

预期结果

页面显示包含有搜索关键字美食

实际结果

实际结果与预期结果一致

密码修改搜索功能测试:

7-5 密码修改功能测试表

用例名称

密码修改测试用例

目的

测试管理员密码修改功能

前提

管理员用户正常登录情况下

测试流程

1)管理员密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

​​​​​​​7.3系统测试结果

通过编写校园美食推荐系统的测试用例,已经检测完毕一上功能模块的测试,通过这4大模块为校园美食推荐系统的后期推广运营提供了强力的技术支撑。

第7章 总与展望

网络大环境下,电子商务的商业模式已经遍及全国各地,由于人们生活水平的提高以及生活节奏的加快,让人们也已经爱上这种购物模式。本次开发的校园美食推荐系统即是基于目前电子商务模式而建设的,其开发目的是给用户提供一个全新的交易环境,提高用户购物的体验度,系统的开发不仅可以实现道具城游戏商品的购物、销售,还能进行人机对话,功能非常多样。

该校园美食推荐系统使用的开发环境是功能强大的JAVA+MYSQL,在大学的学科中重点学习了这两中技术,在对这些技术学习、熟悉之后,结合对系统进行的需求分析顺利的完成了本次项目的设计。在最初接到任务书的那一刻,比较迷茫,没有任何的思路,在经过了老师的指导以后,调查了一些购物系统相关的资料后,慢慢的有了头绪,开始入手开题,明确了系统的内容,对系统进行可行性的分析,确定系统可行以及功能内容以后,就按照开题初步设计的内容进行完善,慢慢补充、学习,最终结束了程序的开发,也完成了论文的写作。这一过程,虽然艰辛,但也学习到了很多,对项目开发流程也有了一个新的认识,动手能力也得到了提高,这正是书本上所学习不到的。

经过开发本项目,让我非常有成就高,与此同时我对程序的开发更加感兴趣了,信息技术真的很强大,也很深奥,在以后工作中,我将会寻找与其相关工作,继续深入学习,开发出更优秀的项目。

 

参考文献

Prabawani B ,Hadi P S ,Fisher R M , et al. Socioeconomic perspective of agroforestry development in Central Java [J]. Environmental and Sustainability Indicators, 2024, 22 100354-.

[2]美食推荐 瑞金牛肉汤 [J]. 家庭百事通, 2024, (02): 63.

[3]美食推荐 井冈烟笋 [J]. 家庭百事通, 2023, (12): 63.

[4]Xiao Z ,Ali Y ,Xin W , et al. Sports Work Strategy of College Counselors Based on MySQL Database Big Data Analysis [J]. International Journal of Information Technology and Web Engineering (IJITWE), 2023, 18 (1): 1-14.

[5]陈蓓蕾,洪年松. 基于SpringBoot的数据库接口设计 [J]. 信息与电脑(理论版), 2023, 35 (16): 181-183.

[6]邹璐. 项目导向下的美术课堂教学新样态——以“家乡美食推荐官”为例 [J]. 湖南教育(B版), 2023, (06): 62-63.

[7]黄桂吉,刘盾,叶晓庆. 一种基于粒计算的美食推荐方法 [J]. 昆明理工大学学报(自然科学版), 2023, 48 (03): 93-104.

[8]Yang Y . Design and Implementation of Student Information Management System Based on Springboot [J]. Advances in Computer, Signals and Systems, 2022, 6 (6):

[9]林帅伽,俞婷,程芳颖. 基于协同过滤的美食店铺推荐算法 [J]. 电脑知识与技术, 2022, 18 (30): 51-53.

[10]李凯. 基于项目特征与用户偏好的美食推荐系统的设计与实现[D]. 北京邮电大学, 2022.

[11]秦文杰. 基于类别注意力机制图神经网络的会话推荐系统研究与实现[D]. 湖北师范大学, 2022.

[12]张晓莹,李靖,段艳慧等. 全国著名美食服务系统 [J]. 北京测绘, 2022, 36 (03): 238-242.

[13]秦悦. 抖音短视频中乡村美食的景观呈现研究[D]. 重庆工商大学, 2022.

[14]邓涵兮,陈志华. 基于网络评论的美食推荐系统 [J]. 中国传媒科技, 2022, (03): 39-41.

[15]多彩的活动 校园美食节 [J]. 七彩语文, 2022, (09): 65.

[16]阎实. 基于社群构建校园美食自媒体营销策略探析——以“齐大美食墙”运营为例 [J]. 对外经贸, 2022, (02): 112-115.

[17]木林森. 从今天开始好好吃饭——美食文学推荐 [J]. 课堂内外(初中版), 2021, (12): 37.

[18]胡薇,王芳芳. 项目管理视域下会展专业品牌节事活动探究——以四川C学院首届校园美食节为例 [J]. 现代商业, 2021, (23): 12-14.

[19]周蕾,李强. 基于LBS应用的淮安美食推荐类系统的研究 [J]. 食品安全导刊, 2021, (21): 172-173.

[20]高红芳. 以校园美食文化建设提升食品专业学生职业素养 [J]. 当代农机, 2020, (09): 79-80.

 

  

通过这样设计与开发这样一个系统,首先向我们老师、同学和朋友表达真诚的感谢。没有指导老师的指导和平日子的教导,我也不能够学到如此多的专业知识。另外,也佩服老师兢兢业业的工作态度,给我们做好了表率。系统开发技术要学习的东西很多,前台框架、后台框架、业务流程、数据结构、操作系统等各种知识非常的丰富,都需要慢慢的专研。在这里,首先感谢老师细心的教导,我只想说一句:“老师,谢谢您,您辛苦了!有您在,大学生活才更加的充实。”另外,我要感谢我的室友,由于知识掌握得不够产生各种问题,正因为有了你们的帮忙,给我提出很多很好的建议,才能更好的解决系统开发问题。同时,我也应该感谢那些计算机专业的先哲们,正是由于有这么一群人,才能把这样的专业研究得如此透彻,才能助力新世界的诞生。你们的理论,是我们一生学习的内容,你们的成就,是我们一生追求的目标。

最后,也希望自己在未来的道路上能够走得更远,不辜负在大学的学习,以及老师们的细致的教导。

点赞+收藏+关注  →私信领取本源代码、数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值