网上购物系统的设计与实现_第1页
网上购物系统的设计与实现_第2页
网上购物系统的设计与实现_第3页
网上购物系统的设计与实现_第4页
网上购物系统的设计与实现_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

TOC\o"1-3"\h\u10512摘要 I30325Abstract II245第1章绪论 127141.1研究背景 1119511.2研究目的 125831.3可行性分析 1166001.4技术介绍 38663第2章需求分析 437192.1功能需求 4315202.2性能需求 414407第3章总体设计 6264133.1系统整体设计 666223.2模块功能描述 7113473.3数据库设计 731561第4章详细设计与功能实现 11106454.1用户模块 116634.1.1用户注册 11275414.1.2用户登录 12136964.1.3用户个人信息 14261734.2商品管理模块 1643444.2.1商品详情 16247374.2.2商品上传 17117854.2.3商品类型 18196754.3订单处理模块 19262894.3.1购物车功能 19215004.3.2订单功能 20170604.4管理员功能 23241304.4.1商品审核 23294664.4.2投诉处理 24251324.4.3用户管理 257701第5章系统测试 27228345.1测试过程 27319335.1.1用户模块测试 27284535.1.2商品管理模块测试 28117225.1.3订单处理模块测试 28269975.1.4管理员模块测试 28256205.2测试结果分析 2928164 296845第六章总结与展望 30197516.1总结 309166.2展望 3020735致谢 31PAGEPAGEII网上购物系统的设计与实现摘要:伴随着5G时代的到来,我们可以清楚地感知到互联网已经彻底改变了人类的日常生活,尤其是购物方式。由于其便利性,相较于传统商店购物,全世界的绝大部分地方的人都在进行网上购物也就是我们俗称的网购。基于此,我设计并实现了一个网上购物系统,本系统前端使用Vue.js,后台采用了SpringBoot和Mybatis作为框架,并利用MySQL数据库,使用Navicat作为可视化工具,从前台和后台两个方面设计该系统,分别从用户,订单处理,管理员,商品管理四个模块出发,实现了像用户登录注册,浏览商品,购买商品,查看订单等一般电子商务所具备的基本功能,尽可能地使得用户通过该系统可以轻松地进行网上购物,最后通过不断测试以及运行程序完善了网上在线购物系统。关键词:在线购物;商城;电子商务

