版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
共3页第1页基于SSM和SpringBoot商铺系统设计与实现[摘要]随着社会经济的发展,市场活力的上升,以及互联网信息技术广泛、深入地应用到人类社会的各个领域并发挥着越来越重要的作用。居家经济成为了一种新的经济模式。人们在任意时间地点就可以通过网购进行所需物品的交易。电子商城是居家经济模式的一个重要组成部分,依托于分布式开发技术,集合了商品展示、商品挑选、购买支付等功能,为人们提供了一站式的网络购物服务。系统搭建使用基于SSM框架,通过项目管理工具Maven将三个框架整合在一起进行项目构建和依赖管理;系统同时使用面向服务的分布式技术。项目运用SSM快速迭代出商铺1.0,再结合SSM转型成SpringBoot的思路,切换到商铺2.0。云部署等实用技术点。本系统使用Eclipse开发工具进行开发调试,前台使用Html、Css、JavaScript以及SUIMobile快速实现响应式页面,数据使用Redis缓存,后台使用Spring、SpringMVC、Mybatis框架进行初步开发,使用SpringBoot进行升级改造。本系统使用MySQL来存取数据并实现相应的增删改查的功能。[关键字]:SSM框架,SpringBoot框架,商城。目录1.引言 31.1项目开发目的 31.2.项目开发意义 31.3研究现状 41.3.1国内研究现状 41.3.2国外研究现状 42.系统需求分析 52.1系统需求概述 52.2系统需求分析 52.2.1登录注册功能需求分析 52.2.2商品搜索功能需求分析 62.2.3购物车功能需求分析 72.2.4订单功能需求分析 82.2.5支付功能需求分析 92.2.6商品管理功能需求分析 102.2.7内容管理功能需求分析 102.3系统非功能需求分析 113.系统概要设计 123.1系统逻辑架构概要设计 123.2系统功能概要设计 133.2.1登录功能概要设计 133.2.2注册功能概要设计 133.2.3商品搜索功能概要设计 133.2.4购物车功能概要设计 133.2.5订单功能概要设计 153.2.6商品管理功能概要设计 153.2.7内容管理功能概要设计 153.3系统使用框架和技术 153.3.1MVC设计模式 163.3.2Spring+SpringMVC+MyBatis框架 163.4其他技术 223.4.1系统管理工具Maven 223.4.2数据库缓存Redis 234.数据库设计 234.1数据库设计原则 234.2数据库E-R图设计 244.3数据库表的设计 245.详细设计 305.1系统的基本流程 305.2店铺信息界面 325.3商品管理界面 325.4类别管理界面 335.5消费记录页面 345.6授权管理界面 345.7商城首页 356.功能测试 366.1注册登录功能测试 366.2店铺管理功能测试 366.3商品管理功能测试 376.4搜索功能测试 386.5绑定本地账号密码功能测试 396.6店员信息录入测试 396.7地区查询测试 397.总结与展望 397.1总结 397.2展望 40参考文献 411.引言1.1项目开发目的 由于网络信息技术日益发展壮大,逐渐广泛、深入地应用到人类社会的各个阶层领域并发挥着相当重要的作用。因此计算机软件技术应用于日常生活中是发展的必然。网上购物作为一种新的购物形式,正逐渐取代实体店购物,成为人们日常购买商品的方式和习惯。而消费能力巨大的网购市场正催生着线上商城的发展。电子商城不断改进自身的架构,顺应用户对于商城的要求。作为计算机应用不可或缺的一部分,将大量复杂的数据交给计算机来处理,有着手工处理所无法企及的特点。这些特点能够极大程度的减少人工任务量从而提升信息管理的速度及质量,是真正意义上的合理利用资源。1.2.项目开发意义网络商城是指通过计算机互联网技术搭建而成的电子交易平台。用户通过网络商城进行网上下单和网上交易。在电子商城,人们可以享受同在实体店一样的服务。通过浏览商品详情了解商品的信息,获取商品的价格、图片甚至商品规格;通过购物车功能,像实体店的购物车一样,将心仪的商品放入购物车;通过虚拟支付,在线支付商品订单,无需花费多余的路程、时间和金钱,随时可以进行交易;可以通过一键退款,将不合适的商品退货,避免了人工的交流成本;通过浏览店铺的信誉指数、开店年限和商品的评价详情,获得欲购买商品更多有价值的信息,使得选购的商品拥有更加可靠的来源和放心的品质。因此在全球经济飞速发展,经济一体化的大背景下,人们消费的需求逐年上升,对消费的便捷性和快速性也有着越来越高的要求。人们通过足不出户的方式任意时刻地点的进行消费购物。在家收取货品、一键下单、一键支付、一键退款成了人们习惯的消费方式。用户的大规模网购需求使电子商城在服务体验等环节中加速发展的同时,也对电子商城的硬件架构提出了更高的要求。一方面在大数据时代,网站需要对大量的数据进行存储、分析和处理。比如面对不断增长的用户,网站的用户管理功能需要存储用户的个人信息,存储用户的行为信息用于网站对特定用户进行特定化的服务;商城规模的增加,使得商品种类和商品数量也在增加,这些都需要网站进行合理化的存储分配,来保证数据存储的安全性、访问的及时性、可靠性和可扩展性。另一方面,网站本身需要根据业务的需求时时更新,灵活的架构不仅要支撑当前的业务,也需要应对未来的挑战,而健壮的架构需要保证不停歇的为消费者提供服务,不出现无法访问、页面错误、丢失数据甚至宕机的情况。鉴于互联网的优势,我决定以使用SSM框架和SpringBoot框架做出一个百货商铺系统。1.3研究现状1.3.1国内研究现状我国的网络购物的背景不长,第一笔成功交易的订单是1998年3月6日下午3:20,随后中国的网络购物才逐步出现在大众的视野中。1999年底,互联网开始沸腾,国内开始有300多家网络公司从事B2C这个行业。2000年,递增至700余家,但让人熟知的却仅三四家。直至SARS的出现,人们才开始热爱上了足不出户的购物方式,于是,购物网站开始逐渐的成功,从而到发展了今天。如今的购物网站主要有以下几个发展优势:(1)商品送货上门、购买快捷方便。(2)价格低廉、优势明显。(3)商品种类齐全、可购买到当地没有的商品。(4)节约时间、提高效率。(5)交易透明、信息公开。1.3.2国外研究现状在欧美等信息化程度较高的国家和地区,相较于国内有着更完善的产权保护和物流配送流程。这使得国外的网络购物得以安全飞速的成长。调查表明,美国的家庭已经习惯于在网上购物。互联网信息量大,传播迅速,而且信息传递不受时空的限制,可以不限时间地点且不需要人力就可以提供销售服务。在法、德等欧洲国家,就二手类交易平台对于整个电子商务所产生的营业额可占电子商务总额的1/8,在美国则已高达1/6以上,而欧美国家网上电子商务的开展也不过才十几年的时间。2.系统需求分析2.1系统需求概述系统分为前台和后台两个子类系统,用户分为普通用户和系统管理员。前台系统为商城操作系统,用于向用户展示商品页面,提供搜索工具。前台页面包括地区分类、商品分类、商品图片、商品价格等基本信息,搜索工具提供地区和商品的搜索服务。前台系统对普通用户进行服务:普通用户区分为注册和未注册用户。未注册的用户仅仅可以搜索浏览商品、查看店铺;注册用户且已登录的用户可以浏览添加商品、店铺、查看购物车和订单信息、支付购买商品;注册但未登录用户在使用购物车、订单功能时需要先进性登录;登陆时需要输入账号密码;下订单时需要填写提交相关收货信息才能进行支付操作。后台系统为管理系统。系统管理员登录后台管理系统,可以选择相关选项对系统进行管理,不同选项按钮提供不同的功能,包括提供地区分类管理、商品管理、商品分类管理等功能。具体系统功能划分如图2-1所示。图2-1系统功能划分2.2系统需求分析2.2.1登录注册功能需求分析登录注册功能是商城基本功能,商城通过保存注册用户的信息管理用户,为用户提供完整的服务,同时可以通过统计用户的注册量和访问量来判断用户行为,根据用户行为对商城进行改进,促使商城不断的发展。未登录的用户属于游客,可以使用的功能是:系统的浏览功能,部分的购物车功能,订单和支付功能无法使用;已登录用户成为该系统的会员,前台全部的功能都对会员进行开放。(1)游客输入网站地址进入商城首页,选择“注册”按钮,随后系统跳转到注册管理页面,用户填写相关个人信息进行注册,如果信息合法则提示“注册成功”,并跳转到登录页面;反之提示“注册失败”,显示非法数据位置,引导用户重新注册。(2)已注册用户点击“登录”进行系统登录,并跳转到登录页面,用户填写账号密码登录,填写正确提示“登录成功”;反之提示“登录失败”,用户重新登录。用例图如图2-2所示。图2-2注册登录用例图2.2.2商品搜索功能需求分析搜索功能为用户提供快速便捷的查找商品的服务,在搜索框中输入名称或关键字即可获得目标商品的信息。搜索后系统直接显示出符合搜索条件的商品,向用户展示商品的详情页面;用户搜索商品的关键字,系统显示模糊查找到的相关商品列表,用户在列表中选择目标商品。搜索功能一般提供给有特定目标的人群,并且不受登录注册的限制,游客也可以使用。用户在商城首页的搜索框输入想购买商品的名称或关键字,系统在数据库中迅速查询该商品。如果存在,则返回商品详情页;如果查询失败,系统则返回没有找到商品的提示信息。用例图如图2-3所示。图2-3搜索用例图2.2.3购物车功能需求分析购物车是用户保存欲购买商品和喜爱商品的一个表单。如果用户在浏览过程中有需要购买的商品或者不确定是否需要购买的商品,可以将其先行保存在购物车中。购物车可为未进行登录的用户在一定时间内提供保存商品的服务,为登录的用户永久提供商品保存服务。未登录用户可以将商品添加到购物车,查看购物车信息,但无法进行提交订单的操作,若需使用,则需登录。(1)用户在商品详情页点击添加至购物车选项,即可将当前商品添加至购物车。(2)当用户不需要改商品时可在购物车页面内选择移除该商品。(3)用户在购物车页面内点击对应商品旁边的“加号”则可增加该商品的数量,总价则根据所增加的商品价格进行同步更改,反之同理。(4)用户在浏览商品页面时可以点击右下角的购物车图标进入购物车页面,查看已添加的商品详情。(5)未登录的用户在购物车页面点击“去结算”按钮,系统引导用户先进行登录操作,并跳转至相应界面;若已登录,则跳转到购物车商品列表页面。用例图如图2-4所示。图2-4购物车用例2.2.4订单功能需求分析订单展示用户最终需要购买的商品,商品价格,同时生成用户的收件地址等收货信息。用户通过订单功能,查看购买商品的种类、数量和价格是否有错误;通过填写或在已有的收货地址中选择,确保可以准确的收到商品;通过订单功能,可进入支付页面进行支付操作。(1)用户通过点击购物车中的“结算”按钮,进入订单页面;如未登录,则系统引导用户进行登录操作;反之则跳转到订单页面。(2)用户在订单中查看购买物品的信息,如果信息错误或者用户希望返回购物车修改有购买欲望的商品,则用户点击返回购物车按钮可返回到购物车页面。(3)初次使用订单功能的用户需要填写收货地址、收货电话等信息,点击“保存”,收货信息保存到数据库中,用户再次登录可选择已经填写的信息,无需再次填写。(4)用户填写收货信息,系统获取数据库中当前账号以往收货信息列表,用户在列表中选择之前的收货信息或新增收货信息。(5)用户确认无误后,点击“结算”按钮,跳转进入支付页面。如图2-5所示。图2-5订单用例图2.2.5支付功能需求分析系统为用户提供第三方的在线支付功能,对接支付宝,微信系统。(1)用户在订单页面点击“提交”按钮从而跳转到支付页面,点击“返回”则返回至购物车页面。(2)用户在支付页面选择自己需要的第三方支付方式,点击“支付”按钮,系统弹出第三方支付平台,引导用户完成商品支付流程。(3)支付页面商品价格信息、用户的购买数量和需要付款的金额大小。用例图如图2-6所示。
图2-6支付用例图2.2.6商品管理功能需求分析商品管理由系统管理员通过后台管理界面对商品进行操作,包括新增商品、查询已有的商品列表。(1)管理员在浏览器输入后台管理系统的网址进入后台主页,点击“新增商品”选项,系统弹出商品信息输入框,管理员输入商品名称、商品类别、价格以及对应积分等信息并提交,系统对输入的信息进行核验,如果核验成功,则返回新增商品成功。(2)管理员通过点击查询选项,系统显示查询出的商品列表,每页显示部分商品,管理员通过下拉列表栏来查看完整商品列表。用例图如图2-7所示。图2-7商品管理用例图2.2.7内容管理功能需求分析网站内容的管理是对网站前端展示内容的管理。(1)管理员点击“分类管理”按钮,系统按照商品分类的树形结构进行展示,包括父节点和子节点。(2)管理员点击“新增”按钮,跳转到新增页面,管理员输入新增的分类名称、权重、所属区域,系统新增相应的内容分类。(3)管理员点击“新增商品”按钮,系统显示商品分类列表,管理员选择将要添加分类的节点,如果选中的不是分类树的叶子节点,系统提示无法在该节点添加商品,管理员需要重新选择;如果选中的是分类树的叶子节点,系统弹出商品内容输入框,管理员填写商品内容信息并提交,系统返回“添加商品内容成功”的提示信息。用例图如图2-8所示。图2-8内容管理用例图2.3系统非功能需求分析易使用性:系统的用户大多数为未受过专业培训的普通人,系统的页面设计需要美观大方,布局分配合理,突出商城的热销商品和推荐购买商品,根据不同的节日更换不同的主题页面。系统的操作流程不能繁琐,符合用户购买商品的思维习惯。安全性:由于用户在购买商品时,向商城提供了个人私密信息,系统需要保证用户的信息不外泄。用户填写的登录密码,系统应加密保存,防止除用户以外的其他使用者登录该用户的账号,进行非法操作,造成用户的经济损失。即时响应:用户进行操作时,系统的响应速度应在1秒以内。系统使用异步更新的方式,用户填写信息,系统实时验证并反馈,无需用户提交等待。可靠性:系统应具有健壮性,除系统维护阶段,应24小时保证用户可以正常使用系统功能。在对系统更新、系统业务扩充时,不影响用户正常使用原有功能。并发性:在商城进行特殊的促销活动时,或者特定的时间段和特定的节假日,商城的在线人数将是平时的几十倍甚至几百倍,系统需要有应对高并发的能力,保证系统在用户高并发量访问时正常工作,不宕机。系统在高并发的时间段无需保证非重要数据的实时同步,相对不重要的数据可在系统相对空闲时再进行数据同步。扩展性:为应对不断扩大的业务,系统架构应灵活,具备可扩展性,在设计时满足高内聚低耦合的要求。面向接口设计,扩展功能,添加新的模块只需在原有系统中引入接口,更改特定模块功能时只更换该模块,不影响其他模块的正常工作。3.系统概要设计3.1系统逻辑架构概要设计系统基于MVC的设计模式和面向服务的分布式架构,基于MVC的设计模式使系统分为Controller层,Service层和Dao层。Controller层构成面向服务架构的表现层,Service层和Dao层构成面向服务架构的服务层。系统逻辑架构图如图3-1所示。图3-1系统逻辑架构Controller层:负责控制业务模块的流程,以及视图的转换。Controller的目的是用于接收浏览器的请求并根据请求的不同调用不同的业务逻辑处理模块进行随后的操作处理。Service层:业务逻辑层,负责业务具体的逻辑处理模块。Dao层:数据访问层,可以与数据库进行访问以及增删改的操作;当请求是查询数据库中的信息时,返回的是数据表中的数据对象;当请求为增加、删除和修改时,返回结果为是否成功的布尔值。3.2系统功能概要设计3.2.1登录功能概要设计用户在登录页面输入用户名和密码,系统首先校验通过比对数据库中的数据来判断输入的用户名和密码是否正确,如若不正确,则用户需要重新输入正确的信息;反之,将用户名和密码存入Session中。系统生成的令牌作为Session的键,用户信息作为Session的值,将该键值对存储在Redis的缓存中,保存用户信息同时设置Session的过期时间,系统向用户显示登录成功,将Session放入Cookie中,由用户的浏览器携带,用户再次登录时,服务器读取Cookie,取出SessionID,判断两次登录是否为同一用户。3.2.2注册功能概要设计在登录页面的表单里填写用户名、密码、邮箱和验证手机号的基本信息,填写后完成点击注册按钮,将表单提交给后台进行验证。系统校验用户名、密码或手机号任何一项是否为空或非法。如果为空,则提示“不能为空”;判断输入密码和确认密码是否相同,如果不同,则提示“重新输入”。判断输入的信息是否符合要求,如不符合则提示“非法输入”。如果以上校验通过,则注册页面向后端发送请求,验证用户名、邮箱和手机号等个人专属信息是否已经在数据库中存在。如果用户不存在,则注册成功,系统将用户信息存入数据库;如果用户的任意一项或多项信息存在,则返回给用户提示信息“注册失败”,用户重新填写。3.2.3商品搜索功能概要设计用户进行搜索时,首先在搜索框中输入查询条件,系统根据查询条件查询索引库中是否有符合该条件的数据,如果搜索到商品列表,则将该商品列表及总页数返回,并根据设置的每页可显示商品数显示商品;如果没有搜索到商品列表,则系统向用户返回没有查询到相关商品的提示信息。3.2.4购物车功能概要设计登录判断购物车分为未登录状态下的购物车和登录状态下的购物车,用户是否进行了登录操作决定着系统将用户个人的购物信息暂时存储到哪个位置。当用户使用购物车时,系统首先区分用户是否进行了登录操作,通过登录系统从用户的Cookie中获取的登录信息Session中的token,如果token没有值,说明用户暂未登录,则购物车信息保存在Cookie中;如果取到token信息,但调用登录系统判断token已过期,说明用户登录过期,则购物车信息保存在Cookie中;反之未过期,则说明用户是登录状态,则将购物车中的相关商品信息保存于Redis中;如果用户先在未登录时添加了购物车,然后进行登录操作,则系统将Cookie和Redis中的购物车合并为一个购物车,将其信息存储在Redis中。未登录状态的购物车功能1.添加商品功能添加商品到购物车时,从Cookie中取出购物车的列表,判断该列表是否存在。如果存在,则将相应商品的数量相加;如果列表不存在,则根据取到的商品ID查询商品的信息,把商品添加到商品列表,向用户返回商品已经成功添加到购物车的提示信息。2.查看购物车列表功能用户点击“去结算”按钮,系统会跳转到购物车列表页面,展示用户添加进去的商品信息,系统从用户的Cookie中获得对应的商品列表,3.删除商品功能用户如若需要删除商品,则系统从用户的Cookies中获得购物车列表相关信息,并遍历该列表,找到用户要删除的商品项,随后将该商品的相关信息全部删除,最后将新的购物车列表写回到Cookie里,删除成功,系统返回新的购物车列表。登录状态的购物车功能1.添加商品功能当用户在登录状态下进行操作向购物车添加商品信息时,是向Redis中添加购物车的信息进行存储,Redis中存放数据的形式以键为用户ID,值为哈希值。哈希值的键为商品ID,值为商品信息。添加时分两种情况,如果商品的ID存在,则将相同商品的数量进行累加;反之不存在,则根据商品ID从数据库中取出商品的信息并存入在Redis中。2.展示购物车列表用户点击“去购物车结算”后,系统接收url请求跳转到购物车列表展示页。如果用户登录前并没有向购物车中添加任何商品,则用户Cookie中的商品信息部分为空,系统从Redis缓存中取出用户登录后保存的购物车信息并展示;如果用户在登陆前和登陆后均向购物车添加商品,然后点击“去购物车结算”按钮,则系统会从用户的Cookie中和Redis缓存中取出购物车信息并将其合并展示。3.删除商品功能用户点击“删除商品”,系统将缓存中存放的商品数据删除。3.2.5订单功能概要设计用户在购物车页面点击“去结算”时,系统首先使用拦截器拦截用户的申请,其次判断用户是否已经登录;如果用户还未登录,则系统跳转到登录界面引导用户进行登录操作,登录完成后自动跳转到订单页面;如果已登录,则系统直接跳转到订单页面。展示收货地址和购物车中商品的列表。3.2.6商品管理功能概要设计1.商品添加店家管理员在后台管理系统内点击添加按钮会跳转到添加商品页面,随后填写商品价格、图片、对应积分、所属分类等相关信息,点击提交按钮进行提交操作给系统,系统根据表单生成商品的ID,并在表单对象中插入创建时间、更新时间等属性并存入到数据库中。2.商品查询管理员在后台管理系统中输入相关信息并点击“查询商品”按钮,系统会查询数据库获得商品列表并展示出来,并利用分页插件PageHelper,将查询到的列表分页显示。显示的页面中包括查询到的商品列表、总页数、当前页数、每页记录数。3.2.7内容管理功能概要设计1.内容分类管理系统管理员点击“内容分类管理”按钮,系统根据请求加载和显示内容分类的树形列表,如果管理员选择父节点,则系统无需加载叶子节点;如果管理员选择叶子节点,则系统根据父节点ID查找叶子节点并显示。管理员点击相应节点添加分类信息,随后系统进行接收分类信息并将其添加到数据库中保存,返回成功的提示信息。2.内容管理系统管理员点击“内容管理”按钮后,系统开始加载出内容分类的列表,根据管理员点击的分类按钮进行相关的判断;如果管理员点击的是父节点,则系统根据父节点ID查找子节点并显示;反之如果点击的是子节点,则系统根据子节点ID查找数据库中属于该子节点的商品列表并显示。管理员在显示出的列表中新增商品后,系统接收新增商品的数据并插入到相应数据表中,返回添加内容成功提示信息。3.3系统使用框架和技术基于JavaEE的企业级开源框架数量众多,选用合适的框架可以在节约人力物力成本的同时最大化满足系统对于功能和性能的要求。合适的框架可以事半功倍,而不合适的框架可能给系统带来不可预期的负面效果,甚至拖垮整个系统。3.3.1MVC设计模式MVC设计模式是目前互联网系统常用的架构设计模式,其中的M指模型,包含了系统中的各种数据;V指视图,负责将模型的数据包装成页面展现给用户;C指控制器,负责接收用户请求并控制业务层处理请求。MVC设计模式的优点是将系统解耦成单一功能的模块,方便增加删除和替换。当业务增加时,不用重构原有系统,只需在原有系统中添加接口即可实现功能的变动。其结构如图3-2所示:图3-2MVC设计模式图3.3.2Spring+SpringMVC+MyBatis框架Spring框架Spring是一个分层的应用轻量级开源框架。拥有web层、业务层和持久层的一站式解决方案.两大核心为控制反转和面向切面。Spring容器在系统中负责自动装载和创建Java资源,Java资源也称JavaBean。同时通过在JavaBean的配置文件中配置类与类依赖关系描述的方式,使对象关系解耦,达到简化开发,方便集成其他开源框架和第三方类库的目的。Spring框架结构图如图3-3所示。图3-3Spring框架结构图SpringMVC框架SpringMVC是一种基于MVC设计模式,使用Java语言实现的请求驱动类型的轻量级Web框架,将web层进行职责解耦。SpringMVC框架各模块之间协调运作,处理用户发送的请求,并将处理后的结果,返回给用户使用。SpringMVC的6个组件具体如下:DispatcherServlet前端控制器:用在接收用户发送的请求的情况下。当用户在浏览器输入url访问地址时,访问请求会最先到达DispatcherServlet,再通过DispatcherServlet调用其他的SpringMVC组件来完成其它工作,前端控制器的存在极大的降低了模块之间的耦合。HandlerMapping处理器映射器:用于接受前端控制器的调用,并且根据需要请求的url找到对应于该url的处理器,生成处理器Contrller和处理器适配器HandlerAdapter的对象,返回给前端控制器。HandlerAdapter处理器适配器:该适配器是设计模式中适配器模式的应用,其功能是对处理器Controller进行执行。Controller处理器:Controller处理器接受HandlerAdapter处理器映射器的调用,并返回ModelAndView。ViewResolver视图解析器:ViewResolver负责view视图的解析,并将视图进行渲染,渲染后的结果以页面的形式发送返回浏览器,然后浏览器将该页面展示给用户使用。View视图:View视图是一个接口,它通过页面模板技术或页面标签将模型数据以前端页面的方式展示给用户使用,具体的页面根据需要的不同需求进行开发。SpringMVC的框架结构图如图3-4所示。图3-4SpringMVC框架结构图MyBatis框架MyBatis的框架结构分别是如下几个部分:配置加载:MyBatis的配置来源于配置文件和Java的注解,MyBatis通过传入参数的映射配置的方式,执行相关的SQL语句和结果映射配置,将SQL语句的配置信息加载成一个MappedStatement对象并存储在内存中。SQL解析:API接口层接收传入的SQL语句ID和可以包括基本类型、JavaBean的对象,MyBatis可以根据ID找到对应期望的MappedStatement,再参考传入参数的对象对后者进行解析,之后得到要执行的SQL语句和参数。SQL执行:先将经过SQL解析得到的SQL语句和参数放入数据库中执行,最后得到相关结果。结果映射:将SQL语句执行后的结果按照映射的配置的方式转换成对应的JavaBean或者基本数据类型,最后将得到的最终结果返回。框架结构图如图3-5所示。图3-5MyBatis框架结构图SpringBoot简介用微服务框架Springboot对平台进行二次开发,采用服务化的组件开发模式,实现了复杂的业务功能。SpringBoot首先继承了原有Spring框架的长处,全新型微服务系统基础架构。该框架使用了自己特定的方式进行配置,不需要定义样版化配置,内部含有Tomcat的应用服务,优化了Maven的配置减少了开发人员的工作量,还提供了startPOM来进行包管理,同时快速启动一个web容器,内部含有servlet容器,因此降低了其对环境的要求,可以使用命令直接执行项目。在开发完整功能的微服务时,会遇到所有繁琐的事情。采用SpringBoot可以在很大程度上来简化开发模式,开发人员想要集成自己习惯的常用框架时它都有对应的组件支持。它具有以下特点:(1)使用Spring项目引导页面可以在几秒构建一个项目,方便快捷。(2)创建后就可使用,无代码生成,也无需配置XML文件,也可以修改相关默认值进而来满足特定的需求。(3)方便对外输出各种形式的服务,如RESTAPI、WebSocket、Web、Streaming、Tasks。(4)非常简洁的安全策略集成。(5)支持关系数据库和非关系数据库。(6)内部包含了一些大型项目中常见的非功能性特性,支持运行期内嵌容器,如Tomcat、Jetty。(7)SpringBoot自动管理相关依赖,自带应用的监控。(8)强大的开发包,支持热启动。MySQL数据库简介MySQL数据库原本是由瑞典的名为MySQLAB公司开发的中小型数据库管理系统,但在2009年被甲骨文公司收购,现在是其旗下的一个成熟的开源产品。它是世界范围内使用非常广泛的数据库之一,根据数据库权威网站DB-Engines(/)的数据统计,截止2021年5月为止,MySQL位于排行榜第二名的位置,具体如图3-6所示图3-6数据库排行榜MySQL使用者人数众多,在其发展历程中,经过原始开发者以及社区爱好者不断增强与改进,目前MySQL运行稳定,架构清楚,源代码质量高。其特点如下:(1)支持多线程,继而可以充分利用数据库所在操作系统平台下的CPU资源。通过服务器/多客户端的形式支持多进程,即支持多用户同一时间连接一个MySQL数据库服务器。(2)自身携带的优化器在很多时候可以极大程度优化用户编写的SQL查询语句,提高查询速度。(3)为了提高通用性,MySQL提供了许多国家语言的编码支持,现在通常使用utf-8编码,该编码能够支持世界上几乎所有的语言。(4)提供TCP/IP、ODBC等多种途径进行客户端与服务器的通信。(5)可以快速处理拥有上千万条记录的数据表,每一记录代表一行数据。(6)日志系统确保机器故障之后能够快速恢复。图3-7MySQL结构图3.4其他技术3.4.1系统管理工具MavenMaven是一个使用在Java项目管理的跨平台的自动化构建工具,在系统中的职责包括三大模块分别是如下:项目构建:Maven的特点导致主动免除了手动搭建项目的繁琐流程,提供了项目清理、初始化、编译、测试、打包、部署等主要构建步骤,这些步骤由Maven内置插件完成,无需手工编写脚本文件,减少了程序员的任务量。依赖管理:由于java应用中包含的大量第三方类库,这些类库因为相互依赖而可能导致版本冲突和依赖臃肿。通过在Maven的配置文件pom中加入依赖,即一个标识构件名字、版本、仓库中所在位置的坐标,Maven自动在本地或中央仓库寻找构件。由于其具有传递性依赖的机制,模块只需要配置直接依赖,间接依赖从上一层模块继承。项目信息管理:Maven的pom配置文件中集中配置了模块所依赖的其他模块以及插件信息,通过修改查看pom文件就可以完成项目信息的管理。在系统中,因为系统被拆解成了许多独立的Maven项目,项目之间协调运行,因此使用Maven的聚合特性将各个项目聚合在一起构建,提取出父Maven项目,用于管理子项目依赖信息,子项目在父项目中选取所需依赖进行配置。3.4.2数据库缓存RedisRedis是一个高性能的key-value非关系型的数据库,也称为数据结构存储服务器。Redis是基于内存运行的,查询效率高于关系型数据库且具有良好的容灾性。有五种数据结构:字符串、列表、哈希、集合、有序集合,这五种数据结构都是以键值对的方式存在,使得Redis具有良好的灵活性。因此本系统使用Redis作为数据库的缓存,Redis介于服务层与持久层之间,存储前台访问量高的数据。查询数据时,先在缓存中查询,若命中,则Redis直接将数据返回给用户;反之,通过Redis访问后端MySQL数据库,再返回数据。4.数据库设计4.1数据库设计原则本系统用到高性能的数据库MySQL和Redis,两种不同类型数据库的结合有效优化了数据读取的性能,使系统能快速响应请求。对于MySQL数据库,主要存储各类用户信息在硬盘上。MySQL对表的设计要求遵循基本范式标准,每个基本项属性不可再分,非主键字段依赖主键,非主键字段之间不能互相依赖。数据类型越小运行的越快,因此数据类型的设计要尽可能简单,从而减少需要的CPU周期和CPU缓存。在索引的使用方面不要过度,当MySQL在对表进行增加、删除、修改等操作时,索引需要一起更新,索引的创建和维护等均对时间空间有影响,降低查询效率。对于Redis数据库,主要存储商品信息在内存中。使用非关系型数据库可以最大程度提高查询速度。通过Redis将不常变化的数据存储在内存中,数据信息有变更时刷新到硬盘中,Redis数据库的使用可以减少访问磁盘数据库的次数,需注意每个key所对应的数据不能过大。4.2数据库E-R图设计E-R图描述了系统数据库中数据表之间的关系。E-R图如图4-1所示。图4-1E-R图4.3数据库表的设计本系统数据表分为地区表、奖品信息表、销售记录表、商品分类表、头条轮播等表。每个表的设计包括表的字段、类型、字段大小、约束和注释。地区表:tb_area字段数据类型字段大小约束注释area_idint10非空、主键地区编号area_namevarchar200非空地区名priorityint10非空权重create_timedatetime默认空创建时间last_edit_timedatetime默认空最后编辑时间奖品信息表:tb_award字段数据类型字段大小约束注释award_idint10非空、主键奖品编号award_namevarchar256非空奖品名award_descvarchar1024默认空奖品描述award_imgvarchar1024默认空奖品图pointint20非空积分priorityint101默认空权重create_timedatetime默认空创建时间last_edit_timedatetime默认空最后编辑时间enable_statusint非空状态shop_idint10默认空、外键店铺编号销售记录表:tb_product_sell_daily字段数据类型字段大小约束注释product_idint10非空、主键、商品图编号shop_idint10非空、外键图片路径create_timedatetime默认空图片描述totalint10非空权重头条轮播表:tb_head_line字段数据类型字段大小约束注释line_idint10非空、主键头条编号line_namevarchar1000非空头条名称line_linkvarchar2000非空头条链接line_imgvarchar2000非空头条图片priorityint10非空权重enable_statusint2非空状态create_timedatetime默认空创建时间last_edit_timedatetime默认空最后编辑时间商品分类表:tb_product_category字段数据类型字段大小约束注释product_category_idint10非空、主键商品分类编号product_category_namevarchar100非空商品分类名priorityint10默认空权重create_timedatetime默认空创建时间shop_idint10非空、外键店铺编号用户信息表:tb_person_info字段数据类型字段大小约束注释user_idint10非空、主键用户编号namevarchar32非空用户名profile_imgvarchar1024默认空简介图emailvarchar1024默认空邮箱gendervarchar2非空性别enable_statusint2非空状态user_typeint10非空用户类型create_timedatetime默认空创建时间last_edit_timedatetime默认空最后编辑时间用户本地登录信息:tb_local_auth字段数据类型字段大小约束注释local_auth_idint10非空、主键用户本地登录编号user_idint10非空、外键用户编号usernamevarchar128非空账号passwordvarchar128非空密码create_timedatetime默认空创建时间last_edit_timedatetime默认空最后编辑时间商品表:tb_product字段数据类型字段大小约束注释product_idint10非空、主键商品编号product_namevarchar100非空用户名product_descvarchar2000默认空简介图img_addrvarchar2000默认空邮箱normal_pricevarchar100默认空性别promotion_pricevarchar100默认空状态priorityint10非空用户类型create_timedatetime默认空创建时间last_edit_timedatetime默认空最后编辑时间enable_statusint2非空状态product_category_idint10默认空商品分类编号pointint10默认空积分shop_idint10非空店铺编号商品图片表:tb_product_img字段数据类型字段大小约束注释product_img_idint10非空、主键商品图编号img_addrvarchar2000非空图片路径img_descvarchar2000默认空图片描述priorityint10默认空权重create_timedatetime默认空创建时间product_idint10非空、外键商品编号店铺信息表:tb_shop字段数据类型字段大小约束注释shop_idint10非空、主键店铺编号owner_idint10非空、外键拥有者编号area_idint10非空、外键区域编号shop_category_idint10非空、外键店铺分类编号shop_namevarchar256非空店铺名称shop_descvarchar1024默认空店铺描述shop_addrvarchar200默认空店铺地址phonevarchar128默认空电话shop_imgvarchar1024默认空图片地址priorityint10默认空权重create_timedatetime默认空创建时间last_edit_timedatetime默认空最后编辑时间enable_statusint10非空状态advicevarchar255默认空状态提示用户店铺信息表:tb_user_shop_map字段数据类型字段大小约束注释user_shop_idint10非空、主键用户店铺编号user_idint10非空、外键用户编号shop_idint10非空、外键商店编号create_timedatetime10默认空创建时间pointint10非空积分店铺成员信息表:tb_shop_auth_map字段数据类型字段大小约束注释shop_auth_idint10非空、主键店家编号employee_idint10非空、外键雇员编号shop_idint10非空、外键店铺编号titlevarchar255默认空头衔title_flagint10非空头衔权限create_timedatetime默认空创建时间last_edit_timedatetime默认空最后编辑时间enable_statusint10非空状态店铺分类表:tb_shop_category字段数据类型字段大小约束注释shop_category_idint10非空、主键店铺编号shop_category_namevarchar100非空拥有者编号shop_category_descvarchar1000默认空区域编号shop_category_imgvarchar2000默认空店铺分类编号priorityint10非空店铺名称create_timedatetime默认空店铺描述last_edit_timedatetime默认空店铺地址parent_idint10非空、外键父级店铺编号奖品领取表:tb_user_award_map字段数据类型字段大小约束注释user_award_idint10非空、主键用户奖品编号user_idint100非空、外键用户编号award_idint1000非空、外键奖品编号shop_idint2000非空、外键店铺编号operator_idint10非空、外键上级编号create_timedatetime默认空创建时间used_statusint10非空状态pointint10非空积分店家产品表:tb_user_product_map字段数据类型字段大小约束注释user_product_idint10非空、主键店家产品编号user_idint10非空、外键店家编号product_idint10非空、外键商品编号shop_idint10非空、外键店铺编号operator_idint10非空、外键上级编号create_timedatetime默认空创建时间pointint10非空积分用户微信信息表:tb_wechat_auth字段数据类型字段大小约束注释wechat_auth_idint10非空、主键用户微信编号user_idint10非空、外键用户编号open_idvarchar255非空开启编号create_timedatetime默认空创建时间5.详细设计5.1系统的基本流程 O2O商城的基本历程如下,先浏览器中输入网址则会跳转到登录界面,在登陆界面则输入用户名密码进行登陆操作。如图5-1所示:图5-1输入用户名和登陆密码后,系统判断用户身份信息并跳转至特定页面,例如本次身份信息为管理员,则显示所有的店铺相关信息,点击进入则可以对相关店铺进行编辑操作。如图5-2、5-3所示。图5-2图5-3if(data.success){varshopCategoryList=data.shopCategoryList;varhtml='';html+='<ahref="#"class="button"data-category-id="">全部类别</a>';shopCategoryList.map(function(item,index){html+='<ahref="#"class="button"data-category-id=' +item.shopCategoryId+'>'+item.shopCategoryName+'</a>';});5.2店铺信息界面在店铺信息页面可以填写修改表单信息,填写修改商铺名称、商铺分类、所属区域、地址电话、以及联系方式,填写完成点击提交,将表单提交。系统校验用户名、或手机号任何一项是否为空。如果为空,则提交失败;校验输入验证码码和确认验证码码是否一致,如果不一致,则提示“验证码错误”。如果以上校验通过,则页面向后端发送请求,提交修改信息。如图5-4。图5-4。varshopId=getQueryString('shopId');varisEdit=shopId?true:false;varinitUrl='/o2o/shopadmin/getshopinitinfo';varregisterShopUrl='/o2o/shopadmin/registershop';varshopInfoUrl="/o2o/shopadmin/getshopbyid?shopId="+shopId;vareditShopUrl='/o2o/shopadmin/modifyshop';5.3商品管理界面在商品管理页面可以修改商品所对应的积分额度,点击编辑进行修改商品名称、排序优先级、商品、商品展示图以及描述,填写完成点击提交,将表单提交。系统验证输入的验证码与期望的是否相同,如不同,则提示“验证码错误”。如果校验通过,则页面向后端发送请求,提交修改信息。如图5-5、图5-6。图5-5图5-6varproductList=ductList;vartempHtml='';productList.map(function(item,index){vartextOp="下架";varcontraryStatus=0;if(item.enableStatus==0){textOp="上架";contraryStatus=1;}else{contraryStatus=0;}5.4类别管理界面在类别管理页面可以修改类别所对应的权重优先级,也可对某类商品进行下架删除。也可以点击新增从而增加类别,并设置优先级。编辑完毕后,点击提交则页面向后端发送请求,提交信息。如图5-7。图5-75.5消费记录页面在消费记录页面可以查看用户在某时刻的购物记录,以及商品所对应的积分和操作的店员信息。如图5-8。图5-85.6授权管理界面在授权管理界面可以删除店员信息,也可通过微信扫码向来添加员工。如图5-9。图5-9if(item.enableStatus==1){textOp="删除";contraryStatus=0;}else{contraryStatus=1;}5.7商城首页顾客在商城首页页面可以查看所有商店,也可以根据商店分类来进行查看。如图5-10、图5-11。图5-10图5-116.功能测试功能测试也叫黑盒测试,不考虑系统的内部架构和逻辑代码,只考虑需要测试的各个功能,输入输出结果与期待是否相同。通过对注册登录功能、地区查询、商品店铺信息增删改查、员工信息录入、支付功能、后台管理等功能设计测试用例,执行系统测试。6.1注册登录功能测试注册登录测试用例表如表6-1所示。编号测试用例测试流程预期结果实际结果是否通过1注册微信扫码进行注册注册成功注册成功是2登录填写登录信息并点击“登录”返回“登录成功”的提示信息,主页显示登录者用户名返回“登录成功”的提示信息,主页显示登录者用户名是注册登录功能测试表6-16.2店铺管理功能测试店铺管理功能模块的测试用例包括新增店铺、查看店铺列表、店铺分类展示、新增店铺分类和新增店铺。店铺管理测试用例表如表6-2所示。编号测试用例测试流程预期结果实际结果是否通过3新增店铺点击“新增店铺”按钮填写店铺信息并提交弹出店铺信息输入页面,管理员填写完毕点击“提交”后,返回新增店铺成功弹出店铺信息输入页面,管理员填写完毕点击“提交”后,返回新增店铺成功是4查看店铺点击“查看店铺”按钮显示店铺列表信息,并分页显示显示店铺列表信息,并分页显示是5店铺分类列表展示点击“类别分类”按钮显示店铺分类列表,列表节点根据用户点击依次展开显示店铺分类列表,列表节点根据用户点击依次展开是6新增店铺分类输入新增店铺分类系统返回新增店铺分类成功提示信息系统返回新增店铺分类成功提示信息是7新增店铺输入店铺信息系统返回新增店铺成功提示信息系统返回新增店铺成功提示信息是店铺管理功能测试6-26.3商品管理功能测试商品管理功能模块的测试用例包括新增商品、查看商品列表、商品分类列表展示、新增分类以及新增商品。商品管理测试用例表如表6-3所示。编号测试用例测试流程预期结果实际结果是否通过8新增商品点击“新增商品”按钮填写商品信息并提交弹出商品信息输入页面,管理员填写完毕点击“提交”后,返回新增商品成功弹出商品信息输入页面,管理员填写完毕点击“提交”后,返回新增商品成功是9查看商品点击“查看商品”按钮显示商品列表信息显示商品列表信息是10商品分类列表展示点击“类别分类”按钮显示商品分类列表,列表节点根据用户点击依次展开显示商品分类列表,列表节点根据用户点击依次展开是11新增商品分类输入新增商品分类系统返回新增商品分类成功信息系统返回新增商品分类成功信息是12新增商品输入商品信息系统返回新增商品成功提示信息系统返回新增商品成功提示信息是商品管理测试表6-36.4搜索功能测试搜索模块的测试用例是商品搜索。搜索测试用例表如表6-4所示。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度办公用品及办公设备租赁一体化服务合同
- 二零二五年度养老社区入住与紧急救援协议3篇
- 2025年度养猪场养殖废弃物处理设施建设合同3篇
- 2025年度农村房屋买卖合同及土地承包权转让与配套设施租赁及物业管理合同
- 2025年度农副产品线上与线下销售融合合作协议3篇
- 二零二五年度危化品公路货物运输安全管理合同3篇
- 二零二五年度公司经理战略合作伙伴关系聘用协议3篇
- 二零二五年度美发行业美容美发行业投资合作协议书3篇
- 2025年度农村自建房合同协议书(含节能环保建筑材料)
- 二零二五年度农村房屋置换项目合作框架协议
- 人教版(PEP)小学六年级英语上册全册教案
- 广东省广州市海珠区2023-2024学年六年级上学期月考英语试卷
- 消防水域救援个人防护装备试验 大纲
- 机电样板施工主要技术方案
- 涉税风险管理方案
- 青岛市2022-2023学年七年级上学期期末道德与法治试题
- 高空作业安全免责协议书范本
- 石油化学智慧树知到期末考试答案章节答案2024年中国石油大学(华东)
- 手术后如何防止排尿困难
- 特种设备“日管控、周排查、月调度”表格
- 重点关爱学生帮扶活动记录表
评论
0/150
提交评论