【基于JAVA的二手手办交易系统的设计与实现16000字(论文)】_第1页
【基于JAVA的二手手办交易系统的设计与实现16000字(论文)】_第2页
【基于JAVA的二手手办交易系统的设计与实现16000字(论文)】_第3页
【基于JAVA的二手手办交易系统的设计与实现16000字(论文)】_第4页
【基于JAVA的二手手办交易系统的设计与实现16000字(论文)】_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录引言研究背景及意义近年来,随着国内动漫内容市场及电商的蓬勃发展,手办销售持续火爆。网络上常说的手办主要是指PVCFigure(简称PF),是一种以聚氯乙烯为原料制作的人物模型,这种材料成本相对廉价,市场上流动的人物模型多为此材质。相较原型师用树脂制作的人形作品(GarageKit,简称GK),PF价格便宜,但精细度程度较低。广义上的手办还包括了黏土、扭蛋、景品等人物模型。手办是无形文化的实物化,是将虚拟形象人格化,将屏幕中的英雄、少女、萌物形象带入现实生活的载体之一。手办消费是小众群体展示个性与爱好,将自身与他人区别开来的便捷方式。随着5G的发展,短视频、电商直播、VR直播、虚拟偶像演出等将不断发展。新媒体丰富了动漫手办的IP来源、产品形式和营销渠道[1]。在消费者的社群性、产消性、数据库式的文化消费行为当中,在政府对动漫产业扶持力量的介入、日本相关文化的大众传播、资本对二次元的关注和运作等诸多因素的合力之下,中国二次元文化的概念被极大程度地扩充了[2]。随着人们对手办消费需求的增长,其中的问题也逐步显现,由于手办市场的变化较快,而手办的消费群体大多还是学生,他们的购买能力有限,出现了有些需求无法得到解决。这些需求恰好可以通过二手交易的方式来解决,大部分手办爱好者对手办二手交易持有积极的态度并愿意参与其中。目前线上的二手交易平台很多,却没有一款专门针对手办相关的二手交易平台。当前大部分手办爱好者的二手交易行为发生在大型通用平台下。手办爱好者在这类通用平台下进行交易时会遇到多种问题。比如搜索某手办物品时,会出现很多其他不相干的物品;卖家发布某限量款稀有手办物品时,因无法第一时间得到消息推送,导致被人抢先买走等。这些都是由于手办特有用户群体和商品属性决定的,也反应了二手交易平台在这一特殊环境下的局限性。研究现状移动互联网时代网络信息平台正在从桌面端向移动端迁移,人们的信息获取方式与使用习惯也正在向移动智能终端转移。随时、随地、随身、永远在线的移动应用特性渗透到各行各业及社会生活的方方面面。从订购机票、火车票到读书、K歌、听音乐等都可通过移动终端利用碎片化时间来实现[3]。目前有许多的二手交易平台是Web端的,然而现在大多数人都更倾向使用手机,所以需要移动App来帮助人们方便的浏览和交易二手商品,采用新技术和新方法改革传统业务是不可逆转的趋势[4]。但是线上还没有针对手办这一领域进行细分的二手交易平台,国内常用的通用二手交易App有闲鱼、转转等等。以闲鱼为例,平台内的商品分类是按照商品的属性来进行分类的,范围较大无法查找到相关手办内容。如在转转搜索“火影忍者”时会出现大量的其他无关信息,这时对消费者来说,给予选择就不够丰富。可见,虽然手办的二手消费十分庞大,但因其属性较为特殊,在通用二手交易平台上进行买卖会出现困扰用户的多种问题。一些ACG社交软件设有闲置专区可以出售二手手办等,但对二手商品并没有分类,用户难以找到有针对性的信息,内容管理混乱。其次也没有搜索功能,用户只能看到信息却无法查找商品。这些App中的二手交易功能仅是依附于社交软件的一个模块,导致功能不被重视,设计简陋、形式单一,用户体验较差[5]。研究技术可行性分析本系统主要使用JAVA语言进行开发,后端选用SpringBoot和Mybatis框架,前端使用Uniapp+uView框架,数据库使用MySQL关系型数据库,使用Redis作为缓存数据库提高系统性能。本系统还涉及到实时通讯功能,该功能是基于WebSocket协议实现的。SpringBoot是Pivotal团队提供的一个新框架,旨在简化新Spring应用程序的初始构建和开发过程。通过约定优于配置和起步依赖,简化复杂的依赖关系,大量减少XML配置文件,基本实现自动化位置,能够快速创建独立运行的Spring项目,并且集成了主流框架,如AOP和MyBatis。通过这种方法,SpringBoot致力于成为蓬勃发展的快速应用程序开发领域的领导者[6]。Mybatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架,在持久层映射关系的开发中,可以不用写实现类,能以代理方式自动生成实现代码,同时SQL语句写在映射XML文件中,实现了代码与SQL分离,降低耦合度。在映射XML文件中,通过id标识不同类型的SQL语句,对查询、插入、删除和更新语句进行区分,如查询语句的id前缀为query,删除语句的id前缀为delete,通过甄别判断为不同SQL语句选择对应的数据源,实现动态的读写分离[7]。基于主流和最新前端开发框架的Vue.js技术开发平台前端部分,提高了网站的开发效率,代码逻辑更清晰,更容易应对不断变化的需求,系统更容易维护和集成,从而降低开发成本[8]。uni-app

