版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于微信小程序的小说作品分享系统的设计目录TOC\o"1-3"\h\u摘要 11绪论 21.1 系统设计背景和意义 21.2论文组织结构 22相关技术 32.1Uni-app 32.2Egg.js框架 32.3OSS对象存储 32.4Sequelize 33系统需求分析 33.1系统功能需求分析 33.1.1小说管理功能 43.1.2短剧管理功能 43.1.3广播剧管理功能 53.1.4作者信息管理功能 53.1.5通知管理功能 53.1.6帖子管理功能 63.1.7举报信息管理功能 63.2系统数据分析 73.2.1小说管理功能 73.2.2短剧管理功能 73.2.3广播剧管理功能 83.2.4作者信息管理功能 83.2.5通知管理功能 93.2.6帖子管理功能 103.2.7举报信息管理功能 104系统设计 114.1系统架构设计 114.2系统流程设计 124.2.1小说管理模块流程 124.2.2短剧管理模块流程 134.2.3广播剧管理模块流程 144.2.4作者信息管理模块流程 154.2.5通知管理模块流程 164.2.6帖子管理模块流程 164.2.7举报信息管理模块流程 174.3系统数据库设计 185系统实现 225.1系统核心代码 235.1.1Controller层代码实现 235.2系统模块实现 245.2.1小说管理模块 245.2.2短剧管理模块 285.2.3广播剧管理模块 305.2.4作者信息管理模块 335.2.5通知管理模块 355.2.6帖子管理模块 375.2.7举报信息管理模块 386系统测试 40结束语 40参考文献 41致谢 42摘要:基于微信小程序的原创作品分享系统是一款为文学相关爱好者提供的开放性文学创作与分享的应用。微信小程序与手机APP相比,具有安全性高,无需耗费时间与流量进行应用安装等显著优势。本系统采用用例图进行小说管理、短剧管理、广播剧管理等功能的功能分析,使用ER图对小说信息、短剧信息、广播剧信息等数据进行系统数据分析。在设计阶段,采用vue-elementui框架,uni-app框架和Egg.js框架等技术进行系统的结构设计,使用流程图对系统小说管理、短剧管理、广播剧管理等流程进行设计。最后,采用HbuilderX和VSCode开发环境实现了小说管理、短剧管理、广播剧管理、作者信息管理、通知管理、帖子管理、举报信息管理等主要功能。关键词:微信小程序;原创作品;网络文学;uni-app;Egg.js1绪论系统设计背景和意义原创作品分享系统是一类原创文学作品及文学衍生作品的创作与分享系统,为文学爱好者提供小说创作、短剧创作、广播剧创作的空间。现有原创作品分享系统较少,以晋江文学城创作平台为例,该平台提供阅读小说、小说类别管理、论坛管理等功能,但创作方面仅限于文字作品。当下,微信小程序应用开发较为盛行。文献[3]采用PHP+MySQL技术实现文学网站的开发,主要包括创作文字作品、查看作品分类、阅读文字作品等功能。文献[5]采用微信小程序技术实现图书馆智能客服系统,利用python和flask框架实现全文检索功能和中文分词功能以实现智能客服回复功能。文献[11]采用微信小程序实现购物管理系统,使用PHP+MySQL技术实现商品浏览功能、商城活动参与功能、商品选购功能、商品支付和客户账户管理等功能。综上所述,现有系统更多聚焦于文字作品方面,并未能有更多的扩展,如短剧和广播剧等文学类衍生作品的创作与分享。在技术上,微信小程序以其开发成本低、稳定安全、相较于手机APP能够节省大量安装应用的时间而饱受开发者青睐,成功跻身于主流开发技术行列。因此,本系统采用uni-app框架,Egg.js框架和vue-elementui框架等技术实现了小说管理功能、短剧管理功能、广播剧管理功能、作者信息管理功能、帖子管理功能、通知管理功能、举报信息管理功能。1.2论文组织结构根据系统设计与实现的过程,此论文总体上划分为七个部分。如下:第一部分是绪论,介绍本课题的设计背景、意义及论文结构。第二部分是相关技术,介绍了本课题在开发过程中使用的工具和相关技术。第三部分是系统需求分析,根据用户的功能需求和数据进行需求分析。第四部分是系统设计,根据需求分析,设计系统的架构和小说管理、短剧管理、广播剧管理等功能模块以及业务流程和数据库。第五部分是系统实现,依次介绍系统开发环境、核心代码和模块实现。第六部分是系统测试,测试系统实现的功能,记录测试数据和测试结果。第七部分是结束语,阐述设计与实现系统过程中所得收获以及系统仍存在的一些不足。2相关技术2.1Uni-appuni-app是一个使用Vue.js开发小程序,H5应用和移动端应用的统一前端框架。开发者使用Vue语法编写代码,uni-app框架将其编译到小程序和移动端应用等多个平台,保证其正确运行。uni-app提供了比原生开发小程序更优的开发体验,灵活度强,工程化效率高,可实现一套代码多端覆盖。同时拥有丰富的周边生态,插件市场有非常多开发者所开发贡献的插件,有利于简化开发。2.2Egg.js框架Egg.js是一种企业级的web基础框架。Egg.js最核心的东西是一套约定和规范,这个规范约定了开发目录和开发过程中的提案讨论、编码风格、codereview等方面的规范。Egg.js还拥有内置多进程管理的特性。2.3OSS对象存储OSS是一些云服务厂商提供的云存储服务,如阿里云存储、腾讯云存储等。OSS拥有较高的数据设计持久性与业务连续性。OSS提供了与平台无关的RESTfulAPI接口,开发者能够使用服务商提供的接口或者OSS迁移工具将海量数据移入或移出OSS。数据的存储类型包含标准、低频访问、归档和冷归档,将从热到冷的各种数据全面覆盖。2.4SequelizeSequelize是一种基于promise的Node.jsORM,支持事务,预读和延时加载等功能。利用ORM能够将数据库的表,字段还有关系映射为程序语言的对象和关系,开发者直接操作对象即可。3系统需求分析3.1系统功能需求分析为实践作品分享的核心主题,本系统功能包括小说管理功能、短剧管理功能、广播剧管理功能、作者信息管理功能、通知管理功能、帖子管理功能、举报信息管理等功能。如图3-1所示。其中,小说管理包含阅读小说、发布小说、下架小说、修改小说信息、删除小说、导出小说信息的功能;短剧管理包含观看短剧、发布短剧、下架短剧、修改短剧信息、删除短剧的功能;广播剧管理包括发布广播剧、收藏广播剧、收听广播剧、修改剧集信息、下架广播剧的功能;作者信息管理包含查看作者信息、修改笔名、封禁创作权限的功能;通知管理包含乍看通知信息、发布通知、删除通知的功能;帖子管理包含查看帖子、发布帖子、删除帖子的功能;举报信息管理包括查看举报信息、提交举报信息、处理举报信息、删除举报信息的功能。图3-1系统功能图3.1.1小说管理功能小说管理功能提供发布小说、阅读小说、导出小说信息等功能,如图3-2所示。涉及到微信小程序端用户和后台管理员两种角色。其中小程序用户可以阅读小说、收藏小说、创作并发布小说、修改个人发布的小说信息和删除个人发布过的小说。管理员可以对小说进行下架操作,并且可以导出小说列表信息为excel表格。图3-2小说管理用例图3.1.2短剧管理功能短剧管理功能提供观看短剧、发布短剧、删除短剧等功能,如图3-3所示。功能涉及小程序端用户和后台管理员两种角色。其中小程序用户可以发布视频短剧,修改或删除个人发布的短剧以及观看视频短剧。管理员能够下架短剧。图3-3短剧管理用例图3.1.3广播剧管理功能广播剧管理功能提供收听广播剧、发布广播剧、下架广播剧等功能,如图3-4所示。涉及到小程序端用户和后台管理员两种角色。其中小程序用户能够收听广播剧,对广播剧进行收藏操作。管理员可以发布广播剧、修改广播剧信息、下架广播剧。图3-3广播剧管理用例图3.1.4作者信息管理功能作者信息管理功能提供修改笔名,封禁创作权限等功能,如图3-5所示。涉及到小程序端用户和后台管理员两种角色。其中小程序用户可以修改个人的笔名。管理员能够查看作者信息,对作者账号进行封禁作者创作的权限。图3-5作者管理用例图3.1.5通知管理功能通知管理功能提供发布通知、查看通知、删除通知等功能,如图3-6所示。涉及到小程序端用户和后台管理员两种角色。其中小程序端用户能够查看通知信息,删除通知。管理员可以发布通知,也能够对发布的通知进行删除操作。图3-6通知管理用例图3.1.6帖子管理功能帖子管理功能提供查看帖子、发布帖子、删除帖子等功能,如图3-7所示。涉及到小程序端用户和后台管理员两种角色。其中,小程序用户可以查看帖子和发布帖子。管理员能够删除帖子。图3-7帖子管理用例图3.1.7举报信息管理功能举报信息管理功能提供查看举报信息、提交举报信息、处理举报信息等功能,如图3-8所示。涉及到小程序端用户和后台管理员两种角色。其中,小程序用户可以提交举报信息,查看个人已提交的举报信息。管理员能够处理举报信息和删除举报信息。图3-8举报信息管理用例图3.2系统数据分析3.2.1小说管理功能小说管理功能的实体关系如图3-9所示。本部分包含用户实体和小说实体。其中用户实体包括用户唯一标识openid号、用户名、头像、笔名、登录设备等属性,小说实体包括小说id、作者openid、小说封面、小说名称、小说简介、小说标签、小说收藏数、小说点赞数、小说状态、发布时间等属性。用户实体和小说实体之间存在一对多的发布关系。图3-9小说管理ER图3.2.2短剧管理功能短剧管理功能的实体关系如图3-10所示。本部分包含用户实体和短剧实体。其中用户实体包括用户唯一标识openid号、用户名、头像、笔名、登录设备等属性,短剧实体包括短剧id、发布者openid、短剧视频封面url地址、短剧名称、简介、短剧视频源url地址、短剧收藏数、短剧点赞数、播放次数、发布时间等属性。用户实体和短剧实体之间存在一对多的发布关系。图3-10短剧管理ER图3.2.3广播剧管理功能广播剧管理功能的实体关系如图3-11所示。本部分包含管理员实体和广播剧实体。其中管理员实体包括管理员id、账号、密码、头像url地址等属性,广播剧实体包括广播剧id、广播剧封面url地址、广播剧名称、简介、标签、收藏数、发布时间等属性。管理员实体和短剧实体之间存在一对多的发布关系。图3-11广播剧管理ER图3.2.4作者信息管理功能作者信息管理功能的实体关系如图3-12所示。本部分包含用户实体和作者信息实体。其中用户实体包括用户唯一标识openid号、用户名、头像、笔名、登录设备等属性,作者信息实体包括笔名属性。用户实体和作者信息实体之间存在一对一的更新关系。图3-12作者管理ER图3.2.5通知管理功能通知管理功能的实体关系如图3-13所示。本部分包含用户实体,管理员实体和通知信息实体。其中用户实体包括用户唯一标识openid号、用户名、头像、笔名、登录设备等属性,管理员实体包括管理员id、账号、密码、头像url地址等属性,通知信息实体包括通知信息id、发送方管理员id、接收方用户openid、通知标题、通知内容和通知时间等属性。管理员与通知信息之间存在一对多的发布关系,用户与通知信息之间存在一对多的接收关系。图3-13通知管理ER图3.2.6帖子管理功能帖子管理功能的实体关系如图3-14所示。本部分包含用户实体和帖子实体。其中用户实体包括用户唯一标识openid号、用户名、头像、笔名、登录设备等属性,帖子实体包括帖子id、帖子文字内容、帖子图片url地址、发布者openid、点赞数、评论数、发帖时间。用户实体和帖子实体之间存在一对多的发布关系。图3-14帖子管理ER图3.2.7举报信息管理功能举报管理功能的实体关系如图3-15所示。本部分包含用户实体,管理员实体和举报信息实体。其中用户实体包括用户唯一标识openid号、用户名、头像、笔名、登录设备等属性,管理员实体包括管理员id、账号、密码、头像url地址等属性,举报信息实体包括举报信息id、举报信息类型、举报信息描述、图片凭证url地址、举报人openid、举报信息状态、处理方式和举报处理时间等属性。管理员与举报信息之间存在一对多的处理关系,用户与举报信息之间存在一对多的提交关系。图3-15举报信息管理ER图4系统设计4.1系统架构设计本系统基于nodejs平台进行系统架构设计,系统架构图如图4-1所示。系统架构分为四层。第一层为展示层,微信小程序利用uni-app技术实现页面展示,展示模块有小说模块、短剧模块、广播剧模块和社区模块页面。后台管理系统页面以vue-elementui,展示作品信息、帖子信息、举报信息、通知信息和数据统计的echarts图表。第二层为业务层,使用Egg.js进行接口的设计与开发,利用OSS实现部分数据的对象存储。第三层为持久层,利用Egg-Sequelize实现ORM模型映射。第四层为数据层,数据库管理系统使用的是MySQL数据库,实现数据存储。展示层发送请求到业务层,业务层接收请求后,处理相应的业务逻辑,调用持久层方法,持久层与数据层将持久层返回的模型数据返回给业务层,业务层按业务需求返回给展示层相应的数据。图4-1系统架构图4.2系统流程设计在系统需求分析的基础上,本系统分为小说管理、短剧管理、广播剧管理、作者信息管理、通知管理、帖子管理、举报信息管理七大模块。各模块流程设计阐述如下。4.2.1小说管理模块流程小说管理流程图如图4-2所示。该模块主要用于小说的管理,包括阅读小说、发布小说、收藏小说、下架小说、删除小说、修改小说信息和小说信息导出等操作。用户授权登录微信小程序后,可以阅读小说,对喜欢的小说进行收藏,在有创作权限的情况下,用户能够创作并发布小说、修改小说信息、删除自己发布的小说,如图4-2a)所示;管理员登录后台管理系统后,可以查看小说和对用户发布的小说进行下架操作,并可对小说信息列表数据进行excel格式的导出,如图4-2b)所示。a)用户流程图b)管理员流程图图4-2小说管理流程图4.2.2短剧管理模块流程短剧管理流程图如图4-3所示。该模块主要用于视频短剧的管理,包括观看短剧、发布短剧、下架短剧、修改或删除短剧等操作。用户授权登录微信小程序后,可以观看短剧,在有创作权限的情况下,用户能够发布短剧、修改短剧信息、删除自己发布的短剧,如图4-3a)所示;管理员登录后台管理系统后,可以查看短剧信息和对用户发布的短剧进行下架操作,如图4-3b)所示。a)用户流程图b)管理员流程图图4-3短剧管理流程图4.2.3广播剧管理模块流程广播剧管理流程图如图4-4所示。该模块主要用于广播剧的管理,包括收听广播剧、收藏广播剧、发布广播剧、下架广播剧、修改广播剧信息等操作。用户授权登录微信小程序后,可以收听广播剧,对广播剧集进行收藏等操作,如图4-4a)所示;管理员登录后台管理系统后,可以查看广播剧信息、发布广播剧、下架广播剧和修改广播剧信息,如图4-4b)所示。a)用户流程图b)管理员流程图图4-4广播剧管理流程图4.2.4作者信息管理模块流程作者信息管理流程图如图4-5所示。该模块主要用于作者信息的管理,包括封禁作者的创作权限、修改作者笔名、查看作者信息等操作。用户授权登录微信小程序后,可修改自己的笔名,如图4-5a)所示;管理员登录后台管理系统后,可查看作者信息列表,能够对作者进行封禁和开放创作权限的操作,如图4-5b)所示。a)用户流程图b)管理员流程图图4-5作者信息管理流程图4.2.5通知管理模块流程作者信息管理流程图如图4-6所示。该模块主要用于通知信息的管理,包括查看通知信息、发布通知、删除通知等操作。用户授权登录微信小程序后,可查看或删除接收到的通知信息,如图4-6a)所示;管理员登录后台管理系统后,可查看通知信息列表,向指定用户发布新通知,可以删除已发布的通知信息,如图4-6b)所示。a)用户流程图b)管理员流程图图4-6通知管理流程图4.2.6帖子管理模块流程帖子管理流程图如图4-7所示。该模块主要用于帖子的管理,包括查看帖子、发布帖子、删除帖子等操作。用户授权登录微信小程序后,可查看帖子列表,发布或删除个人发布的帖子,如图4-7a)所示;管理员登录后台管理系统后,可查看帖子列表,删除帖子,如图4-7b)所示。a)用户流程图b)管理员流程图图4-7帖子管理流程图4.2.7举报信息管理模块流程举报信息管理流程图如图4-8所示。该模块主要用于举报信息的管理,包括查看举报信息、提交举报信息、处理举报信息、删除举报信息等操作。用户授权登录微信小程序后,能够提交举报信息,查看已提交的举报信息状态,如图4-7a)所示;管理员登录后台管理系统后,能够查看举报信息列表,处理举报信息,删除举报信息,如图4-7b)所示。a)用户流程图b)管理员流程图图4-8举报信息管理流程图4.3系统数据库设计本系统根据数据分析与数据库第三范式的需求,设计了16张表,分别为举报信息表、管理员表、黑名单表、收藏表、评论表、历史记录表、点赞表、通知信息表、小说表、小说章节表、帖子表、广播剧表、广播剧剧集表、标签表、视频短剧表、用户表。举报信息表用来存储举报信息;管理员表用来存储管理员的账号密码等基本信息;黑名单表用来存储被封禁创作权限的用户信息;收藏表存储的是用户收藏的数据;评论表存储的是用户发表的评论;历史记录表存储的是用户阅读小说、收听广播剧和观看视频的历史记录;点赞表存储的是用户点赞信息;通知信息表用来存储通知信息;小说表用来存储小说的基本信息;小说章节表用来存储小说章节内容信息;帖子表用来存储社区帖子信息;广播剧表用来存储广播剧基本信息;广播剧剧集表存储的是广播剧剧集的内容与信息;标签表存储的是标签信息;视频短剧表存储的是视频源与短剧的基本信息;用户表存储的是微信小程序用户的基本信息。accusation表accusation表用来存储举报类型、举报描述、举报人openid等举报信息,如表4-1所示。其中,举报信息id作为主键。表4-1举报信息(accusation)表字段名称字段类型字段长度字段字段说明a_ida_typeintint122AUTO,PK1举报信息id举报类型a_desca_img_urlu_idvarcharvarcharvarchar2054339举报信息描述图片凭证举报人openidu_statusint1举报信息状态u_disposecreated_atdisposed_atvarchardatetimevarchar251052处理方式举报时间处理时间admin表admin表用来存储管理员的账号、密码、头像地址等基本信息,如表4-2所示。其中,管理员id作为主键。表4-2管理员(admin)表字段名称字段类型字段长度字段字段说明idnameintvarchar1722AUTO,PK1管理员id账号passwordavatar_urlvarcharvarchar2941密码头像地址blacklist表blacklist表用来存储用户openid、头像地址等被封禁创作权限的用户信息,如表4-3所示。其中黑名单信息id作为主键。表4-3黑名单(blacklist)表字段名称字段类型字段长度字段字段说明idu_idintvarchar1357AUTO,PK1黑名单信息id用户openidreasonavatar_urlvarcharvarchar24143加入理由头像地址collection表collection表存储的是收藏类型、收藏者openid、收藏时间等收藏信息,如表4-4所示。其中,收藏信息id作为主键。表4-4收藏(collection)表字段名称字段类型字段长度字段字段说明c_idc_typeintint172AUTO,PK1收藏信息id收藏类型c_src_idu_idcreated_atintvarchardatetime58540收藏目标id收藏者openid收藏时间comment表comment表存储的是评论内容、评论类型、评论人openid等评论信息,如表4-5所示。其中,评论信息id作为主键表4-5评论(comment)表字段名称字段类型字段长度字段字段说明c_idc_contentintvarchar14211AUTO,PK1评论信息id评论内容c_typec_src_idu_idcreated_atintintvarchardatetime259480评论类型评论目标id评论人openid评论时间history表history表存储的是记录类型、记录人等历史记录信息,如表4-6所示。其中,历史记录id作为主键。表4-6历史记录(history)表字段名称字段类型字段长度字段字段说明h_idint12AUTO,PK1历史记录idh_typeh_src_idu_idcreated_atintvarcharvarchardatetime256540记录类型记录目标id记录人openid记录时间like表like表存储的是点赞类型、点赞时间等用户点赞信息,如表4-7所示。其中,点赞信息id作为主键。表4-7点赞(like)表字段名称字段类型字段长度字段字段说明l_idint16AUTO,PK1点赞信息idl_typel_src_idu_idcreated_atintintvarchardatetime254580点赞类型点赞目标id点赞者openid点赞时间notice表notice表用来存储通知标题、通知内容等通知信息,如表4-8所示。其中,通知信息id作为主键。表4-8通知(notice)表字段名称字段类型字段长度字段字段说明idfrom_a_idintint1517AUTO,PK1通知信息id通知发布者idto_u_idtitlecontentcreated_atvarcharvarcharvarchardatetime54322320通知接收者id通知标题通知内容通知时间novel表novel表用来存储小说的封面图地址、小说标签、发布时间等基本信息,如表4-9所示。其中小说id作为主键。表4-9小说(novel)表字段名称字段类型字段长度字段字段说明n_idu_idintvarchar17255AUTO,PK1小说id作者openidn_cover_imgn_namen_tagscreated_atvarcharvarcharvarchardatetime34562550小说封面图地址小说名称小说标签发布时间novel_chapter表novel_chapter表用来存储章节序号、章节名称、发布时间等章节信息,如表4-10所示。其中小说章节id作为主键,所属小说id作为外键与小说表的小说id建立主外键约束。表4-10小说章节(novel_chapter)表字段名称字段类型字段长度字段字段说明nc_idnc_numberintint1010AUTO,PK1小说章节id章节序号nc_titlenc_contentn_idcreated_atvarcharlongtextintdatetime300100FK章节名称章节内容所属小说id发布时间post表post表用来存储帖子文字内容、发帖人openid、点赞数等帖子信息,如表4-11所示。其中,帖子id作为主键。表4-11帖子(post)表字段名称字段类型字段长度字段字段说明p_idp_contentintvarchar10255AUTO,PK1帖子id帖子文字内容p_img_urlu_idp_likes_nump_comment_numcreated_atvarcharvarcharintintdatetime305010100帖子图片地址发帖人openid点赞数评论数发帖时间radio_play表radio_play表用来存储封面图地址、广播剧名称、发布时间等广播剧信息,如表4-12所示。其中,主键是广播剧id。表4-12广播剧(radio_play)表字段名称字段类型字段长度字段字段说明r_idint10AUTO,PK1广播剧idr_cover_imgr_namer_intror_tagsr_collects_numr_statuscreated_atvarcharvarcharvarcharvarcharintintdatetime3050255501010封面图地址广播剧名称广播剧简介广播剧标签收藏数广播剧状态发布时间radio_play_episode表radio_play_episode表存储的是剧集序号、剧集名称、收藏数等广播剧剧集信息,如表4-13所示。其中,剧集id作为主键,所属广播剧id作为外键并和广播剧表的广播剧id建立主外键约束。表4-13广播剧集(radio_play_episode)表字段名称字段类型字段长度字段字段说明e_idint10AUTO,PK1剧集ide_numbere_titlee_comment_nume_srcr_idcreated_atintvarcharintvarcharintdatetime30301050100FK剧集序号剧集名称收藏数音频源地址所属广播剧id发布时间tag表tag表存储的是标签id和标签名的标签信息,如表4-14所示。其中,标签id作为主键。表4-14标签(tag)表字段名称字段类型字段长度字段字段说明t_idt_nameintvarchar1030AUTO,PK1标签id标签名(15)video表video表存储的是短剧标题、短剧介绍、短剧视频源地址等短剧信息,如表4-15所示。其中,短剧id作为主键。表4-15短剧(video)表字段名称字段类型字段长度字段字段说明v_idu_idv_cover_imgv_titlev_introv_srcv_collect_numintvarcharvarcharvarcharvarcharvarcharint113030292534011AUTO,PK1短剧id发布人openid封面图地址短剧标题短剧介绍短剧视频源地址收藏数(16)wxuser表wxuser表存储的是用户openid、用户名、头像地址等用户信息,如表4-16所示。其中,用户id作为主键。表4-16用户(wxuser)表字段名称字段类型字段长度字段字段说明idopenidwx_namewx_avatarwx_pennamedeviceip_addresscreated_atpublish_powerintvarcharvarcharvarcharvarcharvarcharvarchardatetimeint1735303030131601AUTO,PK1用户id用户openid用户名头像地址用户笔名用户设备用户ip地址登录时间是否有创作权限5系统实现本系统基于HbuilderX环境开发,数据库管理系统使用的是MySQL,使用基于Promise的http库axios进行HTTP请求的处理。5.1系统核心代码 本系统为前后端分离开发的模式,小程序端采用uni-app框架实现,后台管理系统使用的是vue-elementui框架实现,接口由Egg.js框架进行开发。下面以数据统计为例,给出Egg.js框架在本系统中的实现过程。具体核心代码实现如下。5.1.1前端Vue代码实现this.msg=this.$echarts.init(this.$refs.bar)this.msg=this.$echarts.init(this.$refs.bar)asyncgetData(){letdata=awaitthis.$http.get('/novel/billboard');this.allData=data.datathis.updateChart()},updateChart(){constnNames=this.allData.map(item=>{return})constnValues=this.allData.map(item=>{returnitem.value})}本段代码首先初始化echarts图表,axios发起GET请求,向后端接口请求小说榜单数据,接收到数据后更新当前图表。实现了小说榜单图表的页面展示。5.1.1后端接口代码实现lettransaction=nulllettransaction=nulltry{transaction=awaitthis.ctx.model.transaction(); const[blist,meta]=awaitctx.model.query(`SELECTn_namename,n_likes_numvalue FROMnovel ORDERBYn_likes_numdescLIMIT10`,{transaction}); const[slist,meta]=awaitctx.model.query(`SELECTcount(novel.n_id)value,tag.t_namename FROMnovelLEFTJOINtagONFIND_IN_SET(tag.id,novel.n_tags) WHEREnovel.n_idIN(SELECTn_idFROMnovel) GROUPBYtag.id ORDERBYvaluedesc LIMIT5`,{transaction});ctx.body={code:200,msg:'success',data:[{bdata:blist},{sdata:slist}]}}catch(error){awaittransaction.rollback();ctx.body={code:500,msg:'err'}}本段代码首先使用egg-sequelize创建事务,查询小说表的数据作为第一个事务,聚合查询小说表与标签表关联的数据作为第二个事务,执行事务提交,若执行成功,接口返回200的状态码和查询数据,若抛出异常,则事务回滚,接口返回500状态码与错误信息。数据返回至前台,利用Echarts图表形式呈现,实现了数据统计的业务逻辑。5.2系统模块实现5.2.1小说管理模块小说管理功能模块包括用户阅读小说、收藏小说、发布小说和删除小说功能。管理员下架小说,导出小说列表信息为excel表格功能。如图5-1所示,展示阅读小说界面。用户可在选择章节阅读文章,底部操作栏可切换章节,修改颜色主题和调整字体大小。图5-1小说阅读界面如图5-2所示,展示收藏小说界面。用户可在小说简介页面底部菜单点击收藏按钮进行收藏操作。图5-2小说收藏界面如图5-3所示,展示发布小说界面。用户可以选择创建新系列,填写新系列小说名,和其他基本信息并上传封面图来创建并发布新小说。图5-3小说发布界面如图5-4所示,展示修改小说信息界面。用户可以修改名称,简介和小说所属的分类标签。图5-4小说信息修改界面如图5-5所示,展示小说删除界面。用户可左滑列表,选择删除已发布的小说。图5-5小说删除界面如图5-6所示,展示小说下架功能界面。管理员在后台管理系统的小说管理模块中,选择某部小说,点击下架按钮使其失去被阅读的权限,这部小说在小程序端便不会再展示出来,而在后台管理系统仍可以看到这部小说,管理员可点击上线按钮使被下架的小说重新上架。图5-6小说下架界面如图5-7所示,展示导出小说信息界面,如5-8所示,展示导出的小说信息表界面。管理员在后台管理系统的小说管理模块中,点击导出小说信息按钮,即可调用xlxs插件与file-saver将表格内的信息导出为excel表格形式的文件。图5-7导出小说信息界面图5-8小说信息表小说管理模块核心代码如下。asynclist(){asynclist(){const{pageSize,curPage}=ctx.request.query;constkeyword=ctx.request.query.keyword||"";const[res,meta]=awaitctx.model.query(`SELECTnovel.*GROUP_CONCAT(tag.t_name)tagsFROMnovelLEFTJOINtagONFIND_IN_SET(tag.id,novel.n_tags)WHEREnovel.n_idIN(SELECTn_idFROMnovel)GROUPBYnovel.n_idHAVINGnovel.n_namelike'%${keyword}%'limit${(cur1)*pageSize},${pageSize}`);letdata=res.map(function(item){if(item.tags!=null){item.tags=item.tags.split(',');}returnitem;})const[total,meta2]=awaitctx.model.query('selectcount(0)totalfromnovel)ctx.body={ctx.body={data:data,total:total};}以上代码先接收分页参数和搜索参数,执行小说表与标签表的表间关联查询,再执行小说表数据总量的查询,查询结果返回给小说列表页,实现小说列表页的展示。5.2.2短剧管理模块短剧管理功能模块包括用户查看短剧、发布短剧、删除短剧。管理员下架短剧功能。如图5-9所示,展示查看短剧界面。用户可选择全屏观看,也可在观看短剧同时发布评论。图5-9查看短剧界面如图5-10所示,展示用户发布短剧界面。用户通过填写短剧名称与简介,并上传封面图和短剧视频源即可发布新短剧。图5-10发布短剧界面如图5-11所示,展示用户修改短剧信息界面。用户可以更改短剧的名称与简介。图5-11短剧信息修改界面如图5-12所示,展示用户删除短剧界面。用户可以在已发布的短剧列表中左滑选择删除按钮对选中的那条短剧进行删除。图5-12短剧删除界面如图5-13所示,展示管理员下架短剧界面。管理员可查看短剧列表,选中一条,点击下架按钮对短剧进行下架,短剧下架后,可点击上线按钮将其重新上线。图5-13短剧下架界面短剧管理模块核心代码如下。this.video=uni.createVideoContext(String(this.myVideo),this);this.video=uni.createVideoContext(String(this.myVideo),this);getSrcIndex(){ varself=this; varapiServer=':7001'; uni.request({ url:`${apiServer}/api/video/list`, success(res){ self.data=res.data; } });},play(id){ this.myVideo=id; letvideo=uni.createVideoContext(String(id),this); if(this.video!==video){ video.play(); this.video.pause(); } this.video=video;}以上代码先利用uni-app官方提供的函数创建视频上下文对象,向后台发起请求,获取视频列表,之后通过id选择器获取点击的视频下标,创建对应的视频上下文对象,实现播放视频的功能。5.2.3广播剧管理模块广播剧管理功能模块包括用户收听广播剧、管理员发布广播剧、修改广播剧信息、下架广播剧功能。如图5-14所示,展示收听广播剧界面。用户可在广播剧剧集详情页面收听广播剧,页面下方可点击列表切换剧集。图5-14广播剧收听界面如图5-15所示,展示广播剧发布界面,如图5-16所示,展示添加新剧集界面。管理员通过填写广播剧名称,广播剧简介,添加标签,上传封面图即可发布新广播剧。在广播剧列表选择一个广播剧栏目点击添加新集按钮,填写剧集表单的集数和标题并上传音频即可为这个广播剧栏目添加新剧集。图5-15广播剧发布界面图5-16新集添加界面如图5-17所示,展示广播剧下架界面。管理员可在广播剧列表页面选择某一广播剧栏目,点击下架按钮,即可对该广播剧进行下架,也可点击上线按钮重新上线该广播剧。图5-17广播剧下架界面如图5-18所示,展示修改广播剧信息界面。管理员进入广播剧详情页,可看到所有剧集,可以对某一剧集进行信息的修改。图5-18广播剧信息修改界面广播剧管理模块核心代码如下。asyncupload(){asyncupload(){letstream=awaitthis.ctx.getFileStream();if(!stream.filename){return;}letfilename=stream.filename.toLowerCase();lettarget='app/public/upload/audio/'+path.basename(filename)letwriteStream=fs.createWriteStream(target);awaitPump(stream,writeStream);letrid=stream.fields.rid;lettitle=stream.fields.title;letnum=stream.fields.num;letfileurl=':7001/public/upload/audio/'+path.basename(filename);awaitthis.ctx.model.Radioplay.create({ e_title:title, e_number:num, e_src:fileurl,r_id:Number(rid)});this.ctx.body={status:200,msg:'success'};}以上代码利用fs模块创建文件写入流,将文件传入服务器,利用pump模块可在回调函数中捕获程序运行的错误,正确执行后,将存储路径写入相应的数据库字段,实现音频文件上传的功能。5.2.4作者信息管理模块作者信息管理功能模块包括用户修改笔名,管理员封禁作者创作权限的功能。修改笔名功能:修改笔名界面如图5-19所示。用户登入微信小程序后,点击笔名,在弹窗中填入要修改的笔名,即可修改用户笔名。图5-19笔名修改界面如图5-20所示,展示封禁作者创作权限界面。管理员可在用户信息列表页选择某作者点击封禁账号来封禁其创作权限,也可对已经被封禁的账号进行解封操作。图5-20封禁创作权限界面作者信息管理模块核心代码如下。asyncknock(){asyncknock(){const{ctx,app}=this;const{openid,reason}=ctx.request.body;lettransaction=nulltry{transaction=awaitthis.ctx.model.transaction();letres=awaitctx.model.query(`UPDATEwxuserSETpublish_power=1WHEREopenid='${openid}'`,{transaction})awaitctx.model.query(`insertintoblacklist(u_id,reason)values('${openid}','${reason}')`,{transaction})awaitctx.model.query(`insertintoblacklist(u_id,reason)values('${openid}','${reason}')`,{transaction})awaitmit();ctx.body={code:200,msg:'success'}}catch(error){awaittransaction.rollback();ctx.body={code:500,msg:'err'}}}以上代码利用egg-sequelize创建事务,更新用户状态作为第一个事务,往黑名单表中添加该条作者信息作为第二个事务,事务正确执行,实现封禁作者创作权限的功能。5.2.5通知管理模块通知管理功能模块包括用户查看通知,删除通知。管理员发布通知,删除通知。如图5-21所示,展示查看通知界面。用户可看到接收到的通知标题与内容。图5-21查看通知信息界面如图5-22所示,展示用户删除通知界面。用户可在接收到的通知列表,左滑选择删除选项来删除这条通知。图5-22用户删除通知信息界面如图5-23所示,展示管理员删除通知界面。管理员可在已发布的通知列表,点击删除按钮来删除这条通知。图5-23管理员删除通知信息界面如图5-24所示,展示发布通知界面。管理员通过填写通知标题,选择通知对象,写入通知内容来对指定用户进行通知的发布。图5-24发布通知界面通知管理模块核心代码如下。const{n_status,n_id}=ctx.request.body;const{n_status,n_id}=ctx.request.body;awaitthis.ctx.model.notice.update({ n_status:n_status},{ where:{ n_id:n_id}})ctx.body={code:200,msg:”updatesuccess”}以上代码执行更新通知表的删除状态,通过更新删除状态即可实现用户方删除,管理员仍能够看到通知信息,实现软删除的业务逻辑。5.2.6帖子管理模块帖子管理功能模块包括用户查看帖子列表、发布帖子功能。管理员删除帖子功能。如图5-25所示,展示查看帖子列表界面。用户登录微信小程序后,可查看帖子列表,可对帖子进行点赞、评论操作。图5-25帖子列表界面如图5-26所示,展示发布帖子界面。用户点击列表页的发帖按钮,进入发帖页,填写文字内容也可上传图片,点击按钮进行发帖操作。图5-26发布帖子界面如图5-27所示,展示删除帖子界面。管理员可在帖子列表页选择某帖,点击删除按钮进行对帖子的删除操作。图5-27删除帖子界面帖子管理模块核心代码如下。constparts=ctx.multipart({autoFields:true})constparts=ctx.multipart({autoFields:true})constfilelist=[]letstreamwhile((stream=awaitparts())!=null){if(!stream.filename){ctx.throw('Error')return}constfname=stream.filename.toLowerCase()constfieldname=stream.fieldnameconsttarget='app/public/upload/'+path.basename(fname)constwriteStream=fs.createWriteStream(target)awaitpump(stream,writeStream)filelist.push({[fieldname]:target})}以上代码实现多文件写入流,实现上传多张图片的功能。5.2.7举报信息管理模块举报信息管理功能模块包括用户提交举报信息,管理员处理举报信息,删除举报信息。提交举报信息功能:举报信息表单界面如图5-28所示。用户可填写举报信息表单,点击提交按钮后可提交举报信息。图5-28举报信息表单界面如图5-29所示,展示举报信息处理界面。管理员可选中举报信息列表中需要处理的举报信息,点击处理按钮,可对该用户进行封禁账号创作权限处理。图5-29举报信息处理界面如图5-30所示,展示举报信息删除界面。管理员可选中举报信息列表中需要删除的举报信息,点击删除按钮,即可删除该条举报信息。图5-30举报信息删除界面举报信息管理模块核心代码如下。const{a_id,status,u_id}=this.ctx.query.body;const{a_id,status,u_id}=this.ctx.query.body;this.ctx.model.Accusation.update({ status:stat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江苏南通仲裁委员会秘书处招聘(非事业编制)10人考前冲刺密卷(综合题)附答案详解
- 2026年8月鼎和财产保险股份有限公司社会招聘44人备考题库审定版附答案详解
- 2026新疆塔城地区水务集团有限公司招聘2人备考题库(B卷)附答案详解
- 2026江西吉安市旺庐人力资源服务有限公司招募见习人员2人备考题库及参考答案详解AB卷
- 2026年蚌埠市怀远县公开竞聘省示范高中副校长3人考前冲刺密卷完整版附答案详解
- 2026自贸区川南临港片区(泸州综合保税区)产业发展服务专员招聘4人考前冲刺试卷(综合卷)附答案详解
- 2026广东广州医科大学附属第二医院诚聘临床科室主任、副主任9人考前冲刺试卷【达标题】附答案详解
- 2026年西藏民族大学教职工招聘(44人)模拟试卷带答案详解(巩固)
- 2026陕西延安市第一中学招聘教师6人模拟试卷及参考答案详解【基础题】
- 中江县卫生健康系统事业单位 2026年第二批医疗卫生辅助岗招募(17人)考前冲刺试卷(考试直接用)附答案详解
- 2026秋北师大版四年级数学上册第4单元我们生活的空间(二)第1课时观察的范围课件
- 北师大版四年级下册数学题每日一练
- 生物质循环流化床气化装置项目可行性研究报告
- xx区加强生物多样性保护实施方案
- 后勤部管理制度培训
- 2026年扬州市市场监督管理系统事业单位人员招聘考试备考试题及答案详解
- ISO10012-2026《质量管理-测量管理体系要求》之12:“7.1资源-7.1.1总则”专业指导问答材料(雷泽佳编制-2026A0)
- ISO140012026标准解读课件
- 基因治疗产品生产用质粒DNA质量控制策略
- 《化工企业可燃液体常压储罐区安全管理规范》解读课件
- 中国国新资产管理有限公司招聘笔试题库2025
评论
0/150
提交评论