DesignandImplementationofOnlineShoppingSystemAbstract:Alongwiththearrivalofthe5Gera,wecanclearlyperceivethattheInternethascompletelychangedthedailylifeofhumanbeings,especiallythewayofshopping.Becauseofitsconvenience,comparedwiththetraditionalshopshopping,mostofthepeopleintheworldareshoppingonline,whichiscommonlyknownasonlineshopping.Onthisbasis,Idesignedandimplementedanonlineshoppingsystem,thefrontendofthesystemusingVue.js,backgroundusingSpringBootandMybatisastheframework,andusingtheMySQLdatabase,usingNavicatasavisualtool,fromthefrontandbackgroundtwoaspectsofthedesign,Thesystem,fromtheuser,orderprocessing,administrator,commoditymanagementfourmodules,toachievesuchasuserloginregistration,browsegoods,purchasegoods,viewordersandothergenerale-commercebasicfunctions,asfaraspossiblesothatuserscaneasilythroughthesystemonlineshopping,andfinallythroughcontinuoustestingandrunningprocedurestoimprovetheonlineshoppingsystem.Keywords:Onlineshopping;mall;e-commercePAGEPAGEII第1章绪论1.1研究背景网络购物是借助网络实现商品或服务从商家/卖家转移到个人用户(消费者)的过程,在整个过程中的资金流,物流和信息流,其中任何一个环节有网络的参与,都称之为网络购物。[1,2]近几十年来,随着科学技术的迅猛发展,人们的生活方式发生了巨大的改变,我们正全面踏入信息时代,尤其是近年来,改变了我们对于购物的理念,相比传统的线下购物,越来越多的人更偏向于选择网上购物。如今网上购物也已经成为了人们日常生活不可或缺的一部分,而对于企业来说,网络购物系统也成为了许多传统商业企业改变自己经营模式的一个平台,网上购物系统迅速、高效以及低成本的优点为他们大幅度地提高了工作效率和经济效益。[3]1.2研究目的本系统从经营者和消费者的角度出发,设计出让买家和卖家可以从中共同获利的双赢系统,实现产品的利益最大化。1.3可行性分析首先本系统采用maven架构来搭建项目,前端页面采用当下最流行的vue.js技术开发和管理用户界面,后台采用springboot以及mybatis技术进行开发,同时采用mysql数据库,其小巧高效的特点正好满足此系统的性能需求,因此十分具备技术可行性。其次,本系统为网上购物系统,因此主要面对的是喜欢网购的人群,用户不需要懂得高深的计算机知识,只需要了解一些基本的网络操作就可以进行行之有效的网上购物,而且对于维护此系统的基本信息管理员也可以随时随地在任意一台能够上网的机器上进行日常操作,系统简单易用的特点充分体现了本系统的操作可行性。最后,在对比经济可行性中本系统则更适用。在我们线下的购物环节中,卖家在实际的销售过程中,还需要花费大量的成本用于雇佣导购,门面装修等,并且在产品宣传上只能通过上门咨询或是电话沟通等方式,这不管是在时间还是空间上都大大影响了产品的销售,并且在没意识的情况下提高了产品的销售成本,更不用提大多数买家面临着很多如退换货麻烦的问题,而网上购物系统完全可以改变这种现状。通过用少量的时间和金钱能够快速建立买家与卖家之间的信息交换,这使得他们之间的经济活动变得更加灵活主动,这也正是近年来网购热潮的原因,同时也充分体现了产品利益最大化的原则[4]。不仅从商品销售商的角度,网上购物可以带来巨大的利益,而且消费者也能从中获利,不管是从消费者还是经营者的角度,网上购物系统既很好地解决了传统线下购物的一些缺点,又满足了消费者随时随地自由选购自己心仪的商品,还为经营者省下了很多不必要的线下开支。并且通过大量数据调查,如图1.1所示,2017年到2019年之间,每年的网购市场交易数额都在大幅度正比例增加,而如图1.2所示,专家们基于现有数据进行合理预测,给出了2020年到2025年中国网购市场交易数额。(数据来源:中研普华)。从这些惊人的数据中,我们可以很容易得出结论,在未来很长一段时间,网上购物系统会给中国乃至全世界的人们带来很大的影响,网购市场交易的规模也会越来越大,网上购物也仍然存在巨大的发展空间,因此不断开发并且完善一个安全可靠实用性强的网上购物系统是非常有必要的。图1.12017-2019网购市场交易规模(亿元)图1.22020-2025年中国网购市场规模预测(亿元)1.4技术介绍MyBatisMyBatis是一个非常优秀和灵活的数据持久化框架,适用于需求多变的互联网项目,也是当前主流的ORM框架。SpringBootspringboot是spring生态圈的一个轻量级框架,换句话说springboot就是spring,是spring的一个衍生版本。MySqlMySQL是一个关系型数据库管理系统。原本是一个开放源码的关系数据库管理系统,在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。[5,6]随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用。Vue.jsvue.js是构建数据驱动的web应用开发框架,是一套用于构建用户界面的轻量级的渐进式框架。[7,8]第2章需求分析2.1功能需求随着科技的发展以及5G时代的到来。智能手机几乎已经全面覆盖了人们的日常生活。信息时代我们已经完全可以足不出户却不但可遍知天下事而且可以解决我们的吃穿住行,而像吃穿这种需求更是层出不穷,基于这些原因我国民众就更需要一个安全可靠操作简单使用便利的简洁大方的网上购物系统,充分利用互联网来方便自己方便他人。2.2性能需求本系统的主要为了实现普通用户在网上进行商品选购和管理员对商城进行的管理。商城包括前台页面系统和后台管理系统两部分。[9-11]系统功能模块图如图2.1所示。未注册或登录的用户,可以在网站首页浏览商品,查看商品信息,但却不能进行购买等操作,只有登录状态的用户,不仅可以浏览商品信息,进行购买行为,而且购买信息,如结算信息,订单信息等,在个人中心可以查看;管理员,作为整个系统的管理者,对商品信息,购买信息,用户信息都有操作权限。前台针对普通商城用户,实现进入商城购买商品以及修改个人信息等功能,而后台管理系统面向管理员,可以更加方便地对商城里的一些信息进行基本的维护。图2.1系统功能模块图1.前台页面系统用户的权限:普通用户可以注册、登录、浏览主页商品、自定义搜索所需商品、浏览商品详细信息,添加、删除购物车、下单购买结算并完成支付顾客可以对自己的注册基本信息进行修改,主要包括用户名、性别以及对收货地址进行修改、充值余额,还有确认收货以及进行收货评价等基本信息,还可以上架自己的商品进行出售来获得收入并添加商品的有关信息等待管理员审核,也就是说在本系统中普通用户不但可以查看自己购买的商品订单,还可以看到购买自己商品的订单信息,包括购买自己上传商品的用户昵称商品图片名字以及购买时间购买数量总价。管理员可以审核商品决定是否选择同意商品上架,以及处理用户对商品的投诉,决定是否通过投诉,并且进行用户管理,看到用户的基本信息包括用户名手机号最后登录时间注册时间余额以及状态是否正常还有就是根据可视的被投诉次数和评分等来对该用户进行操作,决定是否禁用该用户,禁用后无法上架商品,但还可以进行购买功能或者也可以将已经被禁用的用户重新启用等。2.后台管理系统用户信息管理:可以查看在商城系统中所有注册过的用户的所有信息包括最后登录时间注册时间被投诉的次数以及评分余额等,然后进行一些管理包括投诉处理等。商品类别管理:这里面可以列出所有商品类别,可以添加新的商品类别和修改已有的类别。[12,13]商品基本信息管理:列出所有的商品,管理员也可以搜索需要查看的商品,然后对商品信息进行修改,删除,以及添加上传一些新的商品也在这个模块里面。[14,15]另外还可以设置商品优惠,审核商品。订单管理:用户完成下单以后在数据库里会生成订单信息表,主要包括购买的商品的详细信息和用户收货信息。第3章总体设计3.1系统整体设计网上在线购物商城,有两个不同种类的登录客户,一个是系统管理员另一个则是用户.[16,17]所以根据对系统功能的综合分析,可以粗略地将系统分成用户模块、管理员模块、商品管理模块以及订单处理模块组成。页面请求过程图如图3.1所示,服务器的研发结构图如图3.2所示。在用户模块中,用户可以通过注册获得自己的用户名和密码然后输入用户名和密码登录,再进行相应的操作,下次再登录时系统通过对用户信息进行审查核实后,呈现给用户相应的视图,还包括修改像用户名和性别等功能。[18,19]登录处理流程图如图3.3所示,登录客户购买商品流程图如图3.4所示。管理员模块则主要是负责审核商品处理投诉以及用户管理功能;商品管理模块包括了商品详情也就是商品的基本信息以及商品库存,商品增加、删除等相关信息的、订单处理模块主要是包括用户将商品添加至购物车中并进行购买结算支付、用户确认收货以及用户对商品的评价投诉等。图3.1页面请求过程图图3.2服务器的研发结构图图3.3登录处理流程图图3.4登录客户购买商品流程图3.2模块功能描述一、用户管理模块用户注册:提供注册功能,用于收集用户和送货地址等信息。用户登陆:提供用户身份确认的功能,保证合法用户的正当合法权益。[20]个人信息:提供用户修改如用户名性别余额兴趣爱好等个人信息的功能,来满足客户的需求。收货地址:提供用户增加和删除收货地址的具体信息。商品管理模块商品详情:对商品的基本信息进行了阐述,方便客户对商品有更进一步的了解,存储至商品信息表中。商品分类:对商品按类别进行了分类,并存储至商品类型表中,便于用户定位浏览。商品上传:添加商品编辑其基本信息,并存储至商品信息表中。订单处理模块购物车:在用户购物过程中存放用户的购物清单。订单:待收货订单、待评价订单、已评价订单,分别对应了用户对订单的确认收货以及评价投诉操作。管理员模块商品审核:审核商品,选择添加或删除用户想要上架的商品。投诉处理:处理用户对于商品的投诉信息,并存储至投诉表中。管理用户:根据用户的投诉次数等对用户进行禁用或启用操作。3.3数据库设计在完成需求分析和系统功能设计之后,接着就要开始考虑数据库的相关设计了。我选择了Mysql作为系统的数据库,除了物理表,数据库中存在各种视图,以方便各类联表查询。E-R关系图如图3.4所示:图3.4E-R关系图根据E-R关系模型,可以确定该数据库有如下关系表:1.管理员权限图表Permission如表3.1所示,存放系统管理员拥有的相关权限信息。表3.1管理员权限表名称类型长度小数点是否允许空值主键描述idbigint200否是自增idnamevarchar500是否权限名字urlvarchar500是否权限地址levelint10是否gradeint10是否菜单级别2.商品信息表commodity如表3.2所示,存放商品基本信息。表3.2商品信息表名称类型长度小数点是否允许空值主键描述idbigint200否是自增idnamevarchar500是否商品名称typeint100是否商品类型pricebigint200是否商品价格numberint100是否商品库存imagevarchar500是否商品图片user_idbigint200是否上架商品人的iddetailedvarchar500是否商品的详细图片introducetext00是否商品的介绍stateint10是否状态3.用户信息表users如表3.3所示,存放用户的基本信息。表3.3用户信息表名称类型长度小数点是否允许空值主键描述idbigint200否是自增idnickvarchar500是否登录名passwordvarchar500是否登录密码telvarchar500是否电话号码comCountint100是否投诉次数statusint110是否状态lastTimedatetime00是否最后登录时间createTimedatetime00是否创建时间moneybigint200是否余额tokenvarchar500是否tokenscorefloat31是否评分4.订单表order如表3.4所示,存放每个用户订单的相关信息。表3.4订单表名称类型长度小数点是否允许空值主键描述idbigint200否是自增idcommodity_idbigint200是否商品iduser_idbigint200是否用户idstateint10是否状态numberint100是否添加商品的数量pricebigint200是否需要支付的金额createTimedatetime00是否购买时间address_idbigint200是否收货地址id5.商品类型表type如表3.5所示,存放商品类型的信息。表3.5商品类型表名称类型长度小数点是否允许空值主键描述idint100否是自增idtypevarchar500是否商品类型6.商品投诉表complaint如表3.6所示,存放商品被投诉的相关信息。表3.6商品投诉表名称类型长度小数点是否允许空值主键描述idbigint200否是自增iduser_idbigint200是否被投诉人idcommodity_idbigint200是否被投诉商品texttext00是否投诉原因stateint10是否状态7.收货地址表address如表3.7所示,存放用户的收货地址信息。表3.7收货地址表名称类型长度小数点是否允许空值主键描述idbigint200否是自增idnamevarchar500是否收货人姓名adresstext00是否收货地址telvarchar500是否电话user_idbigint200是否用户idstateint10是否状态