是一个使用

Vue.js

开发所有前端应用的框架[9]。开发者通过编写Vue.js代码,Uni-app将其编译到iOS、Android、微信小程序等多个平台,保证其正确运行并达到优秀体验。Uni-app继承自Vue.js,提供了完整的Vue.js开发体验。WebSocket协议支持Web浏览器与Web服务器之间的数据交互,通过较低的性能开销,实现客户端与服务器的实时数据传输。WebSocket协议支持Web浏览器与Web服务器之间的数据交互,通过较低的性能开销,实现客户端与服务器的实时数据传输[10]。Redis作为一个NoSQL数据库,它的简单易用是它最主要的特点。作为一个服务器和数据库之间的一个缓冲区,当用户要访问数据库时,先访问Redis,如果Redis中有所需要的数据,便直接取出,返回到服务器;如果没有,便去访问数据库,将数据库中的数据返回给服务器,同时将数据保存一份到Redis中,便于下次的取和用[11]。同时以上技术笔者均有一定的基础,因此完成该系统的开发在技术上是可行的。主要研究内容本课题结合国内外的研究现状,并对实际情况和实际需求进行分析,设计出了一个二手手办交易系统。系统以用户发布手办和购买手办为核心,以下是要实现的主要功能点:1.浏览二手手办商品。用户能够在本系统中浏览二手手办信息,以便选择用户喜欢的手办,并根据用户的需求过滤价格、发布地点等,方便用户查找商品。2.买方和卖方之间的沟通。在用户看到到心仪的手办后,能与卖家进行交流沟通,确认手办的详细信息、商议具体价格等,直到买卖双方都有意愿进行交易。3.买卖双方达成交易。买卖双方达成交易意向后,买家可直接下订单然后确认好订单信息,核实订单信息无误后再行付款,若发现订单信息有误可取消订单。卖家收到买家下的订单并付款后,卖家进行发货。买家收到手办后,确认商品无误后,平台才将商品金额打给卖家。4.发布二手商品信息。用户有闲置的手办,想要出手时,可以发布手办的相关信息,在平台审核后才能够进行买卖。这样能有效减少资源浪费,让售卖方也能减少损失。5.爱好者们的交流。用户能在平台上分享自己与手办的故事、挑选手办的心得等,其他爱好者可进行评论交流。在完成以上主要功能后,可进行相应的功能扩展,如商品的留言、评论等功能,同时也要保证系统的易用性、可操作性以及界面的一致性。本文结构本文共分为六章,各章主要内容如下:第一章引言。主要介绍了本研究课题的研究背景及意义,分析了国内外研究现状,进行了技术的可行性分析,交待了本文的主要研究内容。第二章需求分析。主要介绍了系统的功能需求、非功能需求和功能结构设计,然后从售卖者和购买者两大主要用户进行需求分析。第三章总体设计。主要介绍了系统架构的设计和项目结构,并进行简单的分析。第四章数据库设计。主要介绍了系统数据库的实体联系设计,并且列举了主要表的结构。第五章系统详细设计。主要从登录注册模块、搜索浏览模块、商品模块、社区模块、消息模块、个人中心模块、管理模块,这七大模块进行系统的详细设计分析。第六章系统测试。主要介绍了系统测试的目的与过程,分析了此次测试的结果。本章小结本章介绍了当前二手手办交易的现状和本系统的研究意义,然后分析了国内外的二手手办交易情况和系统所要使用的技术的可行性,接着结合国内外的研究现状,并从实际情况和实际需求出发,介绍了本系统的主要研究内容,最后说明了本文的结构。第2章需求分析系统需求分析功能需求分析图2.1功能结构图系统的功能结构如图2.1所示,以下对系统的主要功能进行介绍。发布商品:售卖需要发布自己闲置的商品或者服务,提供必要的商品信息即可发布。查看社区:手办爱好者们可以查看社区里的其他用户分享的动态,也可以主动发布自己的动态。对动态进行点赞和评论,让爱好者们更好地交流。查看消息:用户能查看系统消息、互动消息和联系人发来的新消息。搜索:热搜榜可以让用户了解当前流行哪些商品,记住搜索记录能帮助用户更快搜地索。查看商品:用户可对感兴趣的商品收藏,留言。也可以与卖家更详细地了解商品,觉得合适,想要购买的话就可以下订单。信息管理:管理员对发布的商品信息进行审核,下架违规的商品。管理员也能对用户信息等进行管理。查看个人信息:用户可修改自己的个人信息,查看收藏、历史记录等,也可以进行充值。系统角色权限分析根据二手手办交易系统的需求分析结合目前二手交易平台的问题,并从软件开发角度出发,本系统的用户主要分为三大类:登录用户,游客用户和管理员用户。游客用户游客用户即未登录的用户,其仅拥有以下的访问权限。1.首页模块。未登录的用户其首页将展示系统售卖的手办信息。2.搜索浏览模块。未登录的用户能查看热搜排行榜以及部分的多条件搜索功能。3.社区模块。未登录的用户能进行查看发布的社区动态,无法进行评论和点赞。4.商品模块。未登录的用户能近能查看手办的详细信息,无法进行收藏和留言操作,也不能与卖家交流沟通。5.登录注册模块。未登录的用户能进行全部登录注册模块操作。登录用户登录用户除了拥有游客用户能使用的功能外,还在商品模块,社区模块,个人中心模块、消息模块等增加访问的功能权限1.商品模块。登录的用户可对手办进行收藏和留言操作,还能够与卖家进行沟通交流,询问详细信息。2.社区模块。登录的用户可在社区的动态里进行评论和点赞,还能发布自己的动态。3.个人中心模块。登录的用户可进入个人中心模块查看和修改个人基本资料,如头像、简介等。另外还可查看用户发布的手办信息,查看用户收藏的手办,查看用户已购买的手办和查看用户已售出的手办,还有充值服务。最后便是退出登录功能。4.消息模块。用户登录后可进入消息模块,查看系统通知,查看互动消息以及和买家卖家沟通交流。管理员用户系统还设立管理员用户对系统进行基本的管理,管理员分为两种,一是系统管理员,二是审核管理员。审核管理员主要的职责是审核用户发布的动态,商品以及服务。1.审核管理员仅能对用户发布的未审核商品和服务进行审核以及修改。通过商品信息进行审核,对审核不通过的商品和服务进行下架处理,并告知用户原因,让用户能重新修改商品和服务信息。2.审核管理员可对用户发布的动态进行查看审核,发现有问题的动态可直接删除,并提醒该用户注意。系统管理员是拥有全部系统权限的管理员,能对用户进行修改和删除,还能创建用户,创建审核管理员。对手办的分类进行操作,添加和删除分类列表的分类信息。系统管理员能发送系统消息给所有用户。角色用例分析购买者用例图STYLEREF1\s2.2购买者用例图购买者的主要需求就是购买二手手办,系统展示大量手办信息,供购买者浏览。购买者也可以通过搜索功能去找到自己想要的手办,通过查看手办的详细信息,确定是否为自己想要的手办。之后可以跟卖家进行交流沟通,询问进一步的信息。购买者觉得是自己心仪的手办后,可以直接下订单,确认好订单信息后付款,等待手办的到来,同时可以随时查看订单信息。售卖者用例图STYLEREF1\s2.3售卖者核心需求图售卖者的主要需求就是出售自己闲置不要的手办。售卖者可以在系统内发布自己的手办,填写好相应信息,通过系统验证后就可以上架,等待管理员审核通过后方可进行交易。售卖者可以在个人中心里修改已发布的手办信息,不过修改后需要重新经过审核才可以交易。然后与买家达成交易意向,等待买家下订单和付款。之后可以选择线上发货或线下交易,等待买家确认收货。同时也可以随时查看订单信息。非功能需求在满足用户需求的同时系统还要满足的以下需求:1.安全需求。只允许访问该类型的用户权限能访问到的功能页面。例如:管理员后台需要管理员用户才能进行访问,交易相关页面需要用户登入后才能进行访问。2.易用性需求。要求系统界面直观,简洁,保持一致。尽可能减小页面深度,避免页面间多次跳转。3.性能需求。系统的平均响应时间小于3秒,以保证用户的正常体验。本章小结本章讲述了二手手办交易系统的功能需求,并对功能需求进行分析,然后介绍了系统角色的权限,接着分析了系统主要用户的主要功能用例,并且明确了系统一系列的非功能需求。第3章系统设计系统设计系统架构设计本系统的架构如图3.1所示。本系统采用前后端分离的MVC设计,系统分为View层、Controller层、Model层和DAO层。View层由uView组件和CSS结合共同展示界面,在要请求数据时由Vue.js进行请求处理,通过Ajax技术调用后端提供的API接口[12]。Controller层接收到前端传过来的数据后,通过Autowired注解注入Service层进行业务逻辑的处理,Service层里的方法是接口,具体业务逻辑由ServiceImpl层中方法实现。ServiceImpl层调用Mapper层的接口和相关映射的XML文件进行数据库的增删改查操作[13],返回JSON形式的数据给前端。前端处理完数据库后通过双向绑定,把数据传递给页面,由页面展示给用户。图STYLEREF1\s3.1系统架构图项目总体结构前端总体结构图3.2前端总体结构图项目前端的结构如图3.2所示,其中uview-ui为框架组件包,page为前端页面负责各个模块前端的界面呈现,负责菜单的跳转及菜单所需权限的设定,store为页面底部导航栏配置,static为静态资源包,主要负责存储用户上传的各种图片,api为与后端接口交互的封装文件,config为项目的配置文件,components为页面的公共组件包。后端总体结构图3.3项目后端结构图项目后端的结构如图3.3所示,其中config包为项目的配置类,如WebSocket配置类等,controller包是负责接收前端发送的请求,并调用Service层的代码进行业务处理,然后返回JSON数据库给前端。dto包是前端页面展示数据的实体,用于返回前端页面所需的数据。vo包为接受前端请求参数里的实体。entity包为数据库表对应的实体,用于接受数据库查询的数据。service包是接口包,负责功能逻辑的处理,具体实现类在service.impl包。mapper包是dao层,主要用于对数据库进行CRUD操作。utils为工具包,包含图片操作类,结果返回类。src/main/resources下的mapper包是XML文件,与之前提到的mapper包存在映射关系,主要负责较为复杂的涉及动态SQL处理的数据库操作,提高SQL灵活性[14]。第3章总体设计数据库实体联系设计本系统的涉及的各个实体间的联系如下图所示。数据库实体主要围绕用户实体展开,所有操作基本都与用户相关。用户实体与商品实体、订单实体、地址实体、商品实体、动态实体、评论实体等存在一对多的关系。动态和商品能有多个评论,与评论实体存在一对多关系。回复是依附于评论的,一条评论拥有多条回复,所以评论实体与回复实体是一对多的关系。一个商品可以属于多个订单,一个订单只能有一个商品,那么商品实体与订单实体就是一对多关系。一个商品只能属于一种分类,一种分类可以拥有多个商品,商品实体与分类实体是多对一关系。图STYLEREF1\s4.SEQ图\*ARABIC\s11系统数据库E-R图数据库表结构设计本系统的数据库使用InnoDB引擎,以下是主要表的结构设计表STYLEREF1\s4.SEQ表\*ARABIC\s11用户信息表所属表名字段名字段类型字段说明useridint用户唯一id,主键userusernamearchar用户账号userpasswordvarchar用户密码usernamevarchar用户昵称useravatarvarchar用户头像usersexint用户性别userbirthdayvarchar用户生日userintroducevarchar用户简介userMoneydouble用户余额用户信息表结构如表4.1所示,记录了用户的基本信息。其中用户性别字段中1表示男性,0表示女性。表STYLEREF1\s4.SEQ表\*ARABIC\s12商品信息表所属表名字段名字段类型字段说明itemsidint商品唯一id,主键itemsnamevarchar商品的介绍itemspicvarchar商品图片地址itemspricedouble商品价格itemsfreightdouble商品运费itemsaddressvarchar商品发货地址itemsipint作品名itemsroleint角色名itemsuser_idint发布用户的iditemsstateint状态itemsreasonvarchar审核失败的原因itemstimedatetime发布时间itemstypeint商品类型商品信息表结构如表4.2所示,记录了商品的各个基本信息以及创建时间,发布用户,发布时间,商品状态等信息。其中ip和role是分类,状态有五种,分别是待审核状态、审核失败状态、审核通过状态、下架状态、售完状态。type字段是商品的类型,用于区分是服务还是商品。表STYLEREF1\s4.SEQ表\*ARABIC\s13订单记录表所属表名字段名字段类型字段说明orderidint唯一id,主键orderorder_idint订单号orderitems_idint商品idorderbuyerint购买者orderaddress_idint收货地址orderpricedouble成交价ordertimedatetime订单生成时间orderstateint订单状态orderreasonvarchar订单取消原因订单记录表结构如表4.3所示,记录了购买者下订单购买的商品、选择收货的地址、最终成交价等信息,其中订单状态有五种,分别是待付款状态、付款成功状态订单取消状态、交易完成状态以及发货状态。表STYLEREF1\s4.SEQ表\*ARABIC\s14用户地址信息表所属表名字段名字段类型字段说明addressidint唯一id,主键addressnamevarchar收货人姓名addressphonevarchar收货人电话addressdetailvarchar收货人具体地址addressareavarchar收货人所在地区addressis_defaultint是否为默认addressuser_idint所属用户用户地址信息表结构如表4.4所示,记录用户收件地址的基本信息。其中is_default字段1表示为当前用户的默认地址,0为非默认地址。表STYLEREF1\s4.SEQ表\*ARABIC\s15社区动态记录表所属表名字段名字段类型字段说明dynamicidint唯一id,主键dynamictextvarchar动态信息dynamiczanint点赞数dynamicpicvarchar图片地址dynamicuser_idint用户iddynamictimedatetime发布时间社区动态记录表结构如表4.5所示,记录了用户发布的动态信息。表STYLEREF1\s4.SEQ表\*ARABIC\s16动态点赞表所属表名字段名字段类型字段说明likesidint唯一id,主键likesuser_idint点赞用户idlikesdynamic_idint动态idlikesis_deleteint点赞状态likesto_user_idint被点赞用户的id动态点赞信息表结构如表4.6所示,记录了用户点赞动态的信息。其中is_delete字段为逻辑删除,1表示点赞,0表示删除,也就是取消了点赞。表STYLEREF1\s4.SEQ表\*ARABIC\s17消息表所属表名字段名字段类型字段说明noticeidint唯一id,主键noticetitlevarchar消息标题noticetextvarchar消息内容noticetypeint消息类型noticereceive_userint接收用户idnoticeis_readint是否已读noticetimedatetime发送时间消息表结构如表4.7所示,记录了信息的接收人,发送时间,信息标题,信息内容等信息。其中is_read字段为该消息是否已读,0表示未读状态,1表示已读状态。type字段表示消息的类型,1为互动消息,0为系统消息。表STYLEREF1\s4.SEQ表\*ARABIC\s18聊天室表所属表名字段名字段类型字段说明chatroomidint唯一id,主键chatroomuser_idint聊天用户chatroomto_user_idint聊天用户chatroomitem_idint聊天相关的商品chatroomorder_idint聊天相关的订单chatroomtextvarchar最新消息chatroomtimedatetime最新时间聊天室表结构如表4.8所示,记录了聊天双方的用户,聊天相关的商品等信息。表STYLEREF1\s4.SEQ表\*ARABIC\s19聊天记录表所属表名字段名字段类型字段说明chatidint唯一id,主键chatsend_userint发送用户chatreceive_userint接收用户chattypeint消息类型chattextvarchar消息内容chatpicvarchar图片chattimedatetime发送时间聊天记录表结构如表4.9所示,记录了聊天的发送用户和接收用户,消息的内容,消息的类型等信息。其中type字段为消息类型,消息类型有三种,0为图片,1为文字,3为系统发送的消息。表STYLEREF1\s4.10评论表所属表名字段名字段类型字段说明chatidint唯一id,主键chatuser_idint发送用户chattopicint主题chattopic_idint主题idchatcontentvarchar评论内容chattimedatetime发送时间评论表结构如表4.10所示,记录了评论的发送用户,评论的内容,评论时间等信息。其中topic字段为评论类型,配合topic_id字段使用。当topic为0时表示评论的是商品,topic_id为商品的id。当topic为1时表示评论的是动态,topic_id为动态的id。当topic为2时表示评论的是订单,topic_id为订单的id。表STYLEREF1\s4.11评论回复表所属表名字段名字段类型字段说明chatidint唯一id,主键chatuser_idint回复发送用户chatto_user_idint回复的用户chatcontentint回复内容chatcomment_idvarchar评论idchattimedatetime回复时间评论回复表结构如表4.11所示,记录了回复用户和被回复用户,回复的内容,回复时间等信息。本章小结本章主要介绍了系统的总体架构设计和项目的前后端结构,使用E-R图来展示各实体表之间的关系,然后说明主要的数据库表结构的设计,为系统的整体框架奠定了基础。第4章系统详细设计与实现系统详细设计与实现登录注册模块设计与实现登录功能图STYLEREF1\s5.1登录类图用户在系统中遇到需要登录才能使用的功能时,会提示需要登录并自动跳转到登录界面。输入用户名和密码后,点击登录按钮前端会发送请求,UserController类接收到请求后,会执行该请求对应的方法login方法,login方法将调用UserService类的login接口进行验证,先验证该用户名对应的账号是否存在,若存在再进行密码正确性的验证,如果均验证通过,返回对应的User实体的JSON数据给前端,若有验证未通过则返回失败标志。前端根据返回的标志进行判断,若成功则进入跳转到首页,若失败则提示错误消息。登录类图如图5.1所示。注册功能用户没有账号时,可以选择注册。用户进入注册页面,输入正确格式的账号后,Vue.js会异步发送请求。后端UserController类接受到请求后,执行对应接口的方法exitUser方法,会判断账号否已存在,然后返回结果给前端,告知用户是否已存在,若存在则提示需要用户重新填写账号,直至输入的账号不存在。然后输入长度6-20的昵称,长度在6-20之间的密码,并重复密码,还有生日、性别和简介,其中生日、性别和简介不是必填。点击注册按钮,若信息格式验证通过则发送请求。后端的UserController类接受请求,执行接口对应的方法register方法,该方法调用UserService类的register接口,对密码进行md5+salt加密后,调用UserMapper类的接口,将信息存进数据库中,返回注册成功信息给前端。首页模块设计与实现系统首页将随机展示30条手办商品信息和已审核的服务信息,当页面到底时会自动加载信息展示给用户,在进入首页时会自动发送请求,后端的ItemController类接受请求,执行接口对应的方法getRandItem方法,getRandItem方法会调用ItemService类的getRandItem接口,该接口会调用ItemMapper层的randSelect接口和相关映射的XML文件,执行SQL语句获取数据库中随机的30条手办商品信息和已审核的服务信息,然后将数据返回给前端,前端通过双向绑定,让页面展示最传递过来的数据。由于是随机的数据,不免出现重复的情况,前端会对获取的信息进行过滤,剔除掉重复的数据,使得展示的数据不重复。搜索浏览模块设计与实现保留搜索记录功能为减少用户输入工作量,提高系统可用性,设计了历史搜索记录功能。用户在首页点击搜索框时会进入搜索页面,在此页面可以看到自己最近搜索过的十个词。点击词汇可以进行再次搜索,也手动清空历史搜索记录。当用户输入搜索词,点击搜索按钮时,从LocalStorage查询是否有历史记录,若已有则取出并解析为JSON格式,判断是否已经有该搜索词,然后将该词从历史记录里删除,插入到历史记录数组的头部,若无则直接放入数组中。再判断当前数组长度是否大于10,超过的话删除一个。流程如图5.3所示。图5.3保存搜索记录的流程图热门搜索功能用户在进入搜索页面后不仅能看到历史搜索记录,还能看到目前排行前10的热门搜索。当进入这个页面时,Vue.js会发送请求,后端的ItemController类接受请求,执行对应接口的方法getHot方法,getHot方法会调用hotService类的get接口。由于这个功能使用很频繁,对数据库进行大量的查询操作,会大大影响效率,所以采用Redis缓存中间件,在第一次执行时会将数据库的hotsearch表加载进Redis中,同时返回数据给前端。之后再次执行时直接从Redis中获取,因为Redis是使用内存存储数据,所以IO速度快,提高了查询效率,同时也减少了数据库的压力。如图5.4所示,显示出热度前10的搜索记录。图5.4搜索界面多条件查询商品功能用户在搜索页面输入关键词点击搜索后会进入多条件搜索页面,在此页面用户可根据最近时间、按价格升序和按价格降序对搜索结果进行排序,也可按照商品的发货地点的省份进行过滤,或者可选择商品是否包邮、是否免费等条件进行搜索,还可以对价格范围和时间范围进行过滤。在用户选择好条件后再次搜索,前端发送请求到后端,ItemController类接受请求,执行接口对应的方法search方法,search方法先会调用hotSearchService类的set接口,将搜索关键词存入数据库里。然后调用ItemService类的search接口,search接口会调用ItemMapper层的search接口和相关映射的XML文件,动态拼接SQL语句从数据库中获取符合条件的商品信息返回给前端。图5.5为SQL拼接的流程图。图5.5多条件搜索商品的SQL拼接流程图商品模块设计与实现商品留言功能用户点击商品进入商品详情页面时不仅显示商品的详细信息还会显示的留言。已登录的用户可在此页面留言询问其他用户或是商品发布人,还能回复其他用户的留言。在进入此页面时,自动发送请求,后端的CommentController类接口接受请求,执行接口对应的方法getItemComment方法,getItemComment方法调用CommentService类的getItemAllComment接口,getItemAllComment接口调用CommentMapper类的sellectAllCommentByTopicId接口和相关映射的XML文件,根据传递的参数执行SQL,返回相应的评论数据给前端,页面展示返回的评论信息。用户在输入留言后发送,会发出请求,后端的控制层接受请求,层层调用,,根据传递的参数,向数据库插入留言数据。用户点击其他用户的留言后页面底部会弹出输入框,提示回复的用户名,这时输入要回复的内容并发送,就可以回复这名用户,如图5.6所示。发送后会发出请求,后端的控制层接受请求,层层调用,根据传递的参数,执行SQL语句,向数据库插入数据。图5.6商品页面部分页面(留言)收藏商品功能在浏览商品时,用户若发现感兴趣的商品,可点击收藏按钮,收藏该商品。收藏的商品可在个人账户界面里查看。点击收藏按钮时会发送收藏请求,后端的控制层接受请求,执行接口对应方法changeCollectionState方法,changeCollectionState方法调用CollectService类的changeState接口,接口会调用CollectMappe类中的selectByUserIdAndItemId接口通过用户ID和商品ID查询数据库,判断有无该用户的收藏记录。若无记录则CollectServiceImpl类的changeState方法会调用CollectMapper类中的insertCollect接口,向数据库插入收藏记录。若有记录则changeState方法会调用CollectMapper类中的updateCollect接口,更新该条记录的is_delete字段。创建聊天室功能用户若想要了解某商品的更多信息,可直接去卖家进行交流。用户点击页面底部的我想要按钮即可进入聊天页面与卖家沟通交流。当用户点击我想要按钮时将发送请求,后端的ChatController类接受请求,执行接口对应的方法creatRoom方法。creatRoom方法会调用两次Chatervice类的setChatRoom接口,setChatRoom接口会调用ChatRoomMapper类的insert接口。向数据库插入卖家与买家和买家与买家的聊天室记录。聊天室在消息页面可查看。社区模块设计与实现社区动态信息显示功能用户进入社区页面时会自动发送请求,后端的DynamicController类接受请求,执行接口对应的方法getRandDynamic方法,getRandDynamic方法将会调用DynamicService类的getRand接口,getRand接口会调用DynamicMapper类的selectALLRand接口,从数据库获取30条随机的动态信息。getRandDynamic方法还会调用LikesService类的getOneUserLike接口,getOneUserLike接口调用LikesMapper类的selectByUserId接口,获取当前登入用户的点赞情况,对获取到的动态信息进行点赞设置,然后返回给前端。动态点赞功能功能用户若发现感兴趣是觉得很赞的动态的可以对该条动态进行点赞,可以在社区页面点赞,也可以进入动态详情页面点赞。当用户点击点赞按钮时,前端发出请求,后端的DynamicController类接受请求,执行接口对应的方法changLike方法,changLike方法会调用LikesService类的updateLike接口,updateLike接口先调用LikesMapper类的selectByUserIdAndDynamicId接口,获取点赞情况的记录,若无记录,则调用LikesMapper类的insertLike接口,向数据库插入点赞记录。若存在点赞记录,则调用LikesMapper类的updateByUserIdAndDynamicId接口,更新该条记录的点赞情况。动态评论功能用户点击某一条动态进入动态详情页面时不仅显示动态的全部信息还会显示其他用户的评论。已登录的用户可在此页面评论,还能回复其他用户的评论。在进入此页面会自动发出请求,后端的CommentController类接受请求,执行接口对应的方法getDynamicComment方法,getDynamicComment方法调用CommentService类中的getDynamicAllComment接口,getDynamicAllComment接口调用CommentMapper类的selectAllCommentByTopicId接口,根据传递的参数执行方法,返回相应的评论数据。前端展示返回的评论信息。该功能与5.1.1的商品留言功能是差不多的,复用了同一个CommentMapper的接口,评论和回复也是使用了同一个接口,提高了开发效率。消息模块设计与实现未读通知功能用户进入消息页面时自动发出请求,从后端获取通知数据,若有新通知,会在页面中的通知模块提示用户有多少条未读通知。点击进入通知消息,查看新通知后,会将未读消息的状态变为已读。联系人展示功能在消息页面除了会有通知消息外,还可以看到有联系人,不仅有显示最新的一条聊天记录和时间,还有当前正在与卖家沟通交流的商品。进入消息页面上时会自动发出请求,后端的ChatController类接受请求,执行接口对应的方法getChatRoom方法,getChatRoom方法调用ChatService类的getChatRoom接口,getChatRoom接口调用ChatRoomMapper类中的selectById接口,从数据库里获取当前用户的所有联系人,然后返回给前端。聊天功能用户点击某个联系人会进入聊天室,可以与该联系人进行实时聊天,前提是对方在线。若对方不在线,也不影响与卖家的交流沟通,发送的信息会存到数据库里,等待对方上线时也能看到。聊天能发送文字和图片,图片只能发送一张。输入发送文字消息点击发送后,将发出请求,后端的ChatController类接受请求,执行接口对应的方法sendMSG方法,该方法通过接受到请求参数生成相应的Chat实体类,然后调用ChatService类的insert接口,进而调用ChatMapper类的insert接口,向数据库插入数据。endMSG方法还会调用ChatService类中的setChatRoomTimeAndText接口,setChatRoomTimeAndText接口会调用ChatRoomMapper类中的updateTimeAndTextByUserIdAndToUserId接口,对聊天室的信息进行更新。最后调用websocket类的sendMessageTo方法,将消息通过websocket协议发送至前端。发送图片与发送消息处理逻辑类似,不同的是,还需要调用FileUtils图片工具类对图片进行处理。个人中心模块设计与实现个人资料展示与修改功能用户登录后的页面如图5.13所示,进入个人中心界面点击页面右上角的设置按钮,可查看个人基本资料,进入设置界面时会自动发送请求,后端的UserController类接受请求,执行接口对应的方法getOneUser方法,getOneUser方法调用UserService类的getOneUser接口,getOneUser接口会调用UserMapper类的getUserById接口获取用户的基本信息,返回数据到前端进行展示。用户也可输入正确格式的用户昵称、性别、生日、简介以及头像进行个人信息的修改。还可以管理用户自己的收货地址,添加、删除和修改地址,设置默认地址。充值功能用户登录后即可在进入个人中心界面看到用户的余额,余额不足时无法购买商品。点击充值按钮,进入充值页面,在此页面输入要充值的金额,点击充值按钮,即可进行充值。查看历史浏览功能用户登录后进入个人中心界面可以看到历史浏览数量,点击后查看历史浏览,历史浏览记录按照时间进行分类。进入该页面时会到LocalStorage里去取得历史浏览记录,然后解析为列表,显示在页面。查看我的收藏功能用户登录后进入个人中心可以看到收藏数量,点击后查看我的收藏,进入界面时会发送请求获取我的收藏。后端的ItemController类接受请求,执行接口对应的方法getCollectItem方法,该方法调用CollectService类中的getItem接口,getItem接口会调用CollectMapper类的selectByUserId接口和相对应的XML文件,获取数据后返回到前端进行展示。查看我的发布功能用户登录后进入个人中心界面可以看到用户发布商品数量,点击后查看我发布的商品,进入界面时会自动发送请求,后端的UserController类接受请求,执行接口对应的方法userRel方法,userRel方法会调用itemsServiceget类的UserRel接口,通过用户id获取数据库中该用户发布的商品信息,然后返回信息到前端进行展示。此界面提供删除和下架按钮,点击删除按钮会发送删除请求,后端的ItemController类接受请求,执行接口对应对应方法deleteItem方法,该方法会调用itemsService类里的deleteItem接口,通过商品id删除该商品。点击下架后会发送请求,后端的ItemController类接受请求,执行接口对应的方法itemShelves方法,更新该商品的状态为下架状态,并生成原因。下架的商品可在页面的右上角的下架宝贝里查看,包括主动下架的和审核失败被管理员下架的。点击下架宝贝按钮之后,进入下架页面,进入界面时会自动发送请求,后端的ItemController类接受请求,到数据库里查询状态为主动下架的和审核失败的商品信息,然后返回数据库到前端进行显示。页面会显示每个下架商品被下架的原因,还提供了重新发布、删除和编辑按钮。重新发布的商品其状态会设置为待审核状态,点击编辑按钮,进入编辑页面,可对商品的所有信息编辑,包括价格、运费、图片和分类等。查看我的购买功能用户登录后进入个人中心界面可以看到我购买的数量,点击后查看我购买的商品,进入界面时自动发出请求,后端的UserController类接受请求,执行接口对应的方法userBuy方法,该方法会调用orderService类中的getUserBuy接口,根据用户Id获取已下订单的商品,返回数据到前端显示。页面会显示出订单的状态,还提供联系卖家和评价按钮,点击联系卖家按钮即可与卖家交流沟通,点击评价按钮进入评价页面,可对订单进行评价。查看我的卖出功能用户登录后进入个人中心界面可以看到我卖出的数量,点击后查看我卖出的商品,进入界面时会自动发送请求,后端的UserController类接受请求,执行接口对应的方法userSell方法,该方法会调用orderService类中的getUserSell接口,根据用户Id获取其他用户下了该用户拥有的商品订单,返回数据到前端显示。页面会显示出订单的状态,还提供联系买家和评价按钮,点击联系买家按钮即可与买家交流沟通,点击评价按钮进入评价页面,可对订单进行评价。管理模块设计与实现商品和动态信息管理功能管理员在进入商品管理页面时会进行权限的判断,如果是系统管理员,则将显示全部的商品和全部的功能按钮,而审核管理员只能查看待审核的商品,且无法修改、增加和删除商品。如图5.14,所示为系统管理员登录时的商品管理页面。管理员在进入商品管理页面时会进行权限的判断,如果是系统管理员,则将显示全部的功能按钮,而审核管理员无法修改和增加动态,对审核不通过的动态需要删除,且要给出违规理由告诉该用户,系统管理员不需要该操作。图5.14商品管理页面消息管理功能系统管理员可进入管理界面进行通知消息的发布,对所有用户或者单一用户发出系统通知。用户管理功能只有系统管理员能进入用户管理界面,可以对用户和审核管理员的进行管理。进入用户管理界面时和搜索时将发送请求,后端的UserController类接受请求,执行接口相对应的方法getAllUser方法,该方法将调用UserService类的getAllUser接口,getAllUser接口调用UserMapper类的selectAllUser接口和相对应的XML文件,获取指定条件的用户信息和管理员信息,返回所有获取的信息到前端进行展示,前端还提供查看、删除和修改按钮用于管理员查看该用户的详细信息、删除该用户和修改该用户的信息。商品分类管理功能系统管理员可进入管理界面进行商品分类的管理的管理。商品分为两大类,一是按作品名称分类,二是按角色名分类。系统管理员可在两大类别里分别设置具体要显示哪些作品名称和角色名,也可进行修改,新增和删除以及上传分类需要显示的图片。本章小结本章主要详细分析了系统重要模块的主要功能,并结合页面、类图和代码来剖析主要功能,让本研究课题所要实现的系统的设计思路更加直观,更加清晰。第5章系统测试系统测试测试目的为确保系统功能的准确性以及提高用户在使用本系统时的体验[15],在系统开发完成后,对系统功能进行黑盒测试。由于本系统功能较多,限于篇幅,仅对用户经常使用的主要功能设计测试用例,检查是否能够正常运行并达到预期效果。系统主要功能测试用例表STYLEREF1\s6.SEQ表\*ARABIC\s11发布商品测试用例表用例名称发布商品功能用例描述测试发布商品的信息,验证是否能正确发布前置条件用户已登入,进入发布商品界面测试用例ID测试步骤预期结果实际结果P/FFb001输入商品信息后直接点击发布无法发布,并有提示信息提示未上传图片,发布未成功。PFb002上传图片后点击发布无法发布,并有提示信息提示未描述商品,发布未成功。PFb003输入商品信息,上传图片后,点击发布无法发布,并有提示信息提示未选择发货地址,发布未成功。PFb004在价格或运费的输入框中输入非负数或非数字无法输入无法输入PFb005输入商品信息,上传图片后,选择发货地后点击发布无法发布,并有提示信息提示未输入类别,发布未成功。P表STYLEREF1\s6.2搜索商品测试用例表用例名称搜索商品功能用例描述选择条件进行搜索,验证是否能按条件搜索前置条件进入多条件搜索页面测试用例ID测试步骤预期结果实际结果P/FS001输入关键字,点击搜索显示包含关键字商品的搜索结果显示包含关键字商品的搜索结果PS002选择按价格降序对搜索结果进行价格降序的排序对搜索结果进行价格降序的排序PS003选择地区将搜索结果按地区筛选将搜索结果按地区筛选。PS004清空关键字后点击搜索搜索出全部商品搜索出全部商品P表STYLEREF1\s6.3购买商品测试用例表用例名称购买商品功能用例描述对下订单等进行测试,验证特殊情况下购买商品是否正确前置条件需要两个用户,一个为购买者,但余额为0,另一个是售卖者,测试用例ID测试步骤预期结果实际结果P/FB001购买者在商品详情页面点击我想要按钮进入聊天页面,在页面上方显示当前准备购买的商品进入聊天页面,在页面上方显示当前准备购买的商品PB002购买者在聊天页面点击下单跳转至订单页面,显示正确的信息跳转至订单页面,显示正确的信息PB003购买者在订单页面点击付款显示购买失败的页面显示购买失败的页面PB004售卖者将商品下架,购买者从个人中心页面点击我购买能看到刚刚支付失败的订单显示商品下架的状态能看到刚刚支付失败的订单显示未支付的状态FB005购买者点击进入刚刚支付失败的订单订单页面已不显示取消订单和立即付款的按钮,无法对该订单进行操作订单页面仍然显示取消订单和立即付款的按钮,能继续交易F以上三个测试用例中,搜索功能的测试用例和发布商品功能的测试用例是用户经常使用的,发生问题后会让用户体验下降。而购买商品功能的测试用例是对商品操作后,可能会引起订单状态的异常,导致系统出错。本章小结本章说明了系统测试的目的,对系统主要功能进行测试。测试过程中发现了系统的问题,对代码进行走读,通过设置断点的方式,对代码效果进行展示,随后发现了问题的所在。修改过后,可以通过测试。第6章总结总结与展望总结近年来,随着手办的不断发展,越来越多的年轻人加入到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论