版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于区SpringBoot的快递代收系统设计与实现摘要在现在这个技术化的时代,计算机如同以前的电视机一般进入了家家户户的生活,人们的生活也跟网络的联系走向了白热化。计算机的使用广泛让人们的生活向轻松、快捷的道路上越走越好,为我们的学习、生活和工作带来了极大的便利。例如,快递代收的管理涉及大量数据和信息处理,这使得快递代收系统的操作和管理特别重要。因此,建立特定的现代互联网多媒体信息技术对于快递代收管理非常重要。使用快递代收系统是提高管理效率的有效方法,就可以很好的解决数量信息庞大的问题。快递代收这个业务目前在很多的地方都是非常有必要的存在,大到一个国家小到一个村落都是现如今生活中必不可少的存在了,同时快递代收系统的出现也因此变得更加有必要。快递代收系统运用了SSM框架、MySQL数据库和Mybatis等技术设计,确保系统开发完成后的性能完整。快递代收系统使用模块化的设计执行基本操作,如查找、增加和管理信息。根据管理员和用户的需求,系统采用软件综合方法,包括系统层次结构、业务和实施分离、逻辑和数据分离;就功能方面来说,该系统最终开发是比较完整的。关键词:快递代收,SSM,MySQL ABSTRACTInthistechnologicalera,computershaveenteredeveryhousehold'slifeliketelevisionsinthepast,andpeople'sliveshavealsobecomeincreasinglyconnectedtotheinternet.Thewidespreaduseofcomputershasmadepeople'sliveseasierandfaster,bringinggreatconveniencetoourlearning,life,andwork.Forexample,themanagementofexpressdeliverycollectioninvolvesalargeamountofdataandinformationprocessing,whichmakestheoperationandmanagementoftheexpressdeliverycollectionsystemparticularlyimportant.Therefore,theestablishmentofspecificmodernInternetmultimediainformationtechnologyisveryimportantforexpresscollectionmanagement.Theuseofexpressdeliverycollectionsystemsisaneffectivewaytoimprovemanagementefficiency,whichcaneffectivelysolvetheproblemoflargeamountsofinformation.Thebusinessofexpressdeliverycollectioniscurrentlyverynecessaryinmanyplaces,fromacountrytoavillage,anditisanessentialpresenceindailylife.Atthesametime,theemergenceofexpressdeliverycollectionsystemshasbecomeevenmorenecessary.TheexpressdeliverycollectionsystemisdesignedusingtechnologiessuchasSSMframework,MySQLdatabase,andMybatistoensurecompleteperformanceaftersystemdevelopment.Theexpressdeliverycollectionsystemusesamodulardesigntoperformbasicoperationssuchassearching,adding,andmanaginginformation.Accordingtotheneedsofadministratorsandusers,thesystemadoptsasoftwareintegrationapproach,includingsystemhierarchy,separationofbusinessandimplementation,andseparationoflogicanddata;Intermsoffunctionality,thefinaldevelopmentofthesystemisrelativelycomplete.Keywords:Expresscollection,SSM,MySQL目录11697第1章绪论 I第1章绪论1.1背景及意义最近这几年,随着网络技术的发达,新型售货方式也变得越来越方便快捷,从而诞生了一个兴新行业——电子商务、网店售卖产品。电子商务行业发展迅速,这样网上购物的情况也日益增加,网上购物的人群也越来越多,同时就使得快递业务量逐年攀升,现阶段快递业务的需求已经可以说是达到日常化,已经进入了绝大部分人的生活当中了,且人们对于快递收取的便捷性和安全性需求也逐渐增加。然而,传统的快递收取方式存在一定的问题,如:快递员配送时间不固定,用户无法及时签收;快递包裹丢失或损坏等情况。因此,开发一款快递代收系统可以解决这些问题,提高快递配送的效率和用户体验。现如今,随着网购规模的不断增加,快递代收系统可以帮助驿站更高效地完成包裹的收发工作,提升整体运营效率。性能功能更好的快递代收系统可以实时更新包裹信息,防止因信息延误而出现一些不必要的麻烦,降低运营成本。快递代收系统可以方便收件人随时查询包裹状态,了解包裹何时送达,提高用户满意度。系统可以提供相关的数据统计,方便负责人了代收站点的信息内容,做出相应决策。快递代收系统可与其他业务(如广告、社区服务等)相结合,让获利的渠道也变得更加多样。拥有先进且稳定的快递代收系统,有助于驿站在激烈的市场竞争中脱颖而出,增加市场份额。对于需求用户来说更好的解决了广大人群对快递收取并不能及时的问题,相对于大规模人群来说,比如学生人群庞大相对来说更加方便,更好解决因各种原因无法及时取件的问题。1.2国内外研究概况现在来说,其他一些发达国家的理论界和一些其他的论坛里正在进行进一步的研究。这些管理概念的应用及其通过软件系统的实现将需要一些时间来解决现代企业管理中的实际问题。国内研究概况研究者们关注如何利用物联网、大数据、人工智能等技术提高快递代收的效率和准确性。例如,通过智能快递柜、快递机器人等设备实现无人化配送,以及利用数据分析预测快递需求和优化配送路线。为了提高用户满意度,研究者们在用户界面、交互设计等方面进行优化,让用户在代收快递过程中感受到便捷和舒适。此外,部分研究者关注如何通过情感化设计提升用户对快递代收系统的依赖程度。随着快递代收业务的快速发展,信息安全问题日益凸显。研究者们关注如何在保障用户隐私的前提下,确保快递信息的安全传输和存储。例如,利用区块链、加密等技术手段来保护用户数据。我国政府针对快递代收业务制定了一系列政策法规,以规范市场秩序。研究者们关注如何在遵守法律法规的基础上,推动快递代收业务的健康发展。随着快递包装废弃物数量的逐年攀升,环保问题成为研究者们关注的焦点。如何在保证快递代收业务快速发展的同时,实现绿色环保和可持续发展,成为当前研究的一个重要方向。1.3研究的内容本系统的开发设计与实现,从实际生活当中去了解系统的功能,平常我们开发一个系统一定要有一个大概的规划,计划好第一步干什么,需要哪些准备工作,这方面我做了以下的规划:首先对为何要开发一个快递代收系统进行介绍,开发该系统是用来干什么的,为什么要有这个系统的存在。(2)了解一下开发我们这个系统需要用到我们相关专业的哪一些技术栈,以及我们平常学习用到的是什么软件去开发一个系统。(3)系统肯定是根据实际情况去开发的,我们要从如今现实中去做调查来获取我们对系统功能的大体需求进行一个了解,来进行后续的系统各种功能操作的实施设计。(4)数据库表的设计:系统开发中数据库表的建立个人认为是一个系统开发的关键之一,因为一个系统的绝大部分操作都是关联着数据表的。(5)代码编写:表结构设计好了自然就该进行代码的编写,这里开始也就代表着系统开发的正式开始。(6)系统测试:系统开发完成后最后必须经过测试才能算真正的完成,这样不仅是为了发现系统的问题更是为了保证系统开发的完整性。第2章相关技术2.1Java语言和Springboot框架Java是一种面向编程语言,同时这也是我主要学习的一门编程语言,所以我才会选择这门语言作为本系统的主要开发语言。Java语言不仅有卓越的通用性、高效性、平台移植性和安全性,还可以广泛应用于个人PC、数据中心、移动电话和互联网,同时拥有全球最大的开发者专业社群。正是因为Java语言的简单性、可跨平台性,可移植性等优点使其成为很多计算机专业相关的大学生都选择其作为主要的系统开发语言[6]。Springboot框架是JavaEE中一个被广大开发者认可的广泛使用的框架,它相比于传统的spring、springcloud框架不仅更加简单功能也都具有,可谓是青出于蓝而胜于蓝。本系统主要使用Springboot来设计各种功能类接口,为前端页面提供所需要的数据。所以结合快递代收系统的需求及功能模块的实现,使用Springboot框架作为系统开发的主流框架是非常合适的选择,相信很多同学也是这样想的,对于快递代收系统的功能实现只能说是锦上添花,后续如果有功能需要增加也是非常的方便。该技术可以使系统更完善,更方便快速且符合当下主流开发技术需求[7]。2.2IntelliJIDEA开发环境IntelliJIDEA对于每一个学习Java的人来说都不会陌生,这款软件应该是目前使用率最高的一款软件了。该软件在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超常的,是一个既快捷又方便的代码开发工具[8]。个人在使用软件时发现,软件不仅可以单一的对于Java的开发,还可以连接数据库作为数据库的可视化界面软件使用,除此之外,对于系统的前端页面的代码编写也是可以在里面进行完成的,真正的做到了多用化的功能,这也是其方便特点的表现。IntelliJIDEA的功能相当完备,能够为J2EE的集成环境提供支持,它可以支持Java,HTML,SQL,Javascript,CSS,Spring技术等[9]。2.3Tomcat服务器Tomcat是一个Web服务器,其默认的端口号为8080,但是只是默认端口,既然有默认端口就说明端口号也是跨域自己改的,事实也正是这样。它还是一款免费的Web服务器有着两个图形界面的控制台,作为我们平常系统开发不管是学习还是做课设毕业设计都是非常适合的,所以学生在开发或者程序调试的时候,基本选这这个服务器使用。对于一个有点基础知识的人都知道,系统搭配一个好的服务器,可以很好的对功能界面进行访问。Tomcat就具有这样的功能[10]。2.4MySQL数据库MySQL数据库的功能是比较强大的,虽然还有一些大型数据库,但是MySQL对于我们写系统是完全够用的。MySQL里面的各种各样的索引技术可以让我们在操作数据库基本语句的时候查询的更加快速,让我们开发的系统性能相对来说更高。据我了解,MySQL数据库还是一个开源免费的数据库,这对于学生来说就是一个非常友好的的数据库。而MySQL最关键的一点,就是它的线程,它可以让你在处理数据的时候,拥有多条不同的路径,如果系统出了问题,无法打开某个页面,那么它就可以转换成相应的代码,然后进通过多次的数据信息进行分析和比较,由此来验证系统数据库中的逻辑性[11]。对于数据库的操作环境也是多样化的,不同电脑的操作系统也不会该数据库的使用有很大的影响。2.5SSM框架对于本专业的同学来说多多少少都了解一点,知道SSM框架一般指的是Spring+SpringMVC+MyBatis三种技术首字母的简称。SpringMVC框架是以MVC为核心的,通过插入和控制反转功能,为企业的业务逻辑提供了完整的系统框架。利用该结构,可将Sql语句与OOP指令相结合,实现对数据库结构数据的增加、删除、修改、检查等操作。其结构技术是互相作用的,这说明使用SSM框架相对于其它框架来说更具有实用性和灵活性。2.6Vue框架和ElementUI组件Vue框架技术用来开发系统界面的,目前通行的有2.0和3.0两个版本。本系统中我用的是Vue2.0技术,相比于vue3,我更加熟悉的是vue2,平常我写前端页面代码也是用的vue2技术,虽然两者大体相同但是更熟悉的写起来也更加顺畅。系统的页面搭建是利用Vue和Element-UI来实现的。其中\t"/weixin_64704029/article/details/_blank"element-ui是一个前端的ui框架,进入官网我们可以看到有很多已经写好的ui组件并且都可以直接进行使用,方便快捷又美观。
第3章系统分析3.1需求分析这种贴合生活日常的系统开发最好的就是直接去往对应的地点观察体验一下系统的使用就可以大概的了解需求的内容,再去网上了解一下以前的这方面是怎么解决的就能很好的对比出两者的优劣。这样的调查分析出来的结果才能更加符合实际情况的要求,以用户的角度去考虑系统的开发才能更好满足用户的需求[12]。再从工作人员也就是操作系统人的角度去体验系统,根据负责人的描述去做分析也是一样的效果。系统的开发可以根据需求可以进行增删改查快递的信息,满足了用户想要最快时间找到包裹的心理,可以节省大量时间,还可以提高负责人的工作效率[13]。3.2系统可行性分析3.2.1技术可行性科技的进步,推动了经济和社会的发展,也推动了整个行业进行数字化转型。一般从网站搭建的角度而言,开发该系统选用Java作为编辑语言,使用MySQL数据库存储数据。Java这门编程语言不但具有比较高的安全性和稳定性,还具有并行的能力。在进行需求分析的时候,首先要考虑的就是现有的技术,以及具体的技术,如果没有足够的技术,那么什么都是浮云,所以,在进行最终的分析之前,必须要对这一技术进行深入的分析。3.2.2经济可行性在这个全民上网的时代,信息技术的优势就体现了出来,在网络上,人们可以轻松的获得所有的资料和软件,这套系统并不需要太多的软件,只需要笔记本就可以了,再者说了此系统的效率性大于开发系统的成本。对于个体的经济投入者来说,网站的人力资源是最主要的资源,高昂的人力成本,迫使许多公司都要削减资源,选择更便宜的服务器,而对于开发网站的利益而言,可以通过一次开发长期使用。而开发人员每年的收益通常要比总的人力成本高,因此在经济模式上看,这种模式是切实可行的。3.2.3操作可行性操作的便捷性,主要在于在开发完成后,是否能满足使用者的需要,若能在短时间内解决当前的问题,则可以增加使用次数,而本系统所采用的网页模式,则是采用低风险性的浏览方式,在简单地接入之后,可以迅速地切换到不同的服务类型,服务方式也非常简单,只需要几个具体的步骤,就可以进行数据的分析。3.3性能分析1、关于快递代收系统的基本要求(1)功能模块实现:管理员端:用户管理、快递代收点管理、快递入库管理、快递出库管理、订单管理、用户信息管理等,用户端:快递代收、快递入库、快递出库、订单管理、用户个人信息(2)性能:兼容多种操作系统的使用,不会因为不是Windows系统而进不了该系统,进入系统后也能在操作上不会有明显的差异存在。(3)系统安全性:用户登录系统后的所有操作都通过管理员端可以一一进行监督,以防出现错误,登录的时候还会在后台经过审核才能进入系统。2、设计原则本系统主要的后端开发技术是运用的SSM技术,数据库用的则是MySQL数据库,这些技术都是在我平常学习写项目的时候基本用到的两种技术,可以很好的使我们开发的系统有较全面的完整结构。快递代收系统的设计与实现的核心设计思路是这样的:操作上可以简化繁忙的人工一件一件的反复登记,对于快递的信息可以快速的录入系统,在系统中就可以快速的查找到自己的快递,还可以很快的看出所有信息,要做到的就是一览无余,就是快捷方便。3、性能分析快递代收系统的开发最终肯定是面向于广大群众的使用,性能方面我就大概的介绍一下我认为必要的几个要求:安全性:在互联网的时代,尤其是这种使用人数极为庞大人群众多的系统,系统的安全问题是现在每个人都非常关注的问题,我采用了最普遍的账户密码登录模式保障用户的系统安全。防错性:系统操作的时候往往用户会有失手误点的可能性,这个时候系统的提示弹窗就可以使得在操作系统的时候减小这种事情发生。实用性:系统的开发是通过对用户需求分析后来开发的,所以系统的开发在实际生活中是否有实质性的使用意义就变得重中之重。3.4系统流程分析3.4.1操作流程系统登录流程图,如图所示:图3-1登录流程图3.4.2添加信息流程添加信息流程图,如图所示:图3-2添加信息流程图3.4.3删除信息流程删除信息流程图,如图所示:图3-3删除信息流程图第4章系统设计4.1系统体系结构快递代收系统的结构图4-1所示:网网网络管理员服务器和程序用户用户图4-1系统结构登录系统结构图,如图4-2所示:YY快递代收系统登录管理员/用户登录密码正确管理员界面用户界面图4-2登录结构图快递代收系统结构图,如图4-3所示:图4-3快递代收系统结构图4.2开发流程设计在系统开发之前,准备工作的时候我根据现今天社会需求进行了大概的需求分析。这个需求分析的作用最主要的目的就是为了在系统开发的时候进行一些必要数据信息的设计。比如系统的大概架构、数据库字段的设计、前端页面的设计等各方面的设计。可以很好的考虑到哪些东西是必要的,哪些东西是可以省去的,以及还需要拓展一些什么信息,来保证系统既不会太过复杂化又保证了系统功能的完整性。前面这一步设计好了接下来在编码阶段,就只需要根据制定好的设计文档,进行对应的编码就可以了。最后的测试与调试阶段,需要做的是对系统进行全面的测试,例如功能、性能和安全测试等常规的测试。在这些都完成以后,需要进行调试工作,修复代码中的问题。测试与调试是确保系统质量的重要环节。以下是快递代收系统的开发对管理模块和系统使用的数据库大致流程分析,如图4-4所示。图4-4开发系统流程图4.3数据库设计原则E-R图又被称为实体联系图,这样可以直接看到每一个实体对应者哪些属性。实体和属性的关系可以分为三种:一:1对1(1:1),二:1对多(1:N),三:多对多(M:N)等几种关系。一般的表达形式为矩形框代表实体,椭圆形框代表属性,菱形框代表联系,而它们之间用连线进行联系。本系统的各模块的实体图如下:用户管理属性图如图4-5所示。图4-5用户管理实体属性图快递站点管理实体属性图如图4-6所示。图4-6快递站点管理实体属性图快递管理实体属性图如图4-7所示。图4-7快递管理实体属性图快递入库管理实体属性图如图4-8所示。图4-8快递入库管理实体属性图快递出库管理实体属性图如图4-9所示。图4-9快递出库管理属性图4.4数据表有了E-R图就可以根据里面的属性在数据库中进行表字段的数据,将每一个E-R图都设计出对应的数据表,为后期开发使用。其表字段结构如下用户表ER图表4-1yonghu用户表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPyonghuzhanghaovarchar25用户账号mimavarchar25密码yonghuxingmingvarchar20用户姓名xingbievarchar10性别touxianglongtext500头像yonghudianhuavarchar20用户电话shenfenzhenghaovarchar60身份证号快递站点ER图表4-2kuaidizhandian快递站点表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPzhandianmingchengvarchar20站点名称tupianlongtext500图片fuzerenvarchar10负责人kuaidishuliangint快递数量lianxifangshivarchar20联系方式chengliriqidate成立日期zhandiandizhivarchar25站点地址快递信息ER图表4-3kuaidixinxi快递信息表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPkuaididanhaovarchar30快递单号kuaidimingchengvarchar25快递名称fengmianlongtext500封面zhuangtaivarchar25状态yonghuzhanghaovarchar25用户账号yonghuxingmingvarchar20用户姓名yonghudianhuavarchar20用户电话快递入库ER图表4-4kuaidiruku快递入库表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPzhandianmingchengvarchar25站点名称zhandiandizhivarchar25站点地址kuaididanhaovarchar30快递单号kuaidimingchengvarchar25快递名称kuaidishuliangint入库数量tiaoxingmalongtext500条形码qujianmavarchar20取件码chukuzhuangtaivarchar20出库状态rukushijiandatetime入库时间yonghuzhanghaovarchar25用户账号yonghuxingmingvarchar25用户姓名yonghudianhuavarchar20用户电话快递出库ER图表4-5kuaidichuku快递出库表字段名称类型长度字段说明主键默认值idbigint主键主键addtimetimestamp创建时间CURRENT_TIMESTAMPzhandianmingchengvarchar20站点名称zhandiandizhivarchar25站点地址kuaididanhaovarchar30快递单号kuaidimingchengvarchar25快递名称kuaidishuliangint出库数量tiaoxingmalongtext500条形码qujianmavarchar20取件码chukushijiandatetime出库时间yonghuzhanghaovarchar25用户账号yonghuxingmingvarchar20用户姓名yonghudianhuavarchar20用户电话
第5章系统详细设计在上面几章我主要说了一下快递代收系统的需求分析和系统设计作了详细分析,只是有了一个大概的描述。本章我就详细的来介绍一下快递代收系统里面的各个模块的具体操做是如何实现的,包括实现的部分主要代码详情,以便更加直观更加方便的了解功能的实现。5.1后端功能实现一般系统的功能实现分为前后端分离开发两个模块。后端因为是SpringBoot框架,一般都会和其他各种技术整合使用,这就使得开发变得更加快捷,整合过程中会用到许多的Maven依赖,也是以配置的形式导入到框架中。后端中配置主要在配置文件导入相对应的jar包,其中还包括各种jar包所对应的版本。比如在pom.xml文件中添加lombok、mybatis、mysql-connector-java、mybatis-plus等的依赖,而后遇到问题所需要的各种依赖我就不都进行说明一下了。5.1.1登录功能实现根据输入的用户名和密码,通过UsersDao,依靠Mapper接口,通过mybatisplus链接数据库,查询得到数据。由于UsersDao。而BaseMapper类来自mybatisplus,所以UsersDao可以通过mybatisplus连接后端的数据库获取里面已经设计好的数据表,进而操作表里的数据。在数据层编写SQL语句可以用简单的注解方式,也可以通过自定义xml映射文件进行操作数据库表,我是以映射文件的形式操作的数据库表,即通过UsersDao.xml文件里SELECTu.*FROMusersu<where>1=1${ew.sqlSegment}</where>动态SQL语句查询,从users表中查询用户名和密码对比是否相同的记录。部分核心代码如下:@RequestMapping(value="/login")publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){UsersEntityuser=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",username));if(user==null||!user.getPassword().equals(password)){returnR.error("账号或密码不正确");}Stringtoken=tokenService.generateToken(user.getId(),username,"users",user.getRole());returnR.ok().put("token",token);}如果用户名和密码对比正确说明输入的数据都是正确无误的,就会生成token。Stringtoken=request.getHeader(LOGIN_TOKEN_KEY);把获取的token数据返回给前端进行判断,这样获取其实有一个好处:那就是只获取这一次之后,在短时间内这个命令会一直存在,反复登录的时候就可以直接进行对比,这样就可以提高系统的效率。获取token令牌的详细实现代码如下:loginPost(){this.$http({url:`${this.tableName}/login?username=${this.rulesForm.username}&password=${this.rulesForm.password}`,method:"post"}).then(({data})=>{if(data&&data.code===0){this.$storage.set("Token",data.token);this.$storage.set("role",this.rulesForm.role);this.$storage.set("sessionTable",this.tableName);this.$storage.set("adminName",this.rulesForm.username);this.$router.replace({path:"/"});}else{this.$message.error(data.msg);}});},5.1.2添加数据功能实现该模块中后端接口向前端提供数据添加服务,后端接到前端服务请求时先做权限鉴定,就是判断该用户是否已经存在,我这里是通过判断用户名在数据库中是否已经存在。用户信息不存在就会在数据库中将前台输入好的数据根据字段保存到数据库表中,实现添加数据的操作。添加成功就将封装好的数据返回并提示成功的信息,否则就提示"用户已存在"。核心代码如下:@PostMapping("/save")publicRsave(@RequestBodyUsersEntityuser){if(userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",user.getUsername()))!=null){returnR.error("用户已存在");}userService.insert(user);returnR.ok();}5.1.3删除数据功能实现此模块中后端接口向前端提供数据删除服务,接到前端的请求时从前端请求参数中获取需要删除数据的ids,参数放在请求中,以大括号标记。通过MybatisPlus提供的deleteBatchIds来删除该ids对应的数据,其中以下为后端部分代码的实现逻辑。@RequestMapping("/delete")publicRdelete(@RequestBodyLong[]ids){userService.deleteBatchIds(Arrays.asList(ids));returnR.ok();}其中ids为数组原因是既可以单例删除也可以进行批量删除。5.1.4修改数据功能实现此模块的具体功能是后端接口向前端提供数据修改服务,当后端接到前端修改请求的时候,其中if里面的判断语句验证此ID对应的用户名在数据库中是否已经存在,因为是修改操作只有数据存在才会进行修改操作,从接收到的请求信息里取得请求的数据对象,再调用MybatisPlus已经封装好的的updateById方法把参数id对应的数据传输过去进行修改。部分核心代码如下:@RequestMapping("/update")publicRupdate(@RequestBodyUsersEntityuser){//ValidatorUtils.validateEntity(user);UsersEntityu=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",user.getUsername()));if(u!=null&&u.getId()!=user.getId()&&u.getUsername().equals(user.getUsername())){returnR.error("用户名已存在。");}userService.updateById(user);//全部更新returnR.ok();}5.1.5查询数据功能实现在数据库的语法中查询的操作主要分为模糊查询和精确查询两种查询。此功能也可以说是条件查询,是根据Id来进行对应的信息查询,通过前端服务请求的数据也就是所需要查询的ID,请求到后端数据中,后端通过userService调用Mybatis-plus所封装好的selectById方法在数据库中通过查询ID所返回对应的数据返回给前端从而进行查询操作。部分核心代码如下:@RequestMapping("/info/{id}")publicRinfo(@PathVariable("id")Stringid){UsersEntityuser=userService.selectById(id);returnR.ok().put("data",user);}5.1.6分页查询功能实现分页查询其实是将查询进行结果的分页,其实也就是信息的分页展示,由前端发出的请求服务,后端接受此地址时进行的一个列表展示并将其分页方便对信息的大致浏览。分页是有分页插件可以快速方便的进行分页操作,其中分页参数都是定义在PageUtils工具类当中,在该工具类中,可以自定义当前页数和每一页展示多少数据,然后将这些在数据库中的表信息还有分页参数返回给前端。部分核心代码如下:@RequestMapping("/page")publicRpage(@RequestParamMap<String,Object>params,UsersEntityuser){EntityWrapper<UsersEntity>ew=newEntityWrapper<UsersEntity>();PageUtilspage=userService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.allLike(ew,user),params),params));returnR.ok().put("data",page);}5.1.7获取用户token功能实现当前端页面进行登录的时候,前端服务的loginPost()方法里面通过axios像后端服务器进行请求获得数据,然后后端接受此命令就会通过dao(数据层)向数据库进行访问查询对比用户账号和密码对比是否存在且是否正确。然后将封装好的数据向前端返回数据并且将生成的token一并往前端发送。前端loginPost()方法里面就会进行判断是否获取数据且数据是否正确合法。该核心代码主要如下:@OverridepublicStringgenerateToken(Longuserid,Stringusername,StringtableName,Stringrole){TokenEntitytokenEntity=this.selectOne(newEntityWrapper<TokenEntity>().eq("userid",userid).eq("role",role));Stringtoken=CommonUtil.getRandomString(32);Calendarcal=Calendar.getInstance();cal.setTime(newDate());cal.add(Calendar.HOUR_OF_DAY,1);if(tokenEntity!=null){tokenEntity.setToken(token);tokenEntity.setExpiratedtime(cal.getTime());this.updateById(tokenEntity);}else{this.insert(newTokenEntity(userid,username,tableName,role,token,cal.getTime()));}returntoken;}以下就是判断token的核心代码:@OverridepublicTokenEntitygetTokenEntity(Stringtoken){TokenEntitytokenEntity=this.selectOne(newEntityWrapper<TokenEntity>().eq("token",token));if(tokenEntity==null||tokenEntity.getExpiratedtime().getTime()<newDate().getTime()){returnnull;}returntokenEntity;}5.1.8跨域访问功能实现我们平常在浏览器中遇到不能执行其他脚本的时候,由于是浏览器的同源策略造成的,浏览器为了自身的数据访问安全,就会设置同源策略,这就是跨域。同源策略限制是当一个请求的URL协议、域名或者端口,这三个中只要有任何一个与当前访问的页面的url不同,就会出现访问不成功的问题,也就是跨域问题。同源策略会阻止一个域和另一个域的数据和内容交互传递。现在在企业的主流开发模式中,绝大部分严格意义上都应是前后端分离的开发模式,既然是分离的开发模式肯定要考虑如何连接到一起的问题,也就是我们之前学习到的跨域问题。前端访问后端的接口得到数据就会因为跨域问题受阻。如果出现跨域问题,前端会报CORS的错误,一旦遇到错误我们的原则就是第一时间解决问题。我了解到的JAVA后端解决跨域问题的方法有好几种;一:实现WebMvcConfigurer(全局跨域)、二;实现HandlerInterceptor接口、三;使用Filter、四;使用@CrossOrigin注解实现等等,其实我还查到好几种我就不多介绍了,这几种相对来说是比较常见的几种跨域方式了。我在自己的系统中就是采用第二种即实现HandlerInterceptor接口来解决的跨域问题。具体实现方法部分代码如下:@ComponentpublicclassAuthorizationInterceptorimplementsHandlerInterceptor{@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{response.setHeader("Access-Control-Allow-Methods","POST,GET,OPTIONS,DELETE");response.setHeader("Access-Control-Max-Age","3600");response.setHeader("Access-Control-Allow-Credentials","true");response.setHeader("Access-Control-Allow-Headers","x-requested-with,request-source,Token,Origin,imgType,Content-Type,cache-control,postman-token,Cookie,Accept,authorization");response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));if(){}returnfalse;}5.1.9上传文件和图片功能实现设置此接口主要是用于我们页面展示各种信息以及自己添加信息的时候会有图片上传这一项,比如用户的头像,快递信息对应的封面等等。期间我们对于上传文件会有一个判断,调用isEmpty()方法可以判断文件是不是一个空文件,再进行后续操作,只有文件存在才有上传的操作,当然如果文件存在则是根据文件路径进行上传。其主要代码如下:@RequestMapping("/upload")@IgnoreAuthpublicRupload(@RequestParam("file")MultipartFilefile,Stringtype)throwsException{if(file.isEmpty()){thrownewEIException("上传文件不能为空");}StringfileExt=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);Filepath=newFile(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()){path=newFile("");}Fileupload=newFile(path.getAbsolutePath(),"/upload/");if(!upload.exists()){upload.mkdirs();}StringfileName=newDate().getTime()+"."+fileExt;if(StringUtils.isNotBlank(type)&&type.contains("_template")){fileName=type+"."+fileExt;newFile(upload.getAbsolutePath()+"/"+fileName).deleteOnExit();}Filedest=newFile(upload.getAbsolutePath()+"/"+fileName);file.transferTo(dest);FileUtils.copyFile(dest,newFile("E:\\biyesheji\\springbootii75xyca\\src\\main\\resources\\static\\upload"+"/"+fileName));if(StringUtils.isNotBlank(type)&&type.equals("1")){ConfigEntityconfigEntity=configService.selectOne(newEntityWrapper<ConfigEntity>().eq("name","faceFile"));if(configEntity==null){configEntity=newConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);}else{configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}returnR.ok().put("file",fileName);}5.2前端各功能模块的页面展示以下是前端页面的展示,前端技术负责前端的显示页面以及各种按钮的操作,也就是前端向后端的请求服务,其中按钮绑定的事件其实也就是往后端发送一些请求服务,后端接收后向前端返回数据得以显示在前端页面中。5.2.1系统登录主界面用户在进入系统之前必须进行登录操作,这也是为了保证系统的安全问题,用户只需要输入自己的用户名、登录密码,输入完成后系统会对输入的用户名和密码进行一个和数据库表中的信息的确认以达到一个安全登录的作用。其中就是通过axios向后端请求验证。如果验证通过,把得到的token保存在session中,以便后期向后端接口请求数据时携带token作权鉴。然后选择是管理员身份还是用户身份点击登录按钮进行登录,其界面如图5-1所示。图5-1登录界面5.2.2用户管理界面管理员登录系统后,点击左边菜单栏里的快递站点管理可以跳转到此界面,此界面可以看到对应站点的信息,比如用户账号、用户名、对应用户的相关照片、性别、电话号码、身份号码等信息直接展示出来。最右边的操作栏里还有一个查看按钮,也是可以看到对应个人的全部信息包括登录的密码,在展示信息的上方有添加按钮,还有在信息的最后操作栏里的按钮可以修改用户的信息。上方的查询框则可以根据用户的账号进行查询对应用户的信息,查询完后下方的删除按钮可以清空查询栏里的信息方便再次查询信息,可以很好的管理用户的各项信息。其界面如图5-2所示。图5-2用户管理界面5.2.3快递代收点信息管理界面管理员登录系统后,点击左边菜单栏里的快递站点管理可以跳转到此界面,此界面可以看到对应站点的信息,比如站点名称、对应图片、负责人、站点里的快递数量,负责人的联系电话等信息直接展示出来。在展示信息的上方可以看到有添加按钮,还有在信息的最后操作栏里的按钮可以添加、修改快递代收点信息。上方的查询框则可以根据所要查询的条件进行查询。其界面如图5-3所示。图5-3快递代收点信息管理界面5.2.4用户信息管理界面登录系统后,点击左边菜单栏里的快递站点管理可以跳转到此界面,此界面可以用于修改自己的登录密码,其界面如图5-4所示。图5-4修改信息界面还可以点击下方的个人信息简单的查看一下个人的信息,比如用户名和头像,登录之后进入此界面可以看出登录的是否为自己的信息,具体的个人信息还是需要到用户管理界面才能全部都展现出来。其界面如图5-5所示。图5-5个人信息界面5.2.5快递信息管理界面管理员登录系统后,点击左边菜单栏里的快递信息管理可以跳转到此界面,此界面可以看到对应所有快递的信息,比如快递的、单号快递的名称、快递的封面、是否入库的状态、还有此快递对应的用户的姓名电话号码等信息直接展示出来。在展示信息的上方可以看到有添加按钮,还有在信息的最后操作栏里的按钮可以添加、修改快递的信息。上方的查询框则可以根据所要查询的条件比如快递的单号,对应快递的用户姓名进行查询,可以快速查询出来快递的信息。其界面如图5-6所示。图5-6快递信息界面5.2.6快递入库管理界面管理员登录系统后,点击左边菜单栏里的快递入库信息管理可以跳转到此界面,此界面可以看到对应所有快递的入库信息,除了之前快递信息里的各种快递信息之外,还有入库时间、入库于哪个站点、站点的地址、入库数量等信息展示。在展示信息的上方有查询框可以根据所要查询的条件比如快递的单号,取件码,在哪个站点入库的等条件进行查询,可以快速查询出来快递入库的信息。因为是入库管理所以并没有添加的操作按钮,也并没有这步操作,但是还是有着修改的操作。其界面如图5-7所示。图5-7快递入库管理界面5.2.7快递出库管理界面和之前一样,点击左边菜单栏里的快递入库信息管理可以跳转到此界面,此界面可以看到对应所有快递的出库信息,除了之前快递信息里的各种快递信息之外,还有出库时间、出库于哪个站点、站点的地址、出库数量的记录等信息展示。在展示信息的上方有查询框可以根据所要查询的条件比如快递的单号等条件进行查询,可以快速查询出来快递出库的信息。和入库管理差不多的具体功能,也没有添加的操作按钮,也并没有这步操作,但是还是有着修改的操作。其界面如图5-8所示。图5-8快递出库管理界面5.2.8订单管理界面对于订单的管理,相对于代收点一般也就只有寄件的订单管理,主要是可以看到寄件的单号,此订单的收件地址,收件方的信息如收件人的账号姓名,电话号码等,还有就是寄件人的信息,其中寄件是有一个审核状态的可以看到寄件是否审核通过。其界面如图5-9所示。图5-9订单管理界面5.2.9数据统计界面此功能模块对应于快递站点、快递入库和快递出库三个模块。主要就是在此三个模块中可以很好的看出每个站点中一共有多少个快递的数量进行一个快递数量总的统计,以及每个站点的快递出入库的数量统计,以达到更好的进行快递的管理。其界面如以下图5-10、图5-11和图5-12所示图5-10快递统计图5-11快递出库统计图5-12快递入库统计其主要代码如下:@RequestMapping("/value/{xColumnName}/{yColumnName}")publicRvalue(@PathVariable("yColumnName")StringyColumnName,@PathVariable("xColumnName")StringxColumnName,HttpServletRequestrequest){Map<String,Object>params=newHashMap<String,Object>();params.put("xColumn",xColumnName);params.put("yColumn",yColumnName);EntityWrapper<KuaidirukuEntity>ew=newEntityWrapper<KuaidirukuEntity>();StringtableName=request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")){ew.eq("yonghuzhanghao",(String)request.getSession().getAttribute("username"));}List<Map<String,Object>>result=kuaidirukuService.selectValue(params,ew);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京市顺义区卫生健康委员会所属北京市顺义区中心血库招聘额度人员1人笔试考试参考试题及答案解析
- 2025年宣城郎溪县“政聘企用”事业单位储备人才引进3人笔试考试备考试题及答案解析
- 2026京东方鄂尔多斯市源盛光电有限责任公司校园招聘20人考试笔试模拟试题及答案解析
- 2025东莞理工学院校内招聘国际设计学院(筹)教学秘书考试笔试参考题库附答案解析
- 2025四川南充市总工会遴选参照管理人员2人考试笔试备考试题及答案解析
- 2025合肥庐江县新时代文明实践工作中心选调3人考试笔试备考题库及答案解析
- 2025福州工业园区开发集团有限公司勘察设计分公司招聘2人笔试考试备考题库及答案解析
- 2025广西钦州产业园区急需紧缺人才招聘31人笔试考试参考试题及答案解析
- 2026陕西省汉中中学公费师范生招聘(3人)考试笔试备考题库及答案解析
- 2025北京市顺义区卫生健康委员会面向应届毕业生招聘事业单位工作人员100人笔试考试备考试题及答案解析
- 食品微生物安全知识培训课件
- 喷洒阻化剂施工安全操作流程
- 农村自建房培训课件
- 艾瑞咨询2025年保险行业AI应用全景洞察报告:保险业数智化转型与未来展望
- 巡检继电保护装置规定
- 苏州盆景养护管理办法
- 国际贸易安全内部培训课件
- 保险电销合同范本
- 2025年全国高校辅导员结构化面试题50题(含答案)
- 《点面结合》课件
- 人教版 2024 版历史八年级上册期末(全册)复习卷(一)(附答案)
评论
0/150
提交评论