第4章详细设计与功能实现4.1用户模块4.1.1用户注册用户没有注册时虽然也可以浏览页面,但若想进行购物车等功能则必须用户注册,用户注册时,需要输入正确的手机号码格式,如果输入的手机号码非正确格式,则会弹出手机号码格式不正确的信息提示框,对于用户的昵称则要求不能为空,否则将弹出相应的信息提示框,且不能与别人的昵称重复,如果查询到注册的该昵称在用户信息表中已存在,则视为重复,将弹出用户重复的信息提示框,并且将对前后两次密码是否一致进行验证,如果前后两次密码不相同,则会弹出前后两次密码不一样的信息提示框,反之如果前后两次密码相同,则验证通过。注册界面见图4.1重要接口代码如下:

publicStringregister(@RequestBodyStringrequestDate){

if(!StringUtils.isBlank("tel")&&!StringUtils.isBlank("nick")&&!StringUtils.isBlank("password")){

if(this.userService.getUserByTel(tel)!=null){

returnResultObject.ERROR(ErrorCode.telError.code(),ErrorCode.telError.value()).toJsonString();

}elseif(this.userService.getUserByNick(nick)!=null){

returnResultObject.ERROR(ErrorCode.nickError.code(),ErrorCode.nickError.value()).toJsonString();

}else{

List<Permission>permissions=this.permissionService.getPermissionServiceByLevel(1);

this.userService.saveUser(user);

Iteratorvar9=permissions.iterator();

while(var9.hasNext()){

Permissionpermission=(Permission)var9.next();

PermissionUserpermissionUser=newPermissionUser();

permissionUser.setPermissionId(permission.getId());

permissionUser.setUserId(user.getId());

this.perMissionUserService.savePermissionUser(permissionUser);

}

JSONObjectresultObject=newJSONObject();

resultObject.put("user",user);

System.out.println(user.toString());

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}else{

returnResultObject.ERROR(ErrorCode.paramError.code(),ErrorCode.paramError.value()).toJsonString();

}

}图4.1用户注册界面4.1.2用户登录用户登录时,在前端提交账户信息,根据传入的账号从数据库中查询用户,如果未能找到用户,则会弹出未注册的信息提示框。如果查询到用户,但用户的密码和密码盐加密结果与数据库中的加密密码不同,也会弹出密码错误的提示框。当用户账号和密码校验通过后,登录服务向认证服务器发起token申请请求,为用户获取令牌,最后缓存用户信息,将用户信息和令牌信息返回浏览器。登录处理流程见图4.2,登录界面见图4.3,。重要接口代码如下://用户登录

publicStringlogin(@RequestBodyStringrequestDate){

if(StringUtils.isBlank(tel)){

returnResultObject.ERROR(ErrorCode.paramError.code(),ErrorCode.paramError.value()).toJsonString();

}else{

Stringpassword=requestObject.getString("password");

if(StringUtils.isBlank(password)){

returnResultObject.ERROR(ErrorCode.paramError.code(),ErrorCode.paramError.value()).toJsonString();

}else{

Useruser=this.userService.getUserByTel(tel);

if(user==null){

returnResultObject.ERROR(ErrorCode.notRegister.code(),ErrorCode.notRegister.value()).toJsonString();

}elseif(!StringUtils.equals(MD5Util.ToMd5(password),user.getPassword())){

returnResultObject.ERROR(ErrorCode.passwordError.code(),ErrorCode.passwordError.value()).toJsonString();

}else{

Tokentoken=Token.init(String.valueOf(user.getId()));

user.setToken(token.toTokenString());

user.setLastTime(newDate());

this.userService.updateUser(user);

JSONObjectresultObject=newJSONObject();

resultObject.put("user",user);

("{}登陆了系统",user.getId());

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}

}

}//用户退出登录publicStringloginOut(@RequestBodyStringrequestData){

longuserId=requestObject.getLong("userId");

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

this.userService.removeUserById(userId);

JSONObjectresultObject=newJSONObject();

if(this.userService.getUserById(userId)==null){

resultObject.put("isSuccess",true);

returnResultObject.SUCCESS(resultObject).toJsonString();

}else{

resultObject.put("isSuccess",false);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}

}图4.3用户登录界面4.1.3用户个人信息用户个人信息中包括修改该用户昵称、性别、充值余额等功能。修改昵称性别再提交信息后会弹出信息提交成功的信息提示框,点击充值选择需要充值的数额后将弹出充值成功的信息提示框。个人信息界面如图4.4.重要代码如下:

publicStringsubPersonMessage(@RequestBodyStringrequestData){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

Useruser=this.userService.getUserById(userId);

user.setNick(nick);

this.userService.updateUser(user);

JSONObjectresultObject=newJSONObject();

resultObject.put("user",user);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}图4.4个人信息界面4.1.4用户收货地址可以添加或者删除用户的收货地址,收货地址信息主要是用户的姓名,手机号码以及收货地址。进行相应操作后,均会弹出相应的信息提示框。收货地址界面如图4.5重要代码如下://添加收货地址

publicStringaddAddress(@RequestBodyStringrequestData){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}elseif(!StringUtils.isBlank(name)&&!StringUtils.isBlank(tel)&&!StringUtils.isBlank(address)){

List<Address>addresses=this.addressService.getAddressByUserId(userId);

if(addresses.size()>=4){

returnResultObject.ERROR(ErrorCode.AddressError.code(),ErrorCode.AddressError.value()).toJsonString();

}else{

Addressaddress1=newAddress();

address1.setAdress(address);

address1.setName(name);

address1.setTel(tel);

address1.setState(1);

address1.setUserId(userId);

this.addressService.saveAddress(address1);

JSONObjectresultObject=newJSONObject();

resultObject.put("isSuccess",true);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}else{

returnResultObject.ERROR(ErrorCode.paramError.code(),ErrorCode.paramError.value()).toJsonString();

}

}//删除收货地址

publicStringdeleteAddress(@RequestBodyStringrequestData){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

Addressaddress=this.addressService.getAddressById(addressId);

if(address!=null){

address.setState(0);

this.addressService.update(address);

}

List<Address>addresses=this.addressService.getAddressByUserId(userId);

List<Address>addressList=newArrayList();

Iteratorvar11=addresses.iterator();

while(var11.hasNext()){

Addressaddress1=(Address)var11.next();

if(address1.getState()!=0){

addressList.add(address1);

}

}

JSONObjectresultObject=newJSONObject();

resultObject.put("isDelete",true);

resultObject.put("addresses",addressList);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}图4.5.收货地址界面4.2商品管理模块用户可以进行上传商品也就是添加商品进行售卖,也可以通过查看商品详情来进一步了解商品。管理员可以在后台进行商品添加,商品的修改,商品删除等。商品删除后会进入商品回收站。可以查看上下架商品,可以对商品类别进行添加以及删除。商品管理功能主要是指管理员直接操作商品数据库以及操作。4.2.1商品详情商城首页展示了商城中所有需要售卖的商品,在个人中心里可以进行商品添加上传,首先需要输入商品的基本信息,加入商品描述详情包括简介图片等,然后再通过程序导入数据库的商品列表中,同时可以对商品进行编辑,每次访问商品列表,程序会读取数据库。商品详情界面如图4.6图4.6商品详情界面4.2.2商品上传商品上传功能主要是针对想要售卖商品的用户,在此购物系统中,用户不但可以购买别人的商品,也可以售卖自己的商品,贴出商品的描述图片详情等,然后等待管理员审核该商品信息。商品上传界面如图4.7重要代码如下://添加商品上传

publicStringaddGood(@RequestBodyStringrequestData){

if(!StringUtils.isBlank(title)&&!StringUtils.isBlank(introduce)&&!StringUtils.isBlank(image)&&!StringUtils.isBlank(detailed)){

Typetype1=this.typeService.getTypeById(type);

if(type1!=null&&number>0){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

Commoditycommodity=newCommodity();

commodity.setNumber(number);

commodity.setName(title);

commodity.setPrice((newDouble(price)).longValue());

commodity.setImage(image);

commodity.setState(0);

commodity.setDetailed(detailed);

commodity.setType((int)type);

commodity.setIntroduce(introduce);

commodity.setUserId(userId);

(commodity.toString());

modityService.saveCommodity(commodity);

JSONObjectresultObject=newJSONObject();

resultObject.put("isSuccess",true);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}else{

returnResultObject.ERROR(ErrorCode.paramError.code(),ErrorCode.paramError.value()).toJsonString();

}

}else{

returnResultObject.ERROR(ErrorCode.paramError.code(),ErrorCode.paramError.value()).toJsonString();

}

}图4.7上传商品界面4.2.3商品类型管理员在后台可以添加商品的分类,管理员和用户都可以在添加商品的时候选择对应的商品的分类。管理员还可以编辑分类,对分类重新描述,用户也可以通过该分类定位查询到所寻求的那一类型的商品。商品类型界面界面如图4.8重要代码如下://获取商品类型

publicStringgetGoodByType(@RequestBodyStringrequestData){

while(var6.hasNext()){

Commoditycommodity=(Commodity)var6.next();

if(commodity.getNumber()>0&&commodity.getState()!=0&&commodity.getState()!=2){

newCommodities.add(commodity);

}}JSONObjectresultObject=newJSONObject();

resultObject.put("commodities",newCommodities);

Typetype1=this.typeService.getTypeById((long)type);

if(type1==null){

resultObject.put("type","全部商品");

}else{

resultObject.put("type","热门"+type1.getType());

}

returnResultObject.SUCCESS(resultObject).toJsonString();

}图4.8商品类型界面4.3订单处理模块4.3.1购物车功能购物车是购物商城中非常重要的一部分,购物车功能主要涉及到一个数据库表,即订单表。用户通过将商品添加至购物车后并成功选择收货地址付款完,从订单表中能清晰地知道所购买的商品id,用户id,购买的数量支付的金额,以及购买的时间收货地址id等等。购物车界面如图4.9重要代码如下所示://加入购物车

publicStringjoinShoppingCart(@RequestBodyStringrequestDate){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

longcommodityId=requestObject.getLong("commodityId");

intnumber=requestObject.getInteger("number");

Commoditycommodity=modityService.getCommodityById(commodityId);

Useruser=this.userService.getUserById(userId);

if(user==null){

returnResultObject.ERROR(ErrorCode.notLogin.code(),ErrorCode.notLogin.value()).toJsonString();

}elseif(number>commodity.getNumber()){

returnResultObject.ERROR(ErrorCode.numberError.code(),ErrorCode.numberError.value()).toJsonString();

}else{

Orderorder=null;

List<Order>orders=this.orderService.getOrderByUserIdAndCommodityId(userId,commodityId);

Iteratorvar13=orders.iterator();

Orderorder1;

do{

if(!var13.hasNext()){

order=newOrder();

order.setCommodityId(commodityId);

order.setUserId(userId);

order.setNumber(number);

order.setPrice(commodity.getPrice()*(long)number);

order.setState(0);

this.orderService.saveOrder(order);

JSONObjectresultObject=newJSONObject();

resultObject.put("order",order);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

order1=(Order)var13.next();

}while(order1.getState()!=0);

order1.setNumber(order1.getNumber()+number);

this.orderService.updateOrder(order1);

JSONObjectresultObject=newJSONObject();

resultObject.put("order",order1);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}

}图4.9购物车界面4.3.2订单功能用户在成功购买商品之后所有生成的订单将都会记录在我的订单中,而在这些订单中包含了待收货的订单,待评价的订单和已评价的订单。用户只有确认收货,这个交易才算真正完成。而确认收货后,用户可以对该商品进行简易操作的评分,而卖家的商品详情里的评分就是由众多用户进行评分取平均值得来的,可供买家在购买商品时作为一个参考,或者对该商品进行投诉,并附上投诉理由,等待管理员处理。在已完成订单这里用户可以看到自己所有的订单信息,包括订单内的商品信息,订单编号,下单时间等,可以作为用户的一个查询。而购买我的商品的订单与已完成订单恰好相反,在这里可以看到所有购买我上传过的商品的用户的信息,包括下单人的昵称、下单的商品信息、下单数量以及总金额。待收货订单的界面如图4.10所示,待评价订单界面如图4.11所示,已完成订单如图4.12所示,购买我的商品的订单界面如图4.13所示。重要代码如下所示://改变商品状态

publicStringchangeGoodState(@RequestBodyStringrequestData){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

Orderorder1=this.orderService.getOrderById(orderId);

if(order1!=null){

order1.setState(state+1);

this.orderService.updateOrder(order1);

}

List<Order>orders=this.orderService.getOrderByUserIdAndState(userId,state);

List<OrderResult>orderResults=newArrayList();

Iteratorvar12=orders.iterator();

while(var12.hasNext()){

Orderorder=(Order)var12.next();

Commoditycommodity=modityService.getCommodityById(order.getCommodityId());

Addressaddress=this.addressService.getAddressById(order.getAddressId());

orderResults.add(OrderResult.ValueOf(order.getId(),commodity.getImage(),commodity.getName(),commodity.getPrice(),order.getPrice(),order.getNumber(),DateUtil.date2String(order.getCreateTime(),"yyyy-MM-ddHH:mm:ss"),address,commodity.getNumber()));

}

JSONObjectresultObject=newJSONObject();

resultObject.put("orderResults",orderResults);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}//获取购买我的商品的订单

publicStringgetByMy(@RequestBodyStringrequestData){

JSONObjectrequestObject=JSONObject.parseObject(requestData);

Stringtoken=requestObject.getString("token");

longuserId=requestObject.getLong("userId");

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

JSONObjectresultObject=newJSONObject();

JSONArrayjsonArray=newJSONArray();

List<Commodity>commodityList=modityService.getCommodityByUserId(userId);

List<Order>orderList=newArrayList();

Iteratorvar10=commodityList.iterator();

while(var10.hasNext()){

Commoditycommodity=(Commodity)var10.next();

List<Order>orders=this.orderService.getOrderByCommodityId(commodity);

orderList.addAll(orders);

}

var10=orderList.iterator();

while(var10.hasNext()){

Orderorder=(Order)var10.next();

if(order.getState()>=1){

JSONObjectjsonObject=newJSONObject();

jsonObject.put("byTime",order.getCreateTime());

jsonObject.put("byNum",order.getNumber());

jsonObject.put("allMoney",order.getPrice());

Commoditycommodity=modityService.getCommodityById(order.getCommodityId());

jsonObject.put("commodityName",commodity.getName());

jsonObject.put("commodityImg",commodity.getImage());

Useruser=this.userService.getUserByIdMast(order.getUserId());

jsonObject.put("nickName",user.getNick());

jsonArray.add(jsonObject);

}

}

resultObject.put("byMyList",jsonArray);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}图4.10待收货订单图4.11待评价订单界面图4.12已评价订单界面图4.13购买我的商品的界面4.4管理员功能4.4.1商品审核商品审核就是在用户上架商品之后,管理员通过查看其商品详情之后判断该商品的可信度,然后选择同意让该商品上架或下架,如果选择上架,则该商品进入了商城进行正常售卖。商品审核的界面如图4.14重要代码如下所示://商品审核

publicStringinspectCommodity(@RequestBodyStringrequestData){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

Commoditycommodity=modityService.getCommodityById(commodityId);

commodity.setState(state);

modityService.updateCommodity(commodity);

List<Commodity>commodities=modityService.getCommodityByState(0);

JSONObjectresultObject=newJSONObject();

resultObject.put("commodities",commodities);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}图4.14待审核商品界面4.4.2投诉处理投诉处理主要是针对用户对于购买后收到的商品进行投诉的原因,选择通过或拒绝该投诉。如果通过该投诉,则该用户的投诉次数加一。投诉处理的界面如图4.15重要代码如下所示://投诉处理

publicStringdoComplaint(@RequestBodyStringrequestData){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

Complaintcomplaint1=plaintService.getComplanitById(complaintId);

complaint1.setState(state);

plaintService.update(complaint1);

if(state==2){

Useruser=this.userService.getUserById(complaint1.getUserId());

user.setComCount(user.getComCount()+1);

this.userService.updateUser(user);

}

List<Complaint>complaintList=plaintService.getAll();

List<Complaint>complaintList1=newArrayList();

Iteratorvar12=complaintList.iterator();

while(var12.hasNext()){

Complaintcomplaint=(Complaint)var12.next();

if(complaint.getState()==1){

complaintList1.add(complaint);

}

}

List<Map<String,Object>>list=newArrayList();

Iteratorvar20=complaintList1.iterator();

while(var20.hasNext()){

Complaintcomplaint=(Complaint)var20.next();

Map<String,Object>map=newHashMap();

Commoditycommodity=modityService.getCommodityById(complaint.getCommodityId());

map.put("commodityName",commodity.getName());

Useruser=this.userService.getUserByIdMast(complaint.getUserId());

map.put("userName",user.getNick());

map.put("text",complaint.getText());

map.put("id",complaint.getId());

list.add(map);

}

JSONObjectresultObject=newJSONObject();

resultObject.put("complaintList",list);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}图4.15投诉处理的界面4.4.3用户管理在用户管理界面可以看到用户昵称、手机号码、状态、最后登录时间、注册时间、余额、评分,然后根据评分评价投诉等对用户进行操作,选择禁用或者启用该用户,被禁用的用户就不能再上架商品,也就说,被剥夺了卖家身份,不能再卖东西,但仍可以重新启用该用户,恢复其卖家权利。用户管理的界面如图4.16重要代码如下所示://改变用户状态

publicStringchangeUserState(@RequestBodyStringrequestData){

if(!this.checkToken(token,userId)){

returnResultObject.ERROR(ErrorCode.tokenError.code(),ErrorCode.tokenError.value()).toJsonString();

}else{

Useruser=this.userService.getUserByIdMast(otherId);

user.setStatus(state);

this.userService.updateUser(user);

List<User>userList=this.userService.getAllUser();

JSONObjectresultObject=newJSONObject();

resultObject.put("userList",userList);

returnResultObject.SUCCESS(resultObject).toJsonString();

}

}图4.16用户管理界面

系统测试5.1测试过程系统主要功能模块操作测试描述表如表5.1所示:表5.1系统主要功能模块操作测试描述表序号测试模块名称描述1用户管理模块正确输入手机号码和密码,能正确登录根据登录用户的权限给出不同的操作界面手机号码或密码输入不完整或者不正确,系统正确弹出提示对话框2商品管理模块添加、修改、删除按钮正常工作添加商品信

温馨提示

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

评论

0/150

提交评论