Web框架下基于用户偏好的电子商务信息系统研究
2017-01-12吴清燕
吴清燕
摘 要: 通过对电子商务平台的全面需求分析,确定了电子商务系统的基本功能。详细全面地对系统的功能模块进行了设计,利用目前相对前沿的技术框架,实现了基于用户偏好的电子商务系统。最后对系统进行了功能测试与性能测试。功能测试上使用黑盒测试,性能测试进行系统压力测试。测试结果表明,该系统在功能与性能上均达到了设计要求,在理论研究和实际应用上具有较大的参考价值。
关键词: 电子商务信息系统; Web 框架; 分布式缓存; 黑盒测试
中图分类号: TN911?34; TM417 文献标识码: A 文章编号: 1004?373X(2016)23?0144?04
Research on e?commerce information system based on user preference in Web framework
WU Qingyan
(Hainan Tropical Ocean University, Sanya 572022, China)
Abstract: The comprehensive demands of e?commerce platform are analyzed to determine the basic function of e?commerce system. The functional modules of the system were designed comprehensively. The leading technical framework is used to realize the e?commerce system based on user preference. The functional test and performance test were performed for the system. The black?box test is used for functional test, and the system pressure test is used for performance test. The test results indicate that the system satisfies the design requirements of function and performance, and its theoretical research and application have great reference value.
Keywords: e?commerce information system; Web framework; distributed cache; black?box test
电子商务平台是一种为企业和个体户服务的平台,它的开发和建立使得企业可以在互联网上经营,脱离了传统的店铺方式。在做商品推荐时,传统的电子商务系统是以人为主体的手工操作,运营人员需要投入大量的时间、精力,推荐的商品往往不易满足每个人的需要,因此难免会出现局限性[1]。而基于用户偏好的电子商务系统是由自动推荐算法建立起来的,以处理消费者的行为数据,自动为决策者提供相应推荐商品的系统,将大量复杂的用户数据处理交给后台服务器,使不同的顾客及时地获得所需要的推荐商品,为商家带来了财富,为顾客带来了便捷[2]。
1 系统设计
1.1 总体设计
1.1.1 系统框架设计
本系统选择快速高效的PHP语言作为程序后端开发语言,它是一种平台兼容性极好、运行高效的脚本编程语言。PHP开发者在长期的开发过程中会不断接触和使用重复的代码和产品,同时也会开发各种新的模块[3]。因此传统单纯的使用PHP开发程序已不能满足开发人员的需求,这时通过PHP框架来实现对这些丰富资源的管理,构建良好的系统架构与缩短开发时间是必不可少的开发环节。本系统采用Yii框架进行快速、高效的开发。Yii框架是当前主流适用于大型网站开发的框架之一。由于其采用面向对象思想编写而成,同时又拥有非常多的封装功能,使其成为众多开发者首选的框架。从安全性来说,Yii具有对用户输入的后端验证,输出的过滤以防止SQL注入及XSS与CSRF攻击。本系统后端使用PHP语言结合Yii框架进行开发,前端使用HTML,JQuery,CSS语言。
本系统以index.php文件作为入口访问protected文件夹里的Controller控制器。首先访问的是Controller文件夹中的index(Controller).php文件中的actionIndex方法[4]。此方法无需输入特定的URI,为Yii的默认路径访问网站的首页。网站首页中具有多种多样的功能,每一个功能即对应index(Controller).php中的一个方法。系统会根据用户在主页执行的不同功能从而调用一个index(Controller).php中以action为前缀的方法[5]。
1.1.2 分布式缓存设计
本系统使用Redis作为分布式内存缓存,商品推荐功能采用Redis的有序集合数据类型进行推荐计算。为保证系统可靠性,采用Master?Slave(主从)同步。另外,本系统并用Redis的RDB持久化和AOF持久化,这种方式适合于用户进行备份。
1.1.3 系统功能结构图
根据前面的角色用例分析,系统从前台和后台的角度给出功能结构图,系统前台功能模块如图1所示,系统后台功能模块如图2所示。
1.2 系统功能模块设计
1.2.1 注册登录
对于系统前台,未登录用户与登录用户的功能有所区别。在未登录情况下,系统只提供商品浏览和商品推荐功能,用户想要完成商品的购买,必须完成消费者用户相关信息的注册,并且登录系统。对于系统后台,商家用户和管理员用户也需要登录进入系统[6]。不同的是商家具有注册功能,需要填写商家用户基本信息后交由系统管理员审核,审核通过后使用本系统,而管理员用户账号则由开发人员手工进行数据库配置,这样保证了系统的安全性。
注册时可以选择不同身份进行注册,登录系统时可以选择“记住我”选项,当用户选择此选项时,服务器会分配用户一个长期有效的COOKIE并在服务端产生一个相应的SESSION,当用户在有效期内重新打开页面时不会提示需要重新登录。同时用户的登录请求是AJAX(异步)请求,无需刷新登录页面即可提示登录成功或失败[7]。用户登录流程如图3所示。
1.2.2 商品展示
系统根据用户的搜索内容进行关键字匹配,首先将匹配到的商品筛选出来,再根据得到的商品进行同类目的查询,将同类商品按卖出数量列出。商品在列出时使用分页算法,以分页的形式列出。
商品列表显示每一种商品的名称、描述、价格、销售数量及评论数量,同时显示“购买”与“加入购物车”。当用户点击“购买”与“加入购物车”时系统会判定当前用户是否已登录,商品列表显示每一种商品的名称、描述、价格、销售数量及评论数量,同时显示“购买”与“加入购物车”。如未登录则会提示用户登录,如果用户已登录则会生成一份订单。对于系统后台,商家可以增加商品、删除商品、修改商品信息以及查询所拥有的商品。增加商品时需要填写商品信息。商品信息包括商品名称、描述、价格、商品类别。商家同时可以在后台回复用户对已售出商品的评论。
1.2.3 订单管理
当消费者用户在前台点击商品“购买”或“加入购物车”时,都会和商家签订购买合同。购物车中的商品订单由商品所属的商家生成,对于每一个不同商品,如果其所属的商家相同,则只会生成一份订单,否则会生成多份订单[8]。生成订单后,用户就可以对订单进行支付、取消订单操作,同时后台商品所属的商家则会显示生成的订单。商家用户负责在后台处理本店铺的所有订单。商家需要根据消费者用户的相应信息负责商品的配送。商家对订单具有确认订单、取消订单操作。
1.2.4 商品推荐
本系统提供了一种基于Redis系统的商品智能推荐方法,基本思想是:根据某一商品[p0]在某一时间段的所有购买者,获得这些购买者在该时间段的其他购买商品信息,按照不同的排列组合的方式,获取相关交集作为推荐商品进行推荐;在上述过程中,还利用Redis系统Sort?Set与List数据结构,按照购买时间的先后赋予权值进行时序排序,从而能够得到更有时效性的推荐商品。
1.2.5 权限管理
对系统中所有的角色进行管理,其中管理员分为一级管理员和二级管理员。一级管理员具有系统中的最高权限,具有对商家的审核、商品信息与订单信息的修改等权限,一级管理员具有系统管理的所有功能。二级管理员主要是系统测试与错误排查者,只具有对数据的读取权限,没有任何修改权限。
对于商家而言,只具有操作本店铺商品的权限,分为运营人员、售前和售后处理人员。运营人员负责修改商品的相关信息,对所管辖店铺内的商品与订单具有读写权限。售前人员主要在售前负责答疑消费者任何关于产品的问题,售后处理人员主要负责从事与客户进行售后商品问题的交涉,对订单及商品只具有读取的权限。
1.3 数据库设计
1.3.1 概念数据模型设计
在做概念数据模型设计时,系统用户分为三种角色:消费者、商家、管理员用户。每种用户都有属于自己的特征:消费者用户具有生日属性,因此在消费者生日时可以做相应的活动;商家用户具有自己的声誉属性,同一商铺可以具有运营人员、售前与售后人员,因此还具有特权属性,不同特权属于同一店铺ID下的商家用户具有的功能不同;管理员同样具有不同的权限,因此有等级属性。基于数据库设计规范,避免冗余基础上,这里将三种不同角色具有相同的属性放入user表,分别由不同的角色表继承其主属性(UserID),同时不同角色表里分别有自己独有的属性,包括商家(shop)表中具有字段shopID与userID作为联合主键。
1.3.2 物理数据模型设计
物理数据模型是数据表具体的实现,在逻辑数据模型基础上描述数据在存储介质上的组织结构。与数据库管理系统相关。
user(用户)表:存放系统中所有用户公有信息;
customer(消费者用户)表:存放消费者用户独有属性;
admin(管理员用户)表:管理员用户具有管理等级属性;
shop(商家用户)表:存放商家用户独有属性;
order(订单)表:存放系统中所有订单;
orderUser(订单?用户)表:存放每个订单中消费者和商家的关系;
product(商品)表:存放商品的基本信息;
orderProduct(订单?商品)表:存放订单与商品的关系;
comment(评论)表:存放订单完成时对商品的评论信息。
2 系统实现
2.1 系统平台与框架的实现
(1) 实现平台
本系统使用Eclpise作为开发平台。Eclipse是一个多语言IDE,支持PHP的开发。Eclipse同时具有良好的界面,丰富的功能,含有对代码进行自动格式化,代码错误提示等常用功能。本系统在Eclipse上进行了前台页面设计、后台逻辑处理与功能的开发工作。
(2) 实现框架
Yii是一个非常适合大型Web开发而产生出的高性能PHP框架。本系统不仅因为Yii的高性能与丰富的功能,还具有大量的手册提供参考。使用Yii时需要对其进行配置,需要满足该框架使用的最小需求,因此需要添加PHP的扩展PDOMySQL,这样才能访问MySQL数据库。
在配置好Yii框架后,本系统使用了Yii框架的强大代码生成器Gii功能。使用Yii带有的Gii生成器生成Model代码时,简单方便地将数据库中的数据库表转化为实体类代码,在类代码中具有数据表的所有属性,并包含各式各样的验证规则。这样极大地简化了开发者的工作,只需考虑如何设计数据表即可。
2.2 信用风险控制
用户选择注册后,会进入第一个注册页面,需要用户输入用户名、邮箱、密码及确认密码。点击下一步之后消费者用户输入消费者信息,商家用户输入商铺信息。
用户点击“注册”时,发送异步请求。首先根据用户名和密码访问数据库USER表,如果访问到数据,则提示账号存在并将结果返回给前端,红字提示。否则后端继续会根据注册规则校验用户提交的每一条信息。通过检验后,提示注册成功,将注册信息存入相关数据表中。
用户点击“登录”时,发送异步请求。首先根据用户名和密码访问数据库USER表,如果访问到数据,则跳转至首页并在右上角显示账户名称。当用户选择“记住我”时,服务器会生成一个7天的SESSION并分配对应的COOKIE给用户,用户将在7天内访问系统时无需登录,否则用户在关闭浏览器后需要重新登录系统。
2.3 商品展示模块的实现
商品展示是电子商务系统中的一项重要内容,无论用户是否登录都可以浏览所有商品。用户可以在左上角选择商品类别,商品类别是在商铺运营者设置商品信息时填写。在商品展示页面中,显示商品图片、商品名称、商品描述、商品价格,这些信息在系统product表中存取。在本系统中,还可以对商品进行关键字搜索,系统会将符合关键字描述的商品存入展示列表,并以分页的形式展示出来。本系统中由于商品信息时访问量最多的信息,因此将商品信息存入Redis缓存中,这样无需每次查询数据库,大大减轻了数据库的访问压力,提高了系统的整体效率。
2.4 订单管理模块的实现
订单管理的过程就是对信息的查看和状态的修改。分为前台订单操作和后台订单操作,分别对订单进行处理。
(1) 前台订单操作。消费者用户点击商品购买,或者加入购物车时,会产生一个店铺订单,用户再次将相同商铺下的商品加入购物车时,不会生成新订单,但是订单总额会发生变化。用户支付完成时,订单从“未付款”状态变为“已付款且未发货”状态,当商铺发货后并在后台维护订单时才会继续修改订单状态。
(2) 后台订单操作。商铺用户可对本商铺下所有订单进行查询操作,商铺用户通过查询订单后点击订单号即可进入订单操作界面(只有商铺运营者才有权限操作订单)。当商铺发货后(也可以选择取消发货)可修改相应订单状态,发货后订单由“已付款且未发货”状态变为“已付款且发货”状态,后续只有消费者用户收到货物后选择订单完成或者退款才可继续修改订单状态。后台商铺订单查询结果如图4所示。
2.5 商品推荐模块的实现
当消费者用户进行商品浏览或是商品搜索时,系统根据设定好的数量(本系统设置为5个推荐商品)推荐商品。当用户浏览商品A时,如果商品A在2小时内被购买过,则将购买A商品的顾客按时间顺序加入至Redis的有序集合中,将这些顾客在2小时内同时购买过其他商品放入Redis的有序集合中,按照商品推荐设计算法所属的步骤得到最终推荐的5个商品(没有则取同类中畅销最好的5个商品)进行推荐。如果一个用户并未登录,或是推荐算法没有计算出符合数量的结果时,则系统会向用户推荐网站当前最为畅销的商品。推荐商品的展示见图5。
2.6 权限管理模块的实现
商铺运营者可根据员工的不同职位分配对本商铺所拥有的权限。一级管理人员同样也可进行权限的分配,一级管理人员具有所有订单与商品的修改权限,二级管理员只具有查看权限。权限管理功能的实现主要通过对用户信息的修改,根据用户的业务范围和职位对其进行权限设置,设置适用于该用户的权限等级。
3 系统测试
3.1 系统功能测试
功能测试主要检测系统是否符合需求,达到预期的标准。本系统功能测试采用动态监测法,即通过正在运行的程序检测发生错误的过程。动态测试含有以下三种:白盒测试、黑盒测试与灰盒测试。
白盒测试在边界上进行范围控制,检测出所有循环路径,最终得到测试报告;黑盒测试的基本含义是测试人员将整个系统看做一个不透明的黑盒子,不考虑程序具体的实现,直接对系统进行功能性测试;灰盒测试是介于黑盒测试与白盒测试之间的一种测试,类似白盒测试的方法进行,通过代码的编写及函数的调用实现。
从测试方法上看,本系统测试使用的测试技术属于黑盒测试。通过设计测试用例对各功能点进行测试。通过测试可得,系统的全部功能符合预期。
3.2 系统性能测试
基于用户偏好的电子商务系统的性能测试使用LoadRunner进行测试。其中LoadRunner包含三个重要组件,依次为Virtual User Generator,Controller与Analysis。
本次测试主要测试系统的处理极限,不断的为系统施加负载,观察性能曲线图及事务成功与失败数量的变化确定性能是否达到瓶颈。根据性能的分析结果对其进行调优。
在本次测试过程中,首先用Virtual User Generator进行测试,该录入工作设定好要访问的URL,以便在下一个环节进行多用户模拟。在设置过程中可以选择放入事务,当事务检测成功时会告知测试者。其次用Controller模拟用户并发数,设置好并发数与用户加入时间和终止时间。设置时可以选择多用户同时加入或者用户分批加入。本次测试中为500位用户同时加入开始测试。最后使用Analysis组件记录测试结果,包括缺陷报告和测试日志,Analysis组件还可以进行统计和分析测试结果。从结果中分析得出,本系统支持同一时刻并发数大约为500。系统主要功能全部通过测试,符合预期。
4 结 论
本文在研究了当今主要的电子商务模式的基础上,提出了一种商品推荐算法,并使用Yii框架与Redis技术设计并实现了基于用户偏好的电子商务系统。在设计及实现的过程中,在对代码流程的优化及数据库查询的效率上有了新的认识和见解,并封装了若干能够提高开发效率的类库。在用户体验及易用性方面,本系统还有待改善及提高,在大数据量的查询响应方面,有待继续完善。
参考文献
[1] JARVIS R A. A perspective on range finding techniques for computer vision [J]. IEEE transactions on pattern analysis and machine intelligence, 1983, 5(2): 122?139.
[2] 潘雨相.基于PKI技术的电子商务安全支付系统设计[J].现代电子技术,2014,37(12):93?95.
[3] ZHANG J, WANG Z J, ZHUS R, et al. Massive data MapReduce fingerprint discriminant algorithm based on Hadoop [J]. Applied mechanics and materials, 2012, 263: 2655?2660.
[4] SCHULTZ E. Security views [J]. Computers & security, 2004, 23(8): 533?541.
[5] 王艳君.新环境下的网店购物系统的设计与实现[J].现代电子技术,2015,38(11):119?122.
[6] 刘华星,杨庚.HTML5:下一代Web开发标准研究[J].计算机技术与发展,2011,21(8):54?58.
[7] 韩鲲,薛辉.Web数据库的安全审计机制[J].信息安全与通信保密,2011(6):92?94.
[8] 金涛,武娜.实时数据库的核心技术[J].工业控制计算机,2012,25(4):94?95.