《基于爬虫的美食推荐小程序设计与实现.doc》由会员分享,可在线阅读,更多相关《基于爬虫的美食推荐小程序设计与实现.doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、沈阳城市学院毕业设计(论文)目 录摘 要IAbstractII引 言11 系统相关技术31.1 网络爬虫31.1.1 网络爬虫介绍31.1.2 HttpClient31.1.3 Jsoup31.1.4 Proxy Pool技术31.2 SpringBoot框架31.2.1 SpringBoot框架介绍31.2.2 Scheduled定时器41.3 Java线程池、缓冲队列和同步锁41.3.1 Java线程池41.3.2 队列41.3.3 同步锁41.4 本章小结42 需求分析52.1 微信小程序端需求52.2 后台管理系统端需求52.3 非功能性需求62.4 本章小结63 系统设计73.1 架
2、构设计73.2 功能设计73.2.1 微信小程序功能设计73.2.2 后台管理系统功能设计93.3 数据库设计93.4 本章小结104 系统实现114.1 开发环境114.2 网络爬虫获取数据114.2.1 数据获取114.2.2 数据处理124.3 系统数据库实现134.3.1 实体联系图实现134.3.2 数据库实现154.4 系统功能实现184.4.1 微信小程序客户端184.4.2 后台管理系统管理员端234.5 本章小结245 系统测试255.1 功能测试255.2 压力测试265.3 本章小结27结 论28致 谢29参考文献30摘 要如今社会信息化发展迅速,获取感兴趣的信息对于人们
3、来说是一件难事。其中,对于美食相关的内容用户查询到的资源更是杂乱不堪,内容让人们眼花缭乱。本系统主要由后台系统管理员端和微信小程序客户端两部分组成。后台系统管理员端主要实现对小程序端用户提交的推荐内容、产品信息、管理端用户信息等进行管理维护,小程序端实现用户模块、推荐模块、搜索模块三大模块功能的开发。本系统开发采用经典的B/S结构,小程序端选取微信开发者工具作为开发平台。后台采用Java开发语言,后台框架采用SpringBoot框架,并在项目中对JDBC、MyBatis进行整合。小程序客户端使用WXML,WXSS,JavaScript语言开发,后台系统管理端采用HTML,CSS,JavaScr
4、ipt实现页面开发,使用AJAX与后台服务进行异步交互。微信小程序用户端的数据获取使用SpringBoot框架和HttpClient搭建的网络爬虫程序,同时使用SpringBoot定时器实时更新数据,最后将数据存储到MySQL数据库。在基于爬虫的美食推荐小程序下,使用网络爬虫技术获得大量的数据,支持小程序功能的开发,能够便捷地为用户提供新鲜、实用并且真实的美食信息。关键词:微信小程序;网络爬虫;美食推荐;SpringBootAbstractNowadays, with the rapid development of social informatization, it is difficul
5、t for people to get the information they are interested in. Among them, for the content related to food, the resources found by users are even more chaotic, and the content makes people confused.The system is mainly composed of two parts: the background system administrator end and the WeChat small
6、program client end. The background system administrator side mainly realizes the management and maintenance of the recommendation content, product information and user information submitted by users of the small program side, and the development of the user module, recommendation module and search m
7、odule of the small program side.This system development uses the classic B/S structure, the small program side selects the WeChat developer tool as the development platform. Java development language is used in the background, and SpringBoot framework is used in the background framework, and JDBC an
8、d MyBatis are integrated in the project. Small program client uses WXML, WXSS, JavaScript language development, background system management end uses HTML, CSS, JavaScript to achieve page development, using AJAX and background services for asynchronous interaction. The web crawler built by SpringBoo
9、t framework and HttpClient is used for data acquisition of WeChat small program client. Meanwhile, the data is updated in real time by SpringBoot timer. Finally, the data is stored in MySQL database.Under the food recommendation small program based on crawler, the web crawler technology is used to o
10、btain a large amount of data and support the development of functions of the small program, which can provide users with fresh, practical and real food information conveniently.Keywords: WeChat applet; Web crawler; Food recommendations; SpringBootII引 言随着移动互联网的快速发展,它成为了社会信息化的重要手段,是人们获取信息的重要来源1。社会逐从信息
11、稀缺的时代进入了信息过载的“大数据”时代2。在时代背景下,人们获取自己需要的信息变成一件很困难的事情,从如此多的信息中获取有价值的信息成为首要解决的迫切问题3。其次,人们生活水平不断提高,对于饮食方面的要求也提高了一个层次,人们会在互联网上浏览寻找相关的美食信息。目前,对于美食领域相关的软件来说,都是对某一部分比如推荐菜谱这一类模块去实现,用户想要获取其他信息,比如观看美食视频,美食产品推荐等,就只能再去别的平台去查看。还有很多相关的视频软件,里面内容包含很多的模块,不止是美食相关,所以对于用户来说,没有一个相对于全面的系统来解决当前问题。基于以上需求,本系统为用户提供了一个基于爬虫的美食推荐
12、小程序,系统可以帮助用户解决在信息繁杂的环境下根据标签分类为用户精准推荐用户所感兴趣的美食信息。标签目前已成为现在组织网络内容的流行方式4。在本系统中用户可以查看相关的美食视频和资讯,进行点赞收藏等操作,可以对系统内美食信息通过查询的方式获取想要的信息,用户也可以分享自己喜欢的美食,系统会根据用户提交的信息,对当前热门的美食产品进行统计进而展示给用户。本系统在以用户需求为前提下,实际开发的意义有如下四点:一是可以为用户打造一个个性化的美食推荐平台,用户可以在系统中拥有良好的使用体验,二是对美食行业的发展可以起到促进的作用,三是系统面向的用户范围广泛,微信自诞生于2016 年 1 月 11 日5
13、起,作为社交平台总用户量达到7亿6,绝大多数的人们都会使用它。四是拥有良好的开发环境,通俗的说小程序是一种包含功能的网页7,是一种新时代的新型应用形式8相比于普通网页,微信小程序拥有着更加健全的功能。微信小程序的主要开发语言是JavaScript,在国外JavaScript基本上是应用于网页开发,Google、YouTube、Facebook等的都是利用JavaScript语言进行的前端开发9。JavaScript开发由于网页开发渲染线程和脚本线程是互斥的10,时间过久页面会失去响应。而在小程序中,两者分别运行在不同的进程中。论文共包含5个章节,各章的安排如下:第1章介绍基于爬虫的美食推荐小程
14、序实现过程所用到的相关技术。第2章从功能需求和非功能需求方面介绍基于爬虫的美食推荐小程序的需求分析;第3章阐述基于爬虫的美食推荐小程序的系统设计,包括数据库设计、功能设计等;第4章详细说明基于爬虫的美食推荐小程序的实现过程。第5章系统测试,对系统进行功能测试和压力测试。1 系统相关技术1.1 网络爬虫1.1.1 网络爬虫介绍网络爬虫是一种依照规定自动地抓取互联网数据的程序或脚本11。网络爬虫从网站页面开始读取,在URL集合中选取URL开始访问其对应的网页然后进行循环1213,直至爬取的网页信息获取完成。在本项目中使用SpringBoot+HttpClient搭建的网络爬虫程序,进行相关美食数据
15、的获取,支撑系统的开发,同时使用SpringBoot中的Scheduled定时器实时更新数据。1.1.2 HttpClientHttpClient是Apache中的一个开源的项目。它模拟浏览器向某个网址发送各种请求并获取应答,并且它支持HTTP协议最新的版本14。HttpClient提供了许多功能组件,应用十分广泛15,本项目使用HttpClient进行数据的爬取。1.1.3 JsoupJsoup是一款基于Java的HTML解析器。使用网络爬虫技术爬取到的数据可能是文本内容、URL地址或字符串等,这时可以使用Jsoup解析获取想要得到数据格式。它解析相关内容时对DOM、CSS进行操作读取数据1
16、6,十分便捷。1.1.4 Proxy Pool技术在爬取数据的过程中,经常会遇到各种反爬方式。在本项目中爬取网站用户信息时就遇到了反IP爬取的问题,只能降低速度或者使用IP代理才能防止爬虫程序因为同IP访问频率过高被目标网站封锁。建立一个Proxy Pool代理池,首先需要获取一系列的IP地址作为一个总ip库,可以使用爬虫从一些代理网站上爬取。其次,需要验证总库中的ip地址是否可用,可以通过遍历所有ip,筛选出与目标网站直接速度符合预期的并存入库中。之后就可以随机取出不同ip,使用Proxy类实例化代理对象即可进行高效安全的爬取。1.2 SpringBoot框架1.2.1 SpringBoot
17、框架介绍SpringBoot是由Pivotal团队开发的全新的开源开发框架17。它是一款易于使用且实用的基础框架18。SpringBoot开源框架特点拥有以下特点:基于SpringMVC模式19,开发层次清晰,三层结构易于更新迭代。自身已经集成了Tomcat这样的WebServlet,不需要复杂的配置就可以快速开发Web应用。利用Maven等插件,通过配置POM文件的依赖项能够快速的为工程添加多种JAR包、插件,并且能够轻松维护依赖版本。SpringBoot项目能够很好地部署于Docker类的虛拟容器中20。1.2.2 Scheduled定时器通过在SpringBoot启动器上添加注解Enab
18、leScheduling(开启Scheduled定时器),就可以添加定时任务的功能。该定时器可配置启动时间、运行次数等定时任务必备的参数,能够很方便的执行定时一次或多次代码段,可满足本系统中利用网络爬虫技术,定时向目标网站发出http请求,获得相关数据。1.3 Java线程池、缓冲队列和同步锁1.3.1 Java线程池线程池主要实现对线程的管理,使用它可以减少线程的创建和销毁21,能够控制线程的数量、存活时间,能够处理并发任务,提高系统的性能。1.3.2 队列本系统应用到的队列技术是缓冲队列LinkedBlockingQueue,这是一种自定义长度的双缓冲队列,当线程池中没有空余线程时,任务将
19、自动添加至缓冲队列,取出操作也可以同时由另一线程完成操作。这样的队列能够保证系统的高并发情况时的线程安全,又避免了存取操作效率过低。1.3.3 同步锁该系统中使用了synchronized同步锁22,可以保证线程安全,特别是在某些事务处理过程中必须保证正确性的状态时可以通过给资源加锁,这种资源包括一个方法、一个代码段或者一个对象等。能够保证一个线程独自处理锁中的事务,又能随时通过解锁资源释放线程,保证了顺序性。1.4 本章小结本章主要讲述了论文所使用的核心技术,对网络爬虫技术、反爬虫技术、SpringBoot框架、Scheduled定时器、java线程池、缓冲队列、同步锁进行了详细的说明。2
20、需求分析本系统的目标是为用户推荐感兴趣的内容,因此功能需求是站在用户的角度出发,提供一个使用感受舒适,更加私人化的系统。后台管理系统主要是对部分数据进行整理和维护,原则上也是为客户而服务。2.1 微信小程序端需求用户首次登入小程序后可以根据标签自主选择美食信息分类查看感兴趣的视频或资讯,如果老用户想要切换喜好,可以在个人中心里切换喜好分类;视频模块可以查看个性化推荐的视频列表、可以查看热度比较高的视频列表,还可以查看当前视频排行榜,按照不同的分类进行排行例如浏览量等等,其中个性化推荐通过记录用户的行为来展示列表数据;用户也可以通过关键字查询视频和资讯,关键字可模糊匹配相应的标题和标签;视频详情
21、页用户可以查看视频,以及对视频进行点赞、评论、收藏和评论的操作,不同的用户行为都会产生一系列的关联关系的变化从而改变相应的推荐信息;图2.1为小程序用户用例图。图2.1 小程序用户用例图2.2 后台管理系统端需求对用户提交的信息进行统计;对产品品牌进行添加、删除、修改等操作;对产品分类进行添加、删除、修改等操作;对产品进行添加、删除、修改等操作,由图2.2管理员用例图可知,管理员端所有操作都基于登录以后才可进行。图2.2 管理员用例图2.3 非功能性需求本系统主要包含以下五个方面的非功能性需求:性能需求。支持并发量达到100以上,最大TPS值达到两千,用户同时访问量达到500以上。可维护性。保
22、证模块化开发,各个模块之前相互独立,代码编写整洁、注释齐全,便于后期的修改和扩展。可用性。系统如果出现问题,影响用户的使用,要求系统的维护时间需在48小时之内完成。易用性。要求系统操作简单,没有过于复杂的内容,用户可以轻松理解本系统的功能设计。安全性。确保系统的安全性,如果出现有异常信息登录该系统,则拒绝用户进入系统并跳转到登录页面。2.4 本章小结本章从从功能性需求和非功能需求两方面介绍了需求分析,功能性需求包含微信小程序端和后台管理系统端需求,通过使用例图来辅助描述两个端的功能需求。3 系统设计3.1 架构设计本系统采用B/S结构,包含微信小程序客户端、web管理后台端、后台服务、数据获取
23、以及数据存储五个部分,客户端和管理员端均是通过使用AJAX技术向服务器发送请求,同时服务器会向数据库访问相对应的数据以及相应的接口,对数据进行处理,将处理后的数据返回给客户端和管理员端使用,再将获取到的数据渲染在页面上供用户查看,图3.1所示详细说明了系统的架构设计。图3.1 系统体系架构图3.2 功能设计本系统功能设计包含微信小程序客户端和后台管理系统管理员端。3.2.1 微信小程序功能设计微信小程序客户端为用户精心设计了用户模块、推荐模块和搜索模块三个主要模块。根据用户对小程序的需求和对当前现有的美食平台所有的功能进行分析,做出如下功能设计,图3.2展示了小程序客户端的功能图。图3.2 客
24、户端功能图用户登录模块。用户可以进行小程序登录并选择自己喜欢的美食分类。用户行为模块。用户可以查看视频和咨询详情,对当前视频进行点赞、点踩、收藏、取消点赞、点踩、收藏和评论的操作,对咨询可以进行收藏和取消收藏的操作。用户可以自行选择美食分类查看相关视频或咨询。个人中心模块。用户可以查看何时浏览的视频和资讯即历史记录页面、收藏页面、重新选择喜好分类以及对系统当前存在的问题提出意见。喜好调查模块。用户可以向其他用户推荐自己喜爱的美食,通过选择产品品牌、产品分类进而选择产品后再针对用户个人的口味进行推荐。视频推荐模块。视频推荐包含热门推荐、个性化推荐、排行榜推荐。热门推荐根据视频的热度生成视频推荐列
25、表,将热度高的视频随机展示在列表中。个性化推荐根据用户自己选择的美食分类进行推荐,以及对用户的操作如点赞、收藏等操作进行记录,将数据展示在列表中。排行榜推荐根据视频的浏览量、评论数和点赞数进行排序展示。资讯推荐模块。资讯推荐包含热门推荐、个性化推荐、排行榜推荐。热门推荐根据资讯的热度生成视频推荐列表,将热度高的资讯随机展示在列表中。个性化推荐根据用户自己选择的美食分类进行推荐,以及对用户的操作如收藏等操作进行记录,将数据展示在列表中。排行榜推荐根据资讯的浏览量和收藏数进行排序展示。美食推荐模块。用户可以查看用户所推荐最热门的产品,看到其他用户对其当前热门美食的推荐情况。模糊搜索模块。此模块功能
26、为视频或资讯搜索,用户可以按照自己的需求对视频或资讯的标题进行搜索,获取与输入内容相关的视频或资讯列表。3.2.2 后台管理系统功能设计后台管理系统是对用户所提交的数据以及对美食产品品牌、分类、口味等进行维护,主要是对产品的信息进行录入。满足用户喜好调查的功能设计如下。图3.3展示了后台系统管理员端的功能图。图3.3 管理员端功能图管理员模块。登录时已经注册过的管理员进行登录操作,未注册的管理员可以进行注册操作。管理员还可以进行修改密码和退出系统操作。产品品牌管理模块。对产品的品牌进行增删改查维护,实现对产品品牌的信息录入,字段包括名称、图片和介绍。产品分类管理模块。对产品的分类进行增删改查维
27、护,实现对产品分类的信息录入,字段包括分类名称。产品口味管理模块。对产品的口味,包括甜度和温度进行增删改查,实现对产品口味的信息录入,字段包括甜度和温度。产品管理模块。对产品进行增删改查维护,实现对产品的信息录入,字段包括品牌、分类、名称、价格和图片。用户数据管理模块。对用户在小程序客户端提交的数据进行展示,字段包括用户名、推荐产品品牌、推荐产品分类和推荐产品名称。3.3 数据库设计数据库是系统中极其重要的一部分,它支撑了整个项目的开发。由于MySQL 数据库易于搭建、轻量化易于迁移、处理数据速度快,并且可以免费使用。所以本系统采用了MySQL 数据库作为储存美食相关信息的数据库,以下是主要的
28、数据库表设计:小程序用户表:用于存储小程序客户端用户的头像,昵称等信息。用户操作表:存储用户的点赞、点踩等信息。视频表:存储爬取下来的视频的作者,发布时间,视频地址等信息。资讯表:存储爬取下来的资讯的作者,发布时间,文章内容等信息。标签表:存储标签名称,热度等信息。作者表:存储从网站上爬取下来的作者的名称、头像、简介等信息。评论表:存储用户评论的内容,评论时间等信息。管理员表:存储管理员的账号,密码等信息。产品品牌表:存储产品的品牌名称,品牌图片等信息。产品分类表:存储产品的分类名称等信息。产品甜度表:存储产品的甜度等信息。产品温度表:存储产品的温度等信息。产品表:存储产品所属品牌,所属分类,
29、产品名称等信息。喜好调查表:存储用户提交的产品等信息。修改密码日志记录表:存储用户修改的记录。意见表:存储小程序用户对系统所提的意见。关联表:表与表之间的关联表。 3.4 本章小结本章讲述了系统的详细设计,从系统的架构设计,小程序客户端和管理员端的功能设计以及系统的数据库设计三个方面进行详细描述,其中功能设计使用功能图更加清楚的展示功能结构,数据库设计对系统实现有着重要的作用。4 系统实现本系统分为微信小程序客户端和后台管理系统管理员端,以下是客户端和管理员端的实现过程。4.1 开发环境硬件环境:处理器 Inter Corei5-8400QM,内存 16GB;系统环境:Windows10(x6
30、4);开发工具:微信小程序客户端:微信开发者工具v1.03;后台管理系统管理员端:IntelliJ IDEA2019.1;后台服务:IntelliJ IDEA2019.1;数据库:Navicat。开发语言:微信小程序客户端:WXML+JS+WXSS;后台管理系统管理员端:HTML+JS+CSS;后台服务:Java;数据库:MySQL。4.2 网络爬虫获取数据本系统通过使用网络爬虫技术对网站上的数据进行获取,再将爬取到的数据进行解析,最后将数据存储在数据库中用于小程序端的使用。因为该数据支撑着小程序的功能实现,丰富了客户端页面功能,网络爬虫技术获取数据在本系统中起着至关重要的作用。下面详细说明了
31、网络爬取数据的方式以及如何对爬取到的数据进行处理。4.2.1 数据获取本系统通过SpringBoot+HttpClient搭建的网络爬虫程序,并使用SpringBoot框架里的Scheduled定时器,定时进行相关数据的获取。本系统爬取的是“哔哩哔哩”网站的相关视频和资讯信息,以及视频和资讯的作者信息。在后端爬取过程中需要进行如下步骤:第一步,为爬虫任务设置定时任务,定时爬取数据,其中Scheduled定时器里initialDelay参数设定在项目启动后1s内执行爬虫任务,fixedDelay参数设定每20分钟执行一次爬虫任务,过程如图4.1所示;第二步,实例化一个用于请求的HttpPost或
32、者HttpGet的HttpClient对象;第三步,确认请求Http或Https地址,并且组装请求对象。第四步,为请求设置需要的header或者相应的cookie值。第五步,通过execute方法实现请求的发送,并且获取相应的返回对象。最后,通过阿里云的fastJson包使用其中的方法解析json对象获取数据。实现过程下所图4.2所示。图4.1 添加定时器定时爬取数据图4.2 HttpClient使用方法相关源码4.2.2 数据处理通过HttpClient获取数据后,可以获取HTML格式和Json格式的两种格式的数据。获取到Json格式数据,再将数据进行处理,将需要的数据直接存储在数据库中使用
33、,使用Jsoup解析对爬取的HTML格式进行解析进而转换成项目需要的HTML格式。Json格式数据处理。第一步,将Json字符串转为Json对象,如图4.3所示;第二步,获取Json对象里需要的数据信息,如图4.3所示;最后,将数据信息进行过滤处理,存储在数据库中,如图4.4所示。图4.3 获取爬虫数据图4.4 处理爬虫数据HTML格式数据处理。使用Jsoup对其进行解析处理。Jsoup使用方法如下:第一步,从URL、文件或字符串中获取并且解析出HTML网页;第二步,遍历DOM或使用CSS选择器寻找到所需要的数据并将其提取;第三步,对HTML元素、属性和文本进行解析;第四步,设置URL正则化过
34、滤规则来解决用户提交的内容信息,以此防止跨站脚本的攻击;最后,输出格式规范且易读的HTML。实现如图4.5所示。图4.5 Jsoup解析html格式4.3 系统数据库实现4.3.1 实体联系图实现系统共涉及的实体有小程序用户、后台管理端用户、资讯信息、视频信息、用户操作记录、视频评论记录、标签、产品、产品品牌、产品分类、产品口味、文件等16个实体类,其中管理员端实体联系图如图4.6所示。图4.6 管理员端实体联系图客户端实体联系图如图4.7所示。图4.7 客户端实体联系图4.3.2 数据库实现数据表实现包含以下表结构:小程序用户表(tab_user)、标签表(tab_tag)、视频表(tab_
35、video)、资讯表(tab_article)、作者表(tab_owner)、用户操作表(tab_objxuser)、评论表(tab_reply)、标签表和视频表的关联表(tab_tagxvideo)、标签表和资讯表的关联表(tab_tagxarticle)、标签表和用户表的关联表(tab_tagxuser)、管理员表(tab_manager)、产品品牌表(product_brand)、产品分类表(product_type)、产品甜味表(product_taste)、产品温度表(product_temperature)、产品表(product)、文件表(tab_upfile)、问卷调查结果表(
36、product_survey)、修改密码日志表(password_record)、意见表(suggestion)。以下展示了项目中关键表的数据库设计。小程序用户表(tab_ user),该表存储了微信小程序具体的用户信息,比如微信昵称、微信头像等信息,表结构设计如表4.1所示。表4.1 小程序用户表字段名数据类型长度是否为空主键备注Idint11否是序号statusint11否否状态码createTimedatetime0否否创建时间updateTimedatetime0是否更新时间openidvarchar255是否微信小程序的用户标识cityvarchar255是否用户所在国家nickNa
37、mevarchar255是否用户微信昵称provincevarchar255是否用户所在城市avatarUrlvarchar2000是否用户微信头像标签表(tab_tag),该表存储了视频和资讯所包含的标签分类,包括标签的姓名、标签的热度等信息,表结构设计如表4.2所示。表4.2 标签表字段名数据类型长度是否为空主键备注Idint11否是标签Idtagnamevarchar255是否标签名称hotdatetime0是否对应用户的标签热度视频表(tab_video),该表存储了使用网络爬虫技术爬取到的视频标题、视频所属标签、视频创建时间等信息,其中ownerId字段与作者表(tab_owner)
38、关联。表结构设计如表4.3所示。表4.3 视频表字段名数据类型长度是否为空主键备注Idint11否是序号statusint11否否状态码createTimedatetime0否否创建时间updateTimedatetime0是否更新时间titlevarchar255是否视频标题avidint11是否视频页面idownervarchar2000是否视频作者ownerIdint11是否视频作者idpicvarchar1000是否视频封面remarkvarchar1000是否视频所属标签hotint11是否视频热度cidint11是否视频Idgoodint11是否点赞数badint11是否点踩数co
39、llectionint11是否收藏数replyint11是否评论量资讯表(tab_article),该表存储了使用网络爬虫技术爬取的资讯标题、资讯所属标签、资讯创建时间等信息,其中ownerId字段与作者表(tab_owner)关联。表结构设计如表4.4所示。表4.4 资讯表字段名数据类型长度是否为空主键备注Idint11否是序号statusint11否否状态码createTimedatetime0否否创建时间updateTimedatetime0是否更新时间titlevarchar255是否视频标题ownervarchar2000是否视频作者ownerIdint11是否视频作者idpicva
40、rchar1000是否视频封面remarkvarchar1000是否视频所属标签hotint11是否视频热度cidint11是否视频Idgoodint11是否点赞数badint11是否点踩数collectionint11是否收藏数作者表(tab_owner),该表存储了使用网络爬虫技术爬取的视频和资讯的作者姓名、头像等信息,表结构设计如表4.5所示。表4.5 作者表字段名数据类型长度是否为空主键备注Idint11否是序号ownervarchar2000是否视频作者ownerIdint11是否视频作者idfacevarchar1000是否头像signvarchar1000是否简介sexvarch
41、ar255是否性别birthdayvarchar255是否生日管理员表(tab_manager),该表存储了后台管理员的用户账号、密码等信息,其中密码为MD5加密生成,登录验证时进行解码验证。表结构设计如表4.6所示。表4.6 管理员表字段名数据类型长度是否为空主键备注Idint11否是序号statusint11否否状态码createTimedatetime0否否创建时间updateTimedatetime0是否更新时间accountvarchar255是否账号passwordvarchar255是否密码namevarchar255是否用户名remarkvarchar2000是否描述4.4 系
42、统功能实现4.4.1 微信小程序客户端用户进入小程序后可以看到视频、资讯、美食推荐、分类、排行、个人中心六个模块,如图4.8所示。所有模块都使用微信小程序中的API23:wx.request方法通过AJAX实现与后端的数据交互。用户首先首次登录,在小程序端使用小程序中的API:wx.login调用接口获取登录凭证(code)。通过凭证进而换取用户登录信息,包括用户的唯一标识(openid)、本次登录的会话密钥(session_key)以及是否为新用户的标识(isNew),并在小程序中配置全局变量globalData包括userInfo(用户信息)、server(项目的服务器地址),openid
43、(用户的唯一标识),session_key(会话密钥)以及isNew(新老用户标识),供整个项目接口传参使用,图4.8为获取小程序用户信息等的实现过程。其中登录调用的接口名为server+“/Face/login”,小程序客户端与后端交互的接口名均为服务器加后台定义接口名的形式。图4.8 登录接口用户登录以后如果isNew等于new则跳转到选择标签页面如图4.10,如果等于old则直接跳转到首页,如图4.9。图4.9 首页 图4.10 选择兴趣标签视频。视频推荐列表和热门列表页面如图4.11所示。新用户首次登录,推荐列表里所展示的是用户所选择的标签类型。用户可以查看视频的评论数,点赞数,浏览量
44、,发布时间等信息,用户可以对列表数据进行搜索,寻找视频。推荐列表的计算方法为:用户点赞,收藏,评论当前视频,判断当前视频的所属标签分类是否已经在用户的推荐列表中,若不存在则将当前视频的所属标签分类添加到用户推荐列表中。热门推荐列表里展示热度hot字段排行前300的视频信息。用户可以查看视频的评论数,收藏数,浏览量,发布时间等信息,用户可以对列表数据进行搜索,寻找视频。其中,热度的计算方法为:用户点赞对当前视频以及标签的热度hot字段值+5,点踩hot字段值-3,收藏hot字段值+5,评论hot字段值+5,如果当前视频的标签分类存在于用户的推荐标签当中,该视频的标签hot字段值在原来的基础上再+
45、1。视频详情页面如图4.12所示。用户点击列表里的某一视频,进入视频详情页面,用户可以进行点赞、点踩、收藏、评论、取消点赞、取消点踩、取消收藏的操作。图4.11 推荐列表界面 图4.12 视频详情界面资讯。资讯热门和推荐列表页面如图4.13所示。新用户首次登录,列表里所展示的数据是用户所选择的标签分类。用户可以查看资讯的收藏数,浏览量,发布时间等信息,用户可以对列表数据进行搜索,寻找资讯。推荐列表的计算方法为:收藏当前咨询资讯将当前咨询的所属标签分类添加到用户推荐列表中。热门推荐列表里展示热度hot字段排行前300的资讯信息。用户可以查看资讯的收藏数,浏览量,发布时间等信息,用户可以对列表数据进行搜索,寻找资讯。热度的计算方法为:用户点击资讯