计算机科学与技术专业(本科)
随着互联网技术的迅猛发展,电子商务已成为现代商业领域中不可或缺的重要组成部分。在线购物系统为广大的消费者提供了极为便捷的购物流程和丰富多样的商品选择。然而,面对用户需求的不断增长和市场竞争的日益激烈,如何构建一个高效、稳定、用户友好的在线购物系统,已成为业界广泛关注的重要课题。本研究采用了B/S架构和MVC模式进行设计。首先介绍了论文的研究背景及意义,并对国内外相关文献进行研究,为在线购物系统设计提供依据。其次对系统需求进行分析,详细阐述了系统的功能性需求和非功能性需求。系统设计环节包括了系统功能模块设计和系统数据库设计两个主要方面,具体实现了商品管理、用户管理、订单管理、店铺管理、收货人管理和购物车管理等核心功能模块,并用E-R图展示了各实体之间的关系以及属性。在系统测试阶段,本文详细介绍了测试的环境与配置,并对在线购物系统进行了全面且深入的测试,确保了系统的稳定运行和高可靠性。测试结果显示,本项目成功构建了一个高效、稳定且用户友好的在线购物平台。系统不仅为用户提供了便捷的购物体验,同时降低了人力维护成本,并提升了商品交易和维护的效率。此外,该平台为相关领域的研究与开发工作提供了重要的参考价值。
关键词:在线购物;Spring Boot;系统测试
目录
第一章 绪论
在传统门店销售模式中,初创门店需选择合适位置并承担开设及装修费用,增加了前期经济负担。销售人员必须详细介绍商品信息并准确掌握库存和现金流情况[]。消费者则需克服诸多不便才能到店购买商品,给双方带来挑战。
网络购物的兴起为商家提供了新的经营方式,简化了开店流程和成本。商家通过电商网站的分析和统计功能,轻松管理商品销售和订单。同时,买家也因电商的便利性而更加依赖,推动了电商的快速发展[]。电商的高速增长正成为推动中国社会经济发展的新引擎,注入了新的活力。
随着用户增长,电商系统负载加重可能影响功能和消费体验,阻碍行业发展。设计支持大量订单的网站是关键问题。仅升级设备无法满足需求,必须深度优化系统架构和技术[]。电商企业需采取创新措施,如引入高效数据库、优化网络架构、采用缓存策略减轻服务器压力,使用负载均衡技术保持系统稳定,以及优化数据处理流程提高效率和准确性。这些措施有助于建立健壮、可扩展的电商平台,适应市场变化,提供高质量服务体验。
为保证系统稳定,电商通常采用分布式缓存提升性能。在分布式架构中,快速访问缓存数据至关重要,否则缓存服务效率会降低。因此,设计实现一个稳定、高效,支持高并发和高可用性的电商网站系统,对公司内部采购活动至关重要[]。在线购物系统的全面设计与开发具有以下意义:
(1)在线购物系统能显著降低交易成本,包括店面租金和销售人员费用。在线交易让商家节省传统商业模式中的开支,提升经济效益。
(2)在线购物系统降低了购物的时间成本,允许消费者随时随地通过互联网获取商品信息和库存状态。这提高了购物的灵活性和效率。
(3)在线购物系统为店铺和产品管理提供高效信息解决方案。系统自动记录商品和订单信息,并利用统计分析工具帮助商家了解经营状况。数据驱动的管理提高了透明度,并使商家能基于实时数据做出精准决策。
(4)在线购物系统提供稳定可靠的在线交易服务。利用强大技术支持,平台能应对高并发请求,保证系统在访问量大增时仍正常运行,避免服务中断,为消费者和商家创造安全可靠的交易环境。
在数字化时代,确保网络交易的安全性、稳定性和效率至关重要。尽管面临处理大量商品交易的复杂性,许多企业已通过技术创新取得显著成就。例如,亚马逊开发了DynamoDB,一个高性能的NoSQL键值存储平台,通过内存读写操作提升数据响应效率。同时,Amazon ElastiCache提供了一个高性能、成本效益高的分布式缓存服务。Amazon Simple Queue Service(SQS)作为消息中间件,虽不保证消息严格顺序,但促进了不同应用程序间的通信,增强了分布式架构的灵活性和效率[]。
在国内,众多规模庞大的电子商务公司也展现出了不甘落后的竞争态势,他们积极地组织并实施了各种研究项目和改进措施,从而取得了令人瞩目的成果。以阿里巴巴集团为例,该集团的大数据平台和产品部门的杰出资深专家张青,发挥了关键的领导作用,成功地引领公司构建了阿里巴巴的数据库管理体系,这一举措极大地推动了商业智能系统的建立和发展[]。与此同时,阿里云服务器集团公司的网络信息安全核心团队中的高端安全专家吴汉青及其团队成员,也成功地推出了DDoS安全防护设备,这一创新举措有效地降低了平台用户在抵御黑客入侵时所需承担的成本[]。此外,LVS开源项目的创始人张文松,在Linux电脑操作系统领域中,通过运用各种先进的集群技术,成功地打造出了性能卓越、可扩展性极强的web服务服务器,为用户提供了更加稳定和高效的网络服务体验[]。
在线购物系统主要提供商品交易,包括商品管理、订单处理和授权管理。商品管理模块支持商品查询、浏览和店铺管理。订单处理确保顾客顺利下单和跟踪订单。系统设有评价系统,让顾客评价商品或服务,帮助顾客决策并激励商家提升服务。系统设计考虑了不同用户角色,游客可浏览商品和评价,管理角色负责管理商品、订单和评价,便于系统运行和维护。
(1)游客
游客通常有基本的功能需求。系统安全性要求限制未注册用户的管理权限,以保障系统安全稳定。未注册用户在商品交易中无法与卖家联系,影响交易和安全[]。因此,游客仅能浏览商品和部分注册功能,满足需求同时确保系统安全和管理方便。游客需求用例图如图2-1所示。
图2-1 游客需求用例图
①用户注册是游客成为会员的必经步骤,对于执行购买等操作至关重要。注册时,用户需提供昵称、密码、手机号等基本信息,并可能需额外提供电子邮箱、真实姓名及验证信息,以确保身份真实和安全。
②商品浏览环节让用户查看产品简介、优势、价格和图片等信息。用户可以了解商品特性、使用方法、适用人群及限制。
③产品查询功能允许用户通过关键词搜索或按类别筛选商品。它还提供高级搜索选项,包括品牌、价格、颜色和尺寸等筛选条件。此外,根据用户的历史记录,系统可提供个性化推荐,增强购物体验。
④点评浏览功能让用户在交易后评价商品,其他用户可查看这些评价以了解商品质量和满意度。评价通常包含文字、星级评分及图片或视频,提供全面反馈。平台还汇总统计评价,如平均评分、好评率,帮助用户快速了解商品表现。
(2)管理员
在线购物系统的管理员通常拥有广泛的权限,包括买卖双方的功能,以便快速介入解决争议。他们可以限制或禁止问题店铺或用户交易,以维护平台秩序和用户权益[]。理想情况下,管理员权限应更细致划分,但因开发和资源限制,目前采用统一权限划分,便于管理和操作。
(3)买家
买家在数据库用户中占据主导地位,系统设计旨在优化其消费体验。买家与多个程序模块紧密互动,特别是订单管理和支付控制模块,这些对交易顺畅和支付安全至关重要。产品和店铺管理功能提供查询服务,帮助买家快速获取商品信息和店铺详情,增强购物体验[]。买家用例图如图2-2。
图2-2 买家用例图
①登录管理是系统安全的关键,涉及多层面安全措施。它确保只有合法用户能访问系统,并通过正则表达式检查防止SQL注入。系统还限制密码错误次数,防止暴力破解。为抵御自动化攻击,引入了短信和图形验证码机制。这些措施共同保障了系统安全和用户登录体验。
②用户管理系统允许用户轻松查看和编辑个人信息,包括更改密码。用户还能管理收件人数据,如添加、修改、删除收件人信息,以及查看收件人详情。此外,用户可查看他人评价和访问其他用户信息,促进系统内信息透明和互动。
③产品管理功能包括商品查询和信息浏览。查询方面,系统支持关键词精确搜索和模糊匹配,用户可按分类筛选商品。信息浏览方面,用户能查看商品规格、价格、评价等信息,并获取实时库存状态和专业知识,以便做出明智购买决策。
④在订单系统中,用户选定支付方式后,系统会生成订单信息以继续购买流程。用户可轻松查看和管理订单记录。对于预付款订单,用户可在规定时间内撤销。用户亦可删除不再需要的订单记录。撤销仅限预付款订单,已完成付款的订单可删除。系统还支持撤销合作数据处理。
⑤店铺管理功能提供了一个平台,让用户能通过关键词搜索和模糊匹配找到感兴趣的商家。用户可以查看产品详情、店铺名称和详细描述,并可将感兴趣的店铺收藏以便日后查阅。
⑥购物车管理功能允许顾客高效管理商品。顾客可添加商品至购物车,便于查看详情及快速结账。购物车支持随时删除不需要的商品或清空,以便重新开始购物。
⑦评价系统允许用户通过文字和照片表达对商品的满意度,并为其他买家提供参考。用户可更新或删除评价,以反映最新的反馈。
⑧交易管理主要处理订单系统中的未付款订单结算。用户可选择多种支付方式,包括流行的支付宝和微信支付,以适应个人支付习惯,顺利完成购物支付。
(4)卖方
卖家需管理商品和店铺,涵盖多个核心模块。登录模块是系统入口,确保商家身份验证。商品管理包括上架、信息更新和库存调整。店面管理允许调整外观和信息,设置门店状态。订单管理系统提供订单详细信息管理。这些模块帮助您高效管理店铺和商品,确保业务顺利。卖家侧用例图如图2-3所示。
图2-3 卖家端用例图
①在订单管理系统中,工作人员需查阅订单信息,利用产品名称、销售时间、关键词等条件筛选,快速准确地找到所需商品。
②用户信息管理系统允许用户更新和查看个人信息,注册成为卖家享受专属优惠和功能,并提供消费者反馈渠道以提升体验。
③产品管理中,员工负责新产品上架、设定库存,管理供应。定期查看销售记录,根据市场反馈调整产品信息,必要时下架产品,确保产品线活力和竞争力。
④管理人员应更新店铺信息以确保其准确性和时效性,并能查看包括店铺历史、销售数据和客户反馈在内的商家基本信息。系统还应允许设置店面关闭状态,以便在维护或特殊情况下通知消费者[]。
⑤在评价管理系统中,工作人员需检查买家对产品、服务和物流的反馈。系统应能及时回应点评,帮助解决问题,提高服务质量和顾客满意度。
⑥工作人员需点击未发货物品进行操作,确保商品准确送达。系统应提供查看发货状态功能,以便跟踪物流,确保及时收货,提升购物体验。
(1)并发性
系统在实施中利用线程技术,有效应对大规模开发需求。通过设计集成分布式集群架构,系统实现了横向扩展,提高了性能和并发处理能力,确保了高负载下的稳定性和响应速度[]。
(2)安全
本系统使用手机号进行用户身份验证,并要求用户在交易中交换物流信息以保证交易安全。手机号与用户信息绑定,系统架构设计能获取关键登录参数,增强安全[]。设计旨在防止不法分子利用SQL注入等技术,确保系统安全稳定。
(3)高可用性
该系统能有效识别和检测云服务器意外关机,具备精确定位能力,确保处理中的请求被及时保存,避免数据丢失[]。它还能在服务器重启时自动恢复数据,保证服务连续性和数据完整性,提升系统稳定性和可靠性。
(4)易用性
操作会触发提醒,提升用户体验。复杂功能配有详细文档,帮助用户掌握。升级时突出新功能,确保用户了解。
(5)维护性
记录装置的部署流程,旨在便于开发者在日志中精确查找并有效解决相关问题。
(6)可移植性
该操作系统具备生命周期管理能力,能够在多种不同的电脑操作系统服务器上运行,并且支持从一台服务器迁移至其他网络服务器[]。
系统关键模块划分如下:用户管理模块与收货人管理模块主要聚焦于用户相关操作,产品管理模块则专注于商品相关操作,订单管理系统模块旨在为产品交易提供必要的服务支持,消息管理模块则主要负责各类消息提醒服务,此外,还包括其他相关模块。系统功能模块设计图如图3-1。
图3-1 系统功能模块设计图
商品管理模块旨在全面管理所有商品信息。其主要功能包括商品列表的展示、未售商品的管理、产品的上架操作、产品库存的调整以及商品基本资料的修改。商品管理模块图如图3-2所示。
图3-2 商品管理模块图
用户管理模块承担着管理各类客户信息的重要职责,涵盖了禁用用户账户、用户注册以及用户信息修改等服务。用户管理模块图如图3-3。
图3-3 用户管理模块图
(1)注册
用户注册是用户系统的基础,只有通过注册的用户才能享受高级管理权限,如购买商品等。注册时,用户需填写昵称、手机号,并输入两次相同的密码和短信验证码。短信验证码由系统生成并发送至用户手机,以防止网络爬虫攻击,保障系统和用户信息的安全。用户注册流程图如图3-4。
图3-4 用户注册流程图
(2)信息修改
变更信息时,需调整用户资料,如昵称、手机号、密码等。系统会要求验证支付密码,确保操作者为本人,防止未授权更改,增强数据安全和个人信息保护。
(3)禁用用户
禁止用户权限用于非系统保障目的。若用户有安全风险,系统应立即禁用其权限,阻止登录和操作。系统还应根据用户行为采取措施,如限制资源访问、发送安全警告、要求额外验证或通知安全团队调查处理。
(4)删除用户
客户可选择取消账号,账号取消后系统自动删除个人信息。在数据清理前,系统会验证用户支付密码,确保用户自愿且无未授权操作。密码验证无误后,系统启动删除程序,并多次提醒用户,确保他们慎重考虑,避免冲动导致不可逆后果。
(5)用户查询
消费者和用户、用户与卖家之间通过信息查询沟通,增进了解和信任,有利于产品交易。系统管理员利用此功能维护系统运行,确保交易顺畅安全,提供稳定平台。
本订单管理系统模块专注于实现对订单信息的特定功能。考虑到订单信息的创建将触发事务管理中的相应变化,因此,订单信息板块中的功能自然具备事务性特征。订单管理模块图如图3-5所示。
图3-5 订单管理模块图
(1)订单生成
订单完成后,生成的记录对交易双方至关重要,既保障交易,也支持分析和监控。订单信息分为两类:一般信息记录总额和时间,详尽信息则包括产品细节,如名称、规格、价格和购买次数。这些详尽数据对分析消费者行为、管理库存和调整营销策略具有重要价值。订单生成流程图如图3-6所示。
图3-6 订单生成流程图
(2)订单删除
用户完成交易后,系统会保存订单记录,包括商品详情、金额和时间等信息,方便日后查阅。用户若不再需要这些记录,可使用删除功能移除。即使合作关系结束,用户仍可删除订单信息,确保个人信息安全。
(3)订单取消
用户完成购买流程后,若决定取消购买,可使用订单关闭功能。系统会在用户正式取消交易前保留商品库存,以便重新购买。若支付过程耗时过长,系统将自动终止交易,避免不便。交易一旦终止,占用的库存资源将被释放,确保库存流动性并供其他用户购买。
(4)订单查询
购买多种商品后,系统会为每件生成独立订单记录。客户可利用订单查询功能,根据编号或不同条件搜索特定订单。此功能便于用户快速找到所需订单信息。
(5)订单结算
用户选购商品并提交订单后,需登录系统进入结算页面以支付。结算页面会自动显示订单中产品的数量和价格,系统据此进行结算。用户点击“结算”后,系统识别并引导至支付模块,用户可选择支付方式并完成支付操作,确保订单成功。
店铺管理模块旨在满足门店管理的各项功能需求而设计与实现。该模块包含的功能涵盖了对商家信息的调整、查看以及申请注册等操作。店铺管理功能专为卖家提供服务,使卖家能够有效地管理自己的店铺。店铺管理模块图如图3-7所示。
图3-7 店铺管理模块图
(1)信息修改
在信息存储过程中,采用异步更新策略来及时更新与特定商品相似或相关商品的信息。当数据库中的店铺信息被修改或更新后,这些变更会自动传递到消息中间件模块。随后,系统会启动一个多线程程序,迅速检索最新的店铺信息。这样,程序可以有效同步数据,确保缓存信息是最新的,实现数据更新,保证数据的准确性和实时性。
(2)逛商店
消费者在选购商品时,可以获取并比较不同店铺的信息,包括档次、服务和价格等,以全面评估店铺和产品。然而,卖家通常只能管理自己的店铺信息,无法获取竞争对手的数据。店铺信息获取流程图如图3-8所示。
图3-8 店铺信息获取流程图
(3)开店
用户若想开设店铺,需完成商家注册流程。这要求用户填写并提交必要的商家信息,如名称、联系方式、经营类别及证明文件。提交后,系统将审核这些信息。审核通过并注册成功后,用户身份将从购物者变为商城卖家。作为卖家,用户将享有上架商品、使用营销工具和服务推广商品的权利,以及商城客户支持服务和参与促销活动的便利。
(4)关店
卖家可启用店铺关闭功能暂停营业,或在经营期限到期前收到系统提醒,以便及时准备和处理。
收货人管理模块的各项功能旨在协助用户有效管理其收货人信息。此类信息作为接收快递服务的重要资料,对于确保交易安全至关重要。收货人管理模块图如图3-9所示。
图3-9 收货人管理模块图
(1)添加收货人
顾客在商场购物选择邮寄商品时,需提供收货人全名、有效电话和准确邮寄地址等基本信息。这些信息对确保商品顺利、准确送达至关重要。因此,买家在输入时必须小心准确,以避免错误或延误。信息正确提交后,系统会记录,使配送顺利进行。
(2)收货人清单
用户可轻松查看和检索收货人详细信息,以清晰列表形式呈现。信息包括收货人姓名、地址、联系方式等。系统限制临时收货人记录不超过20条,便于管理和检索。设计旨在高效管理收货人信息,防止信息过载,快速定位特定数据。
(3)删除收货人
为确保系统运行顺畅,每位用户的收货地址记录限制为最多20条。若用户希望添加新的收货地址,必须先移除那些不再需要的旧地址。
(4)修改收货人信息
客户若需更改特定收货人资料,可点击编辑按钮,输入更新后的详细信息,并保存更改。
负责管理购物车模块,处理所有与添加商品至购物车相关的操作。核心功能包括将商品添加至购物车、从淘宝购物车中删除特定商品,以及能够查询并展示购物车内的商品清单。购物车管理模块如图3-10所示。
图3-10 购物车管理模块图
(1)购物车清单
用户可将感兴趣或计划购买的商品加入购物车。查看时,系统会以列表形式展示商品详细信息,并在最后一列标注相关功能,便于用户操作。
(2)添加货物
当顾客寻求购买特定商品或产品类别时,首先将所需商品加入购物车,以便于统一管理订单,并提高检索商品的效率。
(3)拆除货物
在执行购物车操作的过程中,用户能够移除购物车内的任意商品,并且享有一次性清空购物车内所有商品的权限。
E-R图,或称实体-关系图,是数据库设计和数据建模的图形化工具。它清晰地展示了实体间的关联和属性特征,包括一对一、一对多、多对一和多对多关系。E-R图帮助设计者直观理解数据结构,组织和管理数据,确保数据的一致性和完整性。此外,它还能帮助预见设计问题,并作为沟通数据模型的桥梁,简化复杂数据关系的理解。本系统的数据库 E-R 图如图3-11所示。
图3-11 数据库 E-R 图
(1)用户表
用户表见表3-1。客户数据库详尽地保存了每位顾客的个人信息。在这些信息中,“Identity”字段是买家身份的标识,其默认值设为1,便于识别购买者;而“status”字段则用来反映用户的最新状态。
表3-1 用户表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
user_id | 32 | int | 主键,不为空 | 用户 ID |
identity | 3 | tinyint | 默认为 1 | 身份标识 |
status | 3 | tinyint | 默认为 1 | 状态(1 正常) |
user_name | 50 | varchar | 不为空 | 用户昵称 |
password | 20 | varchar | 不为空 | 登录密码 |
phone_number | 20 | varchar | 默认为空 | 手机号码 |
(2)存储信息表
店铺信息表见表3-2。信息存储表旨在记录商家的详细资料,涵盖了诸如店铺ID、店铺名称和店铺描述等核心属性。特别地,shop_owner字段标识了店铺的拥有者,通过与用户表中的用户ID建立外键关联来实现;而shop_status字段则反映了店铺的当前状态,其默认值设为1,意味着店铺处于激活状态,从而便于卖家和管理员对店铺的运作状态进行便捷的监控与管理。
表3-2 店铺信息表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
shop_id | 32 | int | 主键,不为空 | 店铺 ID |
shop_description | 255 | text | 默认为空 | 店铺描述 |
shop_level | 10 | int | 默认为空 | 店铺等级 |
shop_name | 64 | varchar | 不为空 | 店铺名称 |
shop_status | 3 | tinyint | 默认为 1 | 店铺状态 |
shop_owner | 32 | int | 不为空 | 店铺所属人 |
(3)商品信息表
商品信息表记录商品的核心信息,涵盖产品ID、产品名称、价格、库存数量等基本属性。商品信息表见表3-3。"Product_status"字段的作用是展示新产品的当前状态,从而决定商品应该存放在仓库的货架上还是下方。此字段的默认值设为1,表明产品已经正式上市。而"product_category"字段则代表了产品类型表中的一个关键标识符,它帮助识别商品所属的分类。至于"shop_id"字段,它作为数据库中表的主键,确保了每个商品都能与具有唯一物理标识的存储实体相对应。
表3-3 商品信息表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
product_id | 32 | int | 主键,不为空 | 商品 ID |
product_price | 8,2 | decimal | 不为空 | 商品单价 |
product_description | 255 | text | 默认为空 | 商品描述 |
product_status | 3 | tinyint | 默认为 1 | 商品状态 |
product_name | 64 | varchar | 不为空 | 商品名称 |
product_invertory | 11 | int | 不为空 | 商品库存 |
product_picture | 255 | varchar | 默认为空 | 商品图片地址 |
product_category | 64 | varchar | 默认为空 | 商品所属类别 |
shop_id | 32 | int | 不为空 | 商品所属店铺 |
(4)商品类别清单
商品类别清单用于记录并存储商品类别相关信息的工具。其关键构成元素包含三大特性:即主键ID、类型名称以及类型种类。商品类别表见表3-4。
表3-4 商品类别表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
category_id | 32 | int | 主键,不为空 | 类别 ID |
category_type | 10 | int | 不为空 | 类别类型 |
category_name | 64 | varchar | 不为空 | 类别名称 |
(5)购物车记录表单
该表格旨在记录普通用户所购买的物品信息,见表3-5。其中,字段cart_user_id负责保存用户信息表的主键ID,用以识别对应的购物车记录归属的用户;而字段cart_product_id则用于记录高端产品信息表的主键ID,以反映购物车中所包含的产品详情。
表3-5 购物车记录表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
cart_id | 32 | int | 主键,不为空 | 记录 ID |
cart_product_id | 32 | int | 不为空 | 商品信息 |
cart_user_id | 32 | int | 不为空 | 所属用户 ID |
(6)订单汇总表
该表记录用户所有订单,包括订单总金额等关键信息。表结构见表3-6。字段order_user_id标识用户订单,order_receiver_id记录收货人ID。Order_status字段表示订单状态,默认为1表示维护中。Pay_status字段表示支付状态,默认为1表示未支付。
表3-6 订单总体表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
order_id | 32 | int | 主键,不为空 | 订单 ID |
order_receiver_id | 32 | int | 不为空 | 收货人 ID |
order_status | 3 | tinyint | 默认为 1 | 订单状态 |
order_user_id | 32 | int | 不为空 | 所属用户 ID |
order_amount | 8,2 | decimal | 不为空 | 订单总金额 |
pay_status | 3 | tinyint | 默认为 1 | 支付状态 |
(7)订购详情表格
订购详情表以分布式方式存储,包含所有订单信息。详情表结构见表3-7,其中detail_order_id字段是主键,用于标识每个订单详情。
表3-7 订单详情表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
detail_id | 32 | int | 主键,不为空 | 订单详情 ID |
product_id | 32 | int | 不为空 | 商品 ID |
product_price | 8,2 | decimal | 不为空 | 商品价格 |
product_picture | 255 | varchar | 默认为空 | 商品图片 |
detail_order_id | 32 | int | 不为空 | 订单总体 ID |
product_name | 64 | varchar | 不为空 | 商品名称 |
product_quantity | 11 | int | 不为空 | 商品数量 |
(8)商品评价表
商品评价表记录用户评价,包括描述和关键属性。表3-8展示具体结构。user_id是用户信息表的主键,标识客户;product_id是高端信息表的主键,代表鉴定商品;Reply_status初始值为1,表示评论未回复。
表3-8 商品评价表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
comment_id | 32 | int | 主键,不为空 | 评价 ID |
product_id | 32 | int | 不为空 | 商品 ID |
reply_status | 3 | tinyint | 默认为 1 | 回复状态 |
user_id | 32 | int | 不为空 | 用户 ID |
description | 255 | text | 默认为空 | 评价描述 |
(9)收货人信息表
全面的收货人情况表系统地记录了所有用户的收货人详细信息。该信息表的具体结构参见表3-9。其中,“Receiver_user_id”字段代表收货人所属的用户,其存储的值为客户信息表中的主键ID。
表3-9 收货人信息表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
receiver_id | 32 | int | 主键,不为空 | 收货人 ID |
phone_number | 20 | varchar | 默认为空 | 收货人电话 |
receiver_user_id | 32 | int | 不为空 | 所属用户 ID |
receiver_name | 64 | varchar | 不为空 | 收货人名称 |
receiver_address | 255 | varchar | 默认为空 | 收货人地址 |
(10)消息通知表
该表记录消息提醒,包括内容、发送时间等关键信息。具体结构见表3-10。send_user_id字段关联客户信息表主键ID,表示发送方。status字段显示通知状态,数值1表示未读。
表3-10 消息通知表
字段名 | 长度 | 数据类型 | 约束 | 备注 |
message_id | 32 | int | 主键,不为空 | 消息 ID |
receiver_user_id | 32 | int | 不为空 | 商品 ID |
status | 3 | tinyint | 默认为 1 | 消息状态 |
send_user_id | 32 | int | 不为空 | 用户 ID |
send_time | 20 | datetime | 默认为空 | 发送时间 |
message_info | 255 | text | 默认为空 | 消息内容 |
商品管理功能主要围绕商品信息的管理、展示、推荐和数据维护,确保产品信息直观吸引用户。系统支持商品数据的增删改操作,以适应市场和用户需求,提升商品曝光率和销售效率,增强电商平台竞争力。
后台管理系统处理产品库存变动,接收并更新库存、价格、规格等关键数据。系统通过哈希算法并行处理更新请求,避免数据冗余,确保库存数据实时准确。自动化处理库存变动,支持电商平台高效运营。
图4-1 系统首页图
商品展示模块负责从后台提取并展示商品列表数据,确保信息准确、实时。它还构建商品详情页,提供详细信息和用户交互功能,如关键字搜索和分类筛选。搜索功能通过数据库模糊匹配实现,分类基于商品属性,便于用户浏览选择。设计目标是提供直观便捷的购物体验,帮助用户高效找到所需商品。关键代码如下:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>商品列表</title>
</head>
<body>
<h1>商品列表</h1>
<form method="get" action="/products/list">
<label for="category">选择类别:</label>
<select name="category">
<option value="">全部</option>
<option value="Electronics">电子产品</option>
<option value="Clothing">服饰</option>
<option value="Books">书籍</option>
</select>
<label for="keyword">关键字:</label>
<input type="text" name="keyword">
<button type="submit">搜索</button>
</form>
用户管理功能包括更新客户信息、处理注册申请、删除账户、查询和修改权限。登录时,系统使用正则表达式校验输入,防止SQL注入。密码以MD5加密存储,保障安全。注册时,昵称需唯一性校验,通过Ajax请求检查。设置密码需两次输入确认,且密码需满足复杂度要求。系统提供多种注册方式,如标准、快速注册及社交媒体账号注册,以适应不同用户需求。主要代码如下:
// 注册用户
public UserDTO registerUser(String username, String password, String email) {
if (userRepository.findByUsername(username).isPresent()) {
throw new RuntimeException("用户名已存在");
}
if (userRepository.findByEmail(email).isPresent()) {
throw new RuntimeException("邮箱已存在");
}
// 密码加密
String encryptedPassword = encryptPassword(password);
User user = new User();
user.setUsername(username);
user.setPassword(encryptedPassword);
user.setEmail(email);
user.setRole("USER"); // 默认角色为普通用户
user = userRepository.save(user);
return new UserDTO(user.getId(), user.getUsername(), user.getEmail(), user.getRole());
}
订单管理模块是电商平台的核心部分,负责订单从创建到处理的整个流程。它包括订单生成、展示、关闭和信息删除等功能。用户购买商品后,系统实时生成订单详情并存储。订单初始状态为未完成,付款显示未支付。支付完成后,系统更新订单状态为已完成,付款状态为已付款。用户可取消订单,系统将状态改为已取消。用户和商家均可通过搜索功能管理订单记录和状态。主要代码如下:
/ 生成订单
public OrderDTO createOrder(Long userId, Double totalAmount) {
Order order = new Order();
order.setOrderNumber(UUID.randomUUID().toString()); // 生成唯一订单编号
order.setUserId(userId);
order.setTotalAmount(totalAmount);
order.setStatus(OrderStatus.PENDING.name());
order.setCreatedAt(LocalDateTime.now());
order.setUpdatedAt(LocalDateTime.now());
order = orderRepository.save(order);
return new OrderDTO(order.getId(), order.getOrderNumber(), order.getUserId(), order.getTotalAmount(), order.getStatus(), order.getCreatedAt());
}
订单生成流程如下:用户通过即时购买或结算购物车商品,将商品数据发送至后台。后台接收并确认商品信息,计算总金额,并将订单详情存储于订单详情表,同时保存基本信息于订单表。之后,系统更新库存。若库存不足,订单生成失败,因为整个过程基于事务性原则,确保操作要么全部成功,要么全部回滚,保持数据一致性和完整性。订单信息显示效果如图4-2所示。
图4-2 订单展示效果图
店铺管理系统涵盖店铺信息管理、开业流程、信息更新和状态恢复等。开设店铺需填写注册信息,如名称、地址、联系方式和经营项目,并提交审核。审核通过后,店铺才能营业。系统提供店铺信息访问功能,用户可获取营业时间、商品和促销活动等信息。为提升访问速度,系统采用三级缓存架构。首先尝试从Nginx缓存获取信息,若未找到,则后台管理系统从数据库检索并返回给用户,确保信息的及时获取和系统稳定性。
系统架构中,环境查询缓存数据存于代理层,非Nginx直接处理。Nginx无法直接查询代理层数据。若代理层无缓存数据,系统将检索EhCache。EhCache未找到数据时,系统从底层存储读取。数据读取后,系统在相关层级设置和存储。最终,店铺信息展示在用户主页上。
信息存储更新包括数据库信息更新和缓存调整。本系统采用异步更新缓存策略。店铺升级流程是:卖家在前端输入数据,提交后台处理。后台更新店铺信息类,更新数据库。系统通知Kafka,启动线程监控信息。若检测到店铺升级操作,系统通过SQL查询最新信息,删除旧缓存,确保显示最新数据。店铺信息修改图如图4-3所示。
图4-3 店铺信息修改图
店铺信息修改的部分代码如下:
// 更新店铺信息
public ShopDTO updateShop(Long id, String shopName, String shopAddress, String shopPhone) {
Shop shop = shopRepository.findById(id)
.orElseThrow(() -> new RuntimeException("店铺不存在"));
shop.setShopName(shopName);
shop.setShopAddress(shopAddress);
shop.setShopPhone(shopPhone);
shop.setUpdatedAt(LocalDateTime.now());
shop = shopRepository.save(shop);
return new ShopDTO(shop.getId(), shop.getShopName(), shop.getShopOwner(), shop.getShopAddress(), shop.getShopPhone(), shop.getShopStatus(), shop.getCreatedAt(), shop.getUpdatedAt());
}
收货人管理功能主要负责处理收货人信息,包括添加、修改、删除和查询操作。系统支持关键词搜索,用户输入关键词即可找到相关收货人信息;若无关键词,则显示所有记录。系统还提供一键删除功能,方便用户清理列表。修改信息时,用户点击“修改”进入编辑页面,更新后保存即可完成更改。
用户在前台填写并提交收货人信息,如姓名、地址、联系方式等,后台管理系统接收并封装这些信息到数据类中。系统通过调用save或update方法来添加或修改收货人信息。业务逻辑层与API接口层交互,执行数据库的插入或更新操作。删除操作则通过接收ID定位并移除数据库中的收货人记录。展示收货人列表时,系统获取用户ID,检索并整理相关记录,打包后发送至前台浏览器展示。新增收货人信息图如图4-4所示。
图4-4 新增收货人信息图
新增收货人信息的代码如下:
// 新增收货人信息
public RecipientDTO addRecipient(Long userId, String name, String phone, String address, String postalCode) {
Recipient recipient = new Recipient();
recipient.setUserId(userId);
recipient.setName(name);
recipient.setPhone(phone);
recipient.setAddress(address);
recipient.setPostalCode(postalCode);
recipient.setCreatedAt(LocalDateTime.now());
recipient.setUpdatedAt(LocalDateTime.now());
recipient = recipientRepository.save(recipient);
// 将数据库实体转换为DTO返回
return new RecipientDTO(recipient.getId(), recipient.getUserId(), recipient.getName(), recipient.getPhone(), recipient.getAddress(), recipient.getPostalCode(), recipient.getCreatedAt(), recipient.getUpdatedAt());
}
购物车管理功能主要完善产品描述和操作选项。点击商品信息,可选择加入购物车。购物车页面显示操作选项,如调整数量、移除商品、查看详情和价格比较。系统提供直观界面,支持拖放调整商品顺序和搜索功能。这些改进旨在提升用户体验,简化商品管理,提高购物效率,并确保结账前商品确认无误。
购物车功能实现如下:系统首先获取客户ID和产品ID,然后将这些信息发送至后台。后台处理后,将客户和产品信息存储于数据库的购物车表中。若需删除商品,系统通过客户ID和产品ID在数据库中查找并删除相应记录。
在创建购物车商品列表时,首先根据客户信息检索购物车记录。系统详细查询购物车数据,确保准确获取用户添加的商品。系统处理记录,通过产品ID查询产品详细信息,如名称、价格、规格、库存和图片。检索到信息后,系统汇总整理并通过网络传输返回至用户主页。在主页上,产品信息被展示,用户可直观查看购物车中商品的详细情况,包括名称、价格等,从而提供清晰直观的购物车商品列表界面。购物车列表如图4-5。
图4-5 购物车列表图
购物车列表实现的部分代码如下:
@RestController
@RequestMapping("/cart")
public class CartItemController {
@Autowired
private CartItemService cartItemService;
// 获取用户购物车中的所有商品
@GetMapping("/list/{userId}")
public ResponseEntity<List<CartItemDTO>> getCartItems(@PathVariable Long userId) {
List<CartItemDTO> cartItems = cartItemService.getCartItems(userId);
return ResponseEntity.ok(cartItems);
}
本次测试的软硬件环境配置具体如下所示:
(1)硬件环境
服务器:Dell G3系列,搭载Intel i5处理器;
(2)软件环境
操作系统:CentOS 7.6版本,64位架构;
网络服务器:Tomcat 8.0;
数据库管理系统:MySQL 5.6;
缓存系统:Redis 5.0版本,Nginx 1.16版本;
消息中间件:Kafka 2.3;
浏览器:Chrome 74版本。
本文详尽测试了系统功能,设计了测试用例,特别是对关键数字信息如库存数据进行了深入测试。这些用例全面评估了功能的正确性和稳定性,并包括边缘测试用例以检测极端情况下的系统表现,确保处理边界条件和发现潜在问题。全面的测试方法确保了系统的可靠性和性能,满足用户需求。
商品管理测试用例表如表5-1所示。
表5-1 商品管理测试用例表
测试内容 | 测试步骤 | 预期结果 | 测试结果 |
商品信息浏览 | 1.登录系统主页面 2.点击商品 | 显示商品的详细信息。 | 符合预期 |
查看店铺出售中的 商品列表 | 1.登录卖家中心 2.点击商品模块 3.点击出售中的商品按钮 | 显示出售中的商品列表。 | 符合预期 |
查看商品模块功能 | 1.登录卖家中心 2.点击商品模块 | 显示商品模块的所有功能 | 符合预期 |
商品查询 | 1.登录卖家中心 2.输入商品查询条件 3.点击搜索按钮 | 显示匹配的商品信息 | 符合预期 |
显示出售中的商品 | 1.登录卖家中心 2.点击商品模块 3.点击出售中的商品按钮 | 显示店铺出售中的商品信息 | 符合预期 |
商品查询(异常) | 1.登录卖家中心 2.输入商品查询条件 3.点击搜索按钮 | 提示没有匹配的商品信息 | 符合预期 |
商品信息修改 | 1.登录卖家中心 2.点击商品模块 3.选择指定商品,点击修改按钮 4.填写需要修改的信息 5.点击提交按钮 | 1.提示商品信息已更改 2.商品列表中的该商品信息已经变更 | 符合预期 |
商品上架 | 1.登录卖家中心 2.点击商品模块 3.输入商品相关信息 4 点击添加商品 | 1.提示商品添加成功 2.商品列表中出现添加的商品信息 | 符合预期 |
商品下架 | 1.登录卖家中心 2.点击商品模块 3.点击指定商品的下架按钮 | 1.提示商品已下架 2.商品列表中该商品状态改成已下架 | 符合预期 |
商品删除 | 1.登录卖家中心 2.点击商品模块 3.选择指定商品,点击删除按钮 | 1.提示商品已经删除 2.商品列表中没有此商品信息 | 符合预期 |
订单管理测试用例表如表5-2所示。
表5-2 订单管理测试用例表
测试内容 | 测试步骤 | 预期结果 | 测试结果 |
订单查看功能 | 1.登录系统主页面 2.点击我的订单 | 显示我的订单相关信息。 | 符合预期 |
订单搜索功能(异常) | 1.登录系统主页面 2.点击我的订单 3.输入异常搜索条件 4.点击搜索按钮 | 提示没有相关订单信息。 | 符合预期 |
下单功能 | 1.登录系统主页面 2.选择需要购买的商品 3.点击下单按钮 | 显示下单的相关信息 | 符合预期 |
订单删除 | 1.登录系统主页面 2.点击我的订单 3.选择订单,点击删除订单按钮 | 1.显示订单已经删除 2.订单列表中没有此订单信息 | 符合预期 |
订单取消 | 1.登录系统主页面 2.点击待付款订单 3.点击取消订单按钮 | 显示订单已取消,并且在订单列表也能看到状态变更为已取消 | 符合预期 |
订单搜索功能 | 1.登录系统主页面 2.点击我的订单 3.输入正常搜索条件 4.点击搜索按钮 | 显示与输入搜索条件匹配 的订单信息。 | 符合预期 |
显示待评价订单 | 1.登录系统主页面 2.点击我的订单 3.点击待评价按钮 | 显示待评价订单信息 | 符合预期 |
显示待付款订单 | 1.登录系统主页面 2.点击我的订单 3.点击待付款按钮 | 显示待付款订单信息 | 符合预期 |
本研究成功构建了一个高效、稳定且易于扩展的电子商务平台。通过运用Spring Boot框架,显著简化了开发流程,缩短了项目周期,并有效提升了系统的运行效率。在系统需求分析阶段,功能性需求与非功能性需求均得到了明确界定,为后续的系统设计与实现提供了明确且清晰的指导方向。在系统设计的环节中,本文合理地对功能模块进行了划分,并设计了相应的数据库结构,以确保数据的一致性和完整性。系统功能模块的设计充分考虑了用户体验因素,涵盖了商品管理、用户管理、订单管理、店铺管理、收货人管理以及购物车管理等核心功能,全面满足了在线购物的基本需求。在系统实现过程中,本文采用了模块化开发的策略,确保了各模块之间的相对独立性和紧密联系,从而保证了系统的可维护性和可扩展性。在系统测试阶段,本文对系统进行了全面且深入的测试,测试结果表明,该系统能够满足高并发的业务需求,展现出良好的响应速度和处理能力。
在本论文完成之际,谨向所有给予帮助和支持的人表示衷心的感谢。首先,感谢导师的悉心指导和鼓励。导师在研究思路的确立、方法的选择以及论文撰写过程中提供了宝贵的建议和持续的支持,使本论文得以完成。其次,感谢同学们的互助和分享,同学们的批评和建议帮助笔者不断改进和完善研究成果。最后,感谢家人和朋友在整个研究过程中的理解和支持。这些关心和鼓励给予了笔者坚持下去的动力和信心。