基于Spring Cloud微服务架构的网盘系统的设计与开发_第1页
基于Spring Cloud微服务架构的网盘系统的设计与开发_第2页
基于Spring Cloud微服务架构的网盘系统的设计与开发_第3页
基于Spring Cloud微服务架构的网盘系统的设计与开发_第4页
基于Spring Cloud微服务架构的网盘系统的设计与开发_第5页
已阅读5页,还剩30页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

目录TOC\o"1-3"\h\u16886第1章绪论 1193001.1研究背景与开发意义 1257661.2国内外现状 1296781.3论文主要研究内容 2474第2章相关技术分析 3322492.1微服务架构 3195582.11微服务概念 3152182.12微服务架构特征 3141432.13微服务拆分 485052.2SpringCloud微服务架构 4252442.3SpringBoot 566992.4数据库相关技术 521320第3章系统分析与设计 6204253.1系统总体设计 6197583.1.1用户模块 6319883.1.2管理员模块 7132313.2数据库设计 8172913.2.1数据库概念设计 895383.2.2数据库物理结构设计 81005第4章系统实现 12300554.1系统首页登陆界面 12280874.2用户主界面 13325124.3修改密码界面 15315324.4文件管理模块 16231684.5回收站模块 17218054.6我的分享(仅显示分享到个人的文件) 1878334.7评论界面 19193754.8统计分析界面 19182524.9用户管理界面 20120414.10单位管理界面 22323924.11单位管理界面 23308694.12文件类型管理界面 246848 24259765.1软件测试目的 2528405.2软件测试结果 25318865.2.1管理员功能测试 25261405.2.2用户功能测试 27203第6章结论 2814118参考文献 297057致谢 30第1章绪论1.1研究背景与开发意义随着大数据时代的到来和云计算技术的发展,人们对数据存储和分享的需求不断增加。在这个背景下,存储服务成为了一个备受关注的领域[9]。数据的规模和种类不断增加,大数据安全问题也日益突显。通过对现有的数据安全问题进行分析和总结,提出了一系列的安全措施,包括数据分类、数据备份、数据加密等,以保障大数据安全。网盘系统作为存储的一种典型应用,为用户提供了便捷高效的数据存储和分享方式,极大地改善了信息管理的效率[8]。在企业中涉及到文件的保密问题和和网络安全问题,所以很多企业中需要利用公司内网构建完全隔离与外网的网盘系统,保证文件保密性,防止文件数据的外流,所以大大需要内网网盘系统的构建。其次,网盘系统涉及到大规模数据管理和分布式存储等关键技术,研究这些技术问题有助于推动云计算和大数据处理领域的发展。通过优化存储资源利用、提高数据传输效率等方面的技术创新,可以更好地支持日益增长的数据需求,提升整个云计算体系的性能和稳定性。微服务架构由于其灵活性、可维护性和可扩展性,成为了构建复杂系统的首选方案之一[4]。SpringCloud通过整合和封装多项功能,为开发者搭建了一个强大的微服务架构,大大提高了开发效率,微服务架构相较于传统的单体架构更具有灵活性,能够更好地应对不断变化的业务需求。因而被广泛应用于企业级应用开发。通过综合考虑微服务架构和存储服务,可以构建一个具有良好扩展性、高性能和良好用户体验的网盘系统,为用户提供高效安全便捷的数据管理服务。1.2国内外现状在国内,网盘服务得到了广泛的应用和发展。以下是一些主要的国内网盘服务及其发展现状:百度云盘:作为中国领先的互联网公司之一,百度推出的百度云盘深受大众喜爱。它能够免费提供大容量的免费储存空间,同时通过付费服务提供更大的存储空间和更多的功能。腾讯微云:腾讯微云是由腾讯推出的网盘服务,与其它腾讯生态圈的产品相整合,提供了方便的文件共享和存储功能。它也有免费和付费的存储方案。阿里云盘:阿里云推出的云盘服务,与阿里云生态系统紧密结合,提供了高可用性和稳定性的存储服务。2.国外网盘发展现状:国外的网盘服务也在不断发展,以下是一些主要的国外网盘服务及其发展现状:GoogleDrive:由Google提供的存储服务,除了提供大容量的免费存储空间外,还与GoogleDocs等办公应用深度整合,支持协作编辑和在线预览[5]。MicrosoftOneDrive:微软推出的存储服务,与Windows系统深度整合,为Windows用户提供便利的存储解决方案。它还与Office365等微软产品集成。AmazonDrive:亚马逊提供的存储服务,作为AmazonWebServices(AWS)的一部分,为用户提供了可扩展的存储方案,并与其他AWS服务集成。总体而言,国内外的网盘服务在不同的市场中有各自的特色和发展方向,通过不断的创新和提升服务质量,这些服务在满足用户存储需求的同时也在不断拓展其功能和生态系统。1.3论文主要研究内容本论文的主要研究内容是将网盘系统根据微服务架构的设计思想进行设计与实现。系统使用了当前较为流行的基于SpringBoot,SpringCloud的分布式微服务架构[15],前端使用Vue+Element-UI等技术,后端部分使用了MVC模式以及MyBatis-Plus框架[10],采用java作为开发语言,神通数据库作为系统的数据库,FastDFS作为分布式文件系统。主要工作如下:学习各项技术相关理论知识并熟练使用方法。对系统中相关业务进行流程分析与改进。对系统进行概要设计,包括功能模块、系统结构和数据库的设计。对系统进行详细设计,在对服务器的业务功能进行微服务拆分后,对部分核心的功能模块进行详细的设计与实现结合SpringCloud框架提供的微服务核心组件,对服务端的微服务治理功能进行设计与实现。对系统进行测试,分析测试结果。相关技术分析2.1微服务架构2.11微服务概念在2014年,MartinFowler为我们揭开了一种全新的软件架构形式的面纱——微服务架构(MicroserviceArchitecture)。这一创新性的构想,建议将过去庞大而复杂的单体应用拆分成一系列小型服务。这些微小的服务仿佛各自独立的细胞,它们相互协作、默契配合,从而满足用户多样化的需求。每个微服务都拥有独立的运行进程,采用轻量级的通信机制与其他服务进行交互,确保整个系统的灵活性和可扩展性。这一架构模式的出现,并非偶然,而是技术发展与市场需求的必然结果。互联网的飞速发展、虚拟化技术的广泛应用以及持续交付的需求,共同催生了微服务架构的诞生。随着用户需求的个性化与多样化,以及产品更新换代的迅速性,传统的单体架构已无法适应这些快速变化。微服务架构,以其高度灵活性和扩展性,成为了未来服务端架构的必然趋势。微服务架构,从本质上讲,是对传统单体架构的一种深度改造与升级。它将单体应用中的服务层细化为一系列微服务,每个微服务都承载着特定的业务功能,并且拥有独立的数据库。这样的设计,大大降低了服务间的耦合性,提升了系统的整体性能。为了确保客户端能够顺利地与这些微服务进行交互,API网关被引入作为它们之间的桥梁,实现了服务间的无缝对接。单体架构与微服务架构的架构对比如图2-1所示:从单体架构向微服务架构的转变,并非一蹴而就。其中,最为核心的任务便是将复杂的业务功能进行细致的拆分,并根据这些功能定义出粒度恰当的服务。这一拆分过程,需要我们从服务的拆分维度、原则以及策略等多个角度出发,进行深入的分析与探讨。2.12微服务架构特征微服务架构,凭借其诸多优势,已经成为了现代分布式系统设计的优选方案。其特点主要表现为以下几个方面[3]:(1)微服务架构具有单一职责的特性。每个微服务都专注于实现某一特定的业务能力,避免了功能的重叠与交叉。这种细化分工,使得开发团队能够更加专注于自己的业务领域,提高了开发效率与质量(2)微服务架构是面向服务的。每个微服务都通过暴露业务接口,与其他服务进行交互。这种服务化的设计方式,使得整个系统更加易于理解和维护。(3)微服务架构强调自治性。每个微服务都拥有独立的团队、技术栈、数据库以及部署环境。这种高度自治的特性,使得服务能够独立运行,并且在发生故障时能够自我隔离,避免对整个系统造成影响。(4)微服务架构具有强隔离性。在服务调用过程中,需要充分考虑隔离、容错以及降级等策略,以确保服务的稳定运行,避免出现级联故障。2.13微服务拆分(1)服务拆分的维度服务拆分维度分为业务和数据,其中业务的拆分主要体现在各种功能代码中,通过确定业务边界并根据边界上下文、领域事件等方法进行拆分;而数据的分离则主要体现在将集中式数据拆分到各个微服务中。业务和数据的拆分不分先后顺序,但是数据的拆分存在较大的挑战。因为在数据库分库分表的过程中,需要考虑到跨库跨表的连接查询以及业务代码耦合性等问题,并且数据拆分与业务边界是否清晰也息息相关。(2)服务拆分的原则微服务拆分的原则包括以下部分:a.微服务拆分应当从业务功能出发,逐步进行演进式的拆分,并在拆分过程中注意保持服务的边界清晰。b.为了确保系统的稳定性,我们需要确保微服务之间的松耦合性,使其能够独立运行并在故障时具备隔离功能。c.服务的拆分粒度也应适中,以便于中小规模团队进行高效的开发和维护。d.避免在拆分过程中出现环形依赖或双向依赖等问题,确保系统架构的稳定性与可持续性。2.2SpringCloud微服务架构在现代化软件开发的领域中,微服务架构逐渐崭露头角,其以高度解耦、灵活扩展和易于维护的特点赢得了众多企业的青睐。然而,搭建和开发微服务系统并非易事,此时SpringCloud的出现,为我们提供了强大且全面的支持。SpringCloud以其丰富的组件集,极大地降低了微服务系统的搭建与开发难度,为开发者铺平了前进的道路。(1)服务的注册与发现组件SpringCloud提供的Eureka、Consul等服务注册与发现组件便显得尤为重要。这些组件可以帮助我们进行系统的动态服务治理,使得服务的注册、管理和调用等操作变得更加便捷和高效。服务调用组件Hystrix、Ribbon和OpenFeign等核心组件也不容忽视。在微服务系统中,由于各个服务之间可能存在相互依赖的关系,一旦某个服务出现故障,就可能引发连锁效应,导致整个系统陷入崩溃的境地。为了避免这种情况的发生,Hystrix通过实现熔断服务来进行容错处理,确保系统的稳定运行。此外,Ribbon则帮助我们实现客户端的负载均衡,它可以根据一定的策略选择合适的服务实例进行请求转发,从而有效地分担系统压力。而OpenFeign则是一个功能强大的Restful网络请求客户端,它采用声明式的方式简化服务请求,让开发者能够更加专注于业务逻辑的实现。综上所述,SpringCloud以其丰富的组件集和强大的功能支持,为微服务系统的搭建与开发提供了全方位的保障。无论是服务注册与发现、服务调用还是应用程序的快速构建与部署,SpringCloud都能为我们提供高效、便捷的解决方案。在未来的软件开发领域中,SpringCloud必将继续发挥着越来越重要的作用。2.3SpringBootSpringBoot是一个用于简化Spring应用程序开发的框架,它提供了一系列核心特性,使得开发者能够更快速、更简单地构建和部署Spring应用程序。其主要有以下几个特点:简化配置:SpringBoot以其简化的配置和快速启动的特性赢得了广泛赞誉。它采用自动配置的机制,根据项目中存在的依赖关系自动配置Spring应用程序,减轻了开发人员的负担。快速启动:SpringBoot提供了内嵌的Servlet容器,使得应用程序可以以可执行的JAR包形式直接运行,无需部署到外部容器中,从而实现了快速启动和测试。丰富的功能支持:SpringBoot还提供了丰富的功能和插件,涵盖了Web应用程序开发、数据访问、安全性、监控等多个方面。这使得开发人员能够方便地集成这些功能,快速构建出功能完善的应用程序。Spring生态的无缝集成:SpringBoot与Spring生态中的其他项目(如SpringMVC、SpringData、SpringSecurity等)无缝集成,可以方便地利用这些项目提供的功能来开发应用程序。简化工作,依赖简化、配置简化、部署简化、监控简化SpringBoot的出现极大地简化了Spring应用程序的开发流程,使得开发人员可以更加专注于业务逻辑的实现,从而提高了开发效率和代码质量。2.4数据库相关技术本系统采用国产数据库神通关系型数据库,产品主要有以下特点:在面对业务数据的频繁更新、追加、分析的复合应用场景,能够快速的保证质量的完成大量数据的运算,高性能通过多核数据结构,增量检查点,大内存缓冲。高可用,支持主备同步,异步多种部署模式,备机并行恢复,可升主提供服务。加快金融市场基础设施建设,特别是推动金融业关键信息基础设施国产化,不仅有利于保障国家金融安全和信息安全,也有助于培育和发展国内科技产业,提升整体产业链的自主可控能力和国际竞争力。神通数据库作为国产数据库产品的优秀案例,凭借其自主研发的技术实力和对金融业务场景的深度适配,成功在人民银行、建设银行、嘉兴银行等多家金融机构得到应用部署。这一成果表明国产数据库在金融行业的关键技术突破和实际应用层面取得了显著进展,有效支撑了金融客户的业务创新和智能化转型,为金融行业乃至整个社会经济的数字化进程提供了强大的技术支持和基础保障。随着越来越多的金融机构采用国产数据库,将进一步促进我国金融科技生态体系的完善和发展,形成良性的国产信息技术生态循环。

系统分析与设计3.1系统总体设计本系统总体设计为前端后端。前端部分主要是基于VUE+Element-UI的开发实现,服务器的后端部分是基于服务器端SpringBoot和SpringCloud开发的框架进行开发实现,分为用户端模块与管理与角色模块,用户端的功能主要分为登录模块,文件的上传、分享、下载、查看、收藏、我的空间信息统计,评论模块,回收站。管理员模块包括团队空间信息统计、菜单管理、用户管理、角色管理、单位管理、资源分类、文件类型、日志管理、修改密码等模块。3.1.1用户模块用户的功能主要有基本的登录功能,上传文件、下载文件、分享文件和收藏文件,回收站功能,查看资源共享文件功能,评论留言功能和我的空间功能。用户登录功能:用户需要输入用户名、密码和验证码进行登录操作,输入后系统将把实际得到的信息和在数据库中保存的信息进行比较,若一致则登陆成功,并进入到了系统首页,若不一致则无法进入系统首页,并在页面提示用户名信息错误。还可以修改密码。上传文件:用户点击上传文件功能,选中自己本地想要上传的文件或者文件夹,进行文件的上传功能。下载文件:用户选择在本地上传的文件或公共资源中的文件,选择下载,即可下载到本地。分享文件:用户选择本地上传文件进行分享,可分享到个人或者某个部门。收藏文件:用户在资源池中选择自己想要收藏的文件,即可保存在我的收藏中。回收站模块:用户删除的文件会在回收站再保存,可以选择彻底删除,或者等设定的时间到后将会自动彻底删除。评论留言模块:用户可在资源池中查看文件,并对文件进行留言,发表自己的观点或者看法,供大家一块进行讨论。我的空间模块:用户可以在我的空间模块中查看自己上传、下载和分享的文件,也可以看自己发表的评论数和评论内容。3.1.2管理员模块管理员的功能主要有登录模块、团队空间模块、菜单管理模块、用户管理模块、角色管理模块、单位管理模块、资源分类模块、文件类型模块、日志管理模块。用户登录功能:用户需要输入用户名、密码和验证码进行登录操作,输入后系统将把实际得到的信息和在数据库中保存的信息进行比较,若一致则登陆成功,并进入到了系统首页,若不一致则无法进入系统首页,并在页面提示用户名信息错误。还可以修改密码。团队空间模块:管理员可以在团队空间中查看自己团队的总人数,已分配空间人数/未分配空间人数和存储空间将满的人数。菜单管理模块,管理员可以看到系统的所有菜单,在文件主功能中可以对不同后缀名文件进行分类。用户管理模块:管理员可以查询到该单位所有的用户,可以在此处进行用户的新增,可以对新增用户进行信息的修改,账号的删除、停用、授权不同的角色、重置密码和设置容量。角色管理模块:管理员可以查询到已创建的角色信息,也可以新建角色,对角色进行信息的修改、删除等操作,不同的角色对应不同的菜单。单位管理模块:管理员可以看到单位各部门架构信息,能够增加新的部门,可以对部门进行修改、停用、删除和设置新的容量。资源分类模块:管理员可以看到资源分类的情况,可以新建资源分类,此分类是指用户分享到资源池时选择的资源分类,可以对分类进行新增、修改和停用操作。文件类型模块:可以进行文件类型的增加,此处文件类型与菜单管理中不同后缀名分类是相交互的,需要新增文件类型,才能使用文件类型与文件分类进行匹配。日志管理模块:管理员可以在日志管理模块中查询自己的操作内容。3.2数据库设计3.2.1数据库概念设计数据库的E-R图如图3-4所示:3.2.2数据库物理结构设计根据系统功能设计了关系模型,并在神通数据库建立了表文件,其中主要包含了七张表,分别是:用户信息表(sys_user),文件信息表(file),文件类型表(file_type),组织信息表(sys_org),资源分享表(resouece_share),文件下载表(file_user_download),文件虚拟地址表(virtual_address)。用户表用于记录用户的用户名、id、密码、电话号码、邮箱、涉密等级、身份证号、性别、创建时间等个人信息,对id字段设置主键且自增功能。用户表(sys_user)如表3-1所示。字段主键数据类型不为空长度备注id是intTrue4uscodevarcharTrue36usnamevarcharTrue200uspasswordvarcharTrue4secretlevelvarcharTrue200usemailvarcharTrue50cardidvarcharfalse100telephonenumvarcharTrue36genderintTrue4creattimetimestampTrue16usorgcodevarcharTrue36usernamevarcharTrue200文件信息表用于记录文件的id、名字、大小、后缀、创建时间等信息,对id字段设置主键且自增功能。文件信息表(file)如表3-2所示。字段主键数据类型不为空长度备注id是intTrue4file_idvarcharTrue36file_namevarcharTrue255file_sizebigintTrue8file_locationvarcharTrue255file_md5varcharTrue255suffixvarcharTrue36content_typevarcharTrue255createsueridintTrue4createtimeTimestampTrue16file_type表3-3文件类型表(file_type)字段主键数据类型不为空长度备注id是intTrue4codevarcharTrue36ftynamevarcharTrue36suffixvarcharTrue36content_typevarcharTrue255createuseridintTrue4表3-4组织信息表(sys_org)字段主键数据类型不为空长度备注orgid是intTrue4orgcodevarcharTrue36orgnamevarcharTrue255parent_idvarcharTrue36OrgdutyvarcharTrue10createtimeTimestampTrue16createsueridintTrue4resouece_share表3-5资源分享表(resouece_share)字段主键数据类型不为空长度备注id是intTrue4Resource_share_idvarcharTrue36file_idvarcharTrue36useridintTrue4file_md5varcharTrue255file_sizebigintTrue8suffixvarcharTrue36res_pathintTrue4content_typevarcharTrue255createtimeTimestampTrue16file_user_download表3-6文件下载表(file_user_download)字段主键数据类型不为空长度备注id是intTrue4residintTrue4typeidintTrue4createuseridintTrue4createtimeTimestampTrue16virtual_address表3-7文件虚拟地址表(virtual_address)字段主键数据类型不为空长度备注id是intTrue4virtual_address_idvarcharTrue36file_idvarcharTrue36usercodevarcharTrue36va_namevarcharTrue255file_md5varcharTrue255file_sizebigintTrue8secretlevelvarcharTrue200suffixvarcharTrue36createuseridintTrue4createtimeTimestampTrue16第4章系统实现4.1系统首页登陆界面核心代码如下:@SysWebLog(option="用户登录",type=LogTypeEnum.ORDINARY,action=LogActionEnum.LOGIN)@PostMapping("/admin/sys/login")publicResultlogin(@RequestBodySysLoginFormform){//前端传输给后端信息需要验证码if(form.getShowcaptcha()!=0){booleancaptcha=sysCaptchaService.validate(form.getUuid(),form.getCaptcha());if(!captcha){//验证码不正确returnResult.error(ErrorEnum.CAPTCHA_WRONG);}}SysUserEntityuser=sysMenuAuthMapper.selectOne(newQueryWrapper<SysUserEntity>()//用户信息.lambda().eq(SysUserEntity::getUscode,form.getUscode()));//用户名或密码错误if(user==null||!user.getUspassword().equals(newSha256Hash(form.getUspassword(),user.getSalt()).toHex())){returnResult.error(ErrorEnum.USERNAME_OR_PASSWORD_WRONG);}if(user.getUsislocked()==0){returnResult.error("账号已被锁定,请联系管理员");}if(user.getUsdelflag()==0){returnResult.error("账号未启用,请联系管理员");}returnsysUserTokenService.createToken(user.getId());}4.2用户主界面核心代码如下:(1)重命名:@PostMapping("/renamefileordir")PublicResultrenameFileOrDir(@RequestBodyRenameFileOrDirRequestrenameFileOrDirRequest){renameFileOrDirRequest.setUid(String.valueOf(getUserId()));//1.参数处理renameFileOrDirRequest.setUsCode(getUscode());//2.业务处理returnupdateContentProvider.renameFileOrDirHandler(renameFileOrDirRequest);}PrivateResultrenameFile(VirtualAddressEntityvirtualAddressEntity,RenameFileOrDirRequestrenameFileOrDirRequest){@Transactional(rollbackFor=Exception.class);PrivateResultrenameFile(VirtualAddressEntityvirtualAddressEntity,RenameFileOrDirRequestrenameFileOrDirRequest){//1.判断文件名是否有重复StringusCode=renameFileOrDirRequest.getUsCode();StringnewName=renameFileOrDirRequest.getNewName();StringparentPath=virtualAddressEntity.getParentPath();Stringsuffix=virtualAddressEntity.getSuffix();if(!FileCheckUtils.checkName(newName,myConfig.getNamelimit().getFile())){returnResult.error("文件名称长度必须小于"+myConfig.getNamelimit().getFile());}virtualAddressEntity.setVaName(newName);virtualAddressEntity.setUpdatetime(newDate());virtualaddressService.updateVirtualAddress(virtualAddressEntity);returnResult.ok();}(2)删除:@DeleteMapping("/deletefileordiradv")publicResultdeleteFileOrDirAdv(@RequestBodyDeleteVirtualAddressRequestdeleteVirtualAddressRequest){deleteVirtualAddressRequest.setUsCode(getUscode());returnupdateContentProvider.deleteFileHandlerAdv(deleteVirtualAddressRequest);};Stringvaid=virtualAddressEntity.getVirtualAddressId();StringusCode=virtualAddressEntity.getUserCode();IntegerdirWhether=virtualAddressEntity.getDirWhether();Integerdays=getValidDays();DateremoveTime=newDate();DateemptyTime=DateUtils.add(removeTime,days);virtualaddressMapper.deleteVirtualAddress(vaid,removeTime,emptyTime);//删除文件if(dirWhether!=1){//文件capacityService.minusCapacity(usCode,virtualAddressEntity.getFileSize());//更新容量}(3)修改密级:@PostMapping("/modifyfilesecret")publicResultmodifyFileSecret(@RequestBodyModifyVirtualAddressRequestmodifyVirtualAddressRequest){modifyVirtualAddressRequest.setUid(String.valueOf(getUserId()));参数处理modifyVirtualAddressRequest.setUsCode(getUscode());returnupdateContentProvider.modifyFileSecretHandler(modifyVirtualAddressRequest);};publicResultmodifyFileSecretHandler(ModifyVirtualAddressRequestmodifyVirtualAddressRequest){if(modifyVirtualAddressRequest==null||StringUtils.isBlank(modifyVirtualAddressRequest.getVaid()))returnResult.error("文件ID为空");if(modifyVirtualAddressRequest.getSecretLevel()==null)returnResult.error("密级为空");Stringvaid=modifyVirtualAddressRequest.getVaid();VirtualAddressEntityvirtualAddressEntity=virtualaddressService.getVirtualAddress(vaid);if(virtualAddressEntity==null)returnResult.error("文件不存在");virtualAddressEntity.setSecretLevel(modifyVirtualAddressRequest.getSecretLevel());virtualAddressEntity.setUpdatetime(newDate());virtualaddressService.updateVirtualAddress(virtualAddressEntity);returnResult.ok();}4.3修改密码界面核心代码如下:@PutMapping("/password")@ApiOperation(value="修改用户密码",notes="修改用户密码")publicResultpassword(@RequestBodyPasswordFormpasswordForm){//requestbody从前端传输数据到后端if(StringUtils.isEmpty(passwordForm.getNewPassword())){returnResult.error("新密码不能为空");}String password=new Sha256Hash(passwordForm.getPassword(),getUser().getSalt()).toHex();//sha256加密String newPassword=new Sha256Hash(passwordForm.getNewPassword(),getUser().getSalt()).toHex();booleanflag=sysUserService.updatePassword(getUserId(),password,newPassword);if(!flag){returnResult.error("原密码不正确");}returnResult.ok();}publicbooleanupdatePassword(IntegeruserId,Stringpassword,StringnewPassword){SysUserEntitysysUser=newSysUserEntity();//系统用户的实体,进行数据库的更新sysUser.setUspassword(newPassword);//将uspasswprd更新为newPasswordreturnthis.update(sysUser,newUpdateWrapper<SysUserEntity>().lambda().eq(SysUserEntity::getId,userId).eq(SysUserEntity::getUspassword,password));}//返回为更新的数据4.4文件管理模块4.5回收站模块4.6我的分享(仅显示分享到个人的文件) 核心代码如下:Map<String,Object>params=entityToMap(request);ObjectshareFieldObj=params.get("shareField");ObjectshareOrderObj=params.get("shareOrder");if(shareFieldObj==null||shareOrderObj==null){//添加默认排序,我的分享,默认分享时间降序shareField:share_time;shareOrder:DESCparams.put("shareField","share_time");params.put("shareOrder","DESC");}//2.业务查询,获取结果Query<MyShareDTO>query=newQuery<MyShareDTO>(params);Page<MyShareDTO>page=query.getPage();List<MyShareDTO>myShareDTOList=shareMapper.queryShareDto(page,params);select*from(selects.idasid,useridasuser_id,share_id,lock_whether,share_password,share_themeastheme,secret_level,view_count,save_count,download_count,favor_count,remark_count,createtimeasshare_time,expiration,nullasres_path_id,''asres_path,1asshare_type,share_status,''assecretLevelName,''assuffix,0asdir_whetherfromSHAREswhere(s.expiration=nullors.expiration=''ors.expiration>now())4.7评论界面核心代码如下:shareRemarkService.saveShareRemark(rsid,remark,getUserId(),getUser().getUsname(),getUscode());ResourceShareEntityresourceShareEntity=resourceShareMapper.selectOne(newQueryWrapper<ResourceShareEntity>().eq("RESOURCE_SHARE_ID",rsId));shareRemarkEntity.setId(Integer.parseInt(id));shareRemarkEntity.setRemark(remark);4.8统计分析界面核心代码如下:StatisticUserFileVovo=sysStatisticService.queryUsFileNum(getUserId(),getUscode(),startTime,endTime);IntegeruploadNum=statisticMapper.queryUsUploadNum(params);SELECTCOUNT(id)ASuploadNumFROMVIRTUAL_ADDRESSvWHEREv.USER_CODE=#{params.uscode}ANDv.DIR_WHETHER=0<iftest="params.startDate!=''">ANDv.CREATETIME>=TO_DATE(#{params.startDate},'yyyy-MM-dd')</if><iftest="params.endDate!=''">ANDv.CREATETIME<=DATEADD(DAY,1,TO_DATE(#{params.endDate},'yyyy-MM-dd'))</if>4.9用户管理界面核心代码如下:ValidatorUtils.validateEntity(sysUser,AddGroup.class);Intnum=sysUserService.count(newQueryWrapper<SysUserEntity>().lambda().eq(SysUserEntity::getUscode,sysUser.getUscode()));Stringid=SequenceGenerator.getInstance().generateStringId(SysCategoryConstants.SYS_USER_SEQ_KEY,1);sysUser.setId(Integer.parseInt(id));sysUser.setCreateuserid(getUserId());sysUser.setCreatetime(newDate());sysUser.setUspassword(pwd);sysUser.setUsdelflag(0);sysUser.setUsislocked(1);sysUser.setUstype(4);ValidatorUtils.validateEntity(sysUser,AddGroup.class);returnsysUserService.save(sysUser);4.10单位管理界面核心代码如下:intnum=sysOrgService.count(newQueryWrapper<SysOrgEntity>().lambda().eq(SysOrgEntity::getOrgcode,sysOrg.getOrgcode()));Stringorgid=SequenceGenerator.getInstance().generateStringId(SysCategoryConstants.SYS_ORG_SEQ_KEY,1);sysOrg.setOrgid(Integer.parseInt(orgid));sysOrg.setCreateuserid(getUserId());sysOrg.setCreatetime(newDate());sysOrg.setStatus("1");sysOrg.setHaschild("0");ValidatorUtils.validateEntity(sysOrg,AddGroup.class);returnsysOrgService.saveOrg(sysOrg);4.11单位管理界面核心代码如下:publicResultsave(@RequestBodySysRoleEntitysysRole){Stringroleid=SequenceGenerator.getInstance().generateStringId(SysCategoryConstants.SYS_ROLE_SEQ_KEY,1);SysOrgEntitysysOrgEntity=getSysOrg();sysRole.setRegioncode(sysOrgEntity.getOrgcode());sysRole.setRoleid(Integer.parseInt(roleid));sysRole.setCreateuserid(getUserId());sysRole.setCreatetime(newDate());sysRole.setRoletype("2");sysRole.setRolestate(0);sysRole.setSn(1);ValidatorUtils.validateEntity(sysRole);List<SysRoleEntity>roleEntityList=sysRoleService.queryByRolecode(sysRole.getRolecode());SELECT*FROMSYS_ROLE<where>rolecode=#{rolecode}</where>4.12文件类型管理界面核心代码如下:publicResultsave(@RequestBodyCatalogResourceEntitycatalogResourceEntity){if(null!=catalogResourceEntity){Stringid=SequenceGenerator.getInstance().generateStringId(SysCategoryConstants.CATALOG_RESOURCE_SEQ_KEY,1);catalogResourceEntity.setOrgcode(getSysOrg().getOrgcode());catalogResourceEntity.setCrstatus(1);catalogResourceEntity.setCrhaschild(0);catalogResourceEntity.setId(Integer.parseInt(id));}ValidatorUtils.validateEntity(catalogResourceEntity,AddGroup.class);

5.1软件测试目的系统开发的时需要对于系统功能和模块进行测试来查找系统中存在的问题,在此过程中本系统根据模块依次对系统的功能进行测试,其中包5.2软件测试结果5.2.1管理员功能测试登录密码输入“666666”密码输入“666666”密码输入“welcome”文件操作文件上传,选择要上传的文件并点击上传上传成功,并提示“上传成功”文件分享,选择要分享的文件,再选择要分享的部门或者个人再选择相对应的文件资源分类分享成功,并提示“分享成功”成功文件下载,选择要下载的文件并点击下载,点击确认下载成功,并提示“文件下载成功”成功文件移动、文件重命名、文件删除、文件复制以及文件修改密级在页面中进行共享资源在页面中进行在共享资源模块中进行文件的下载、收藏和保存至网盘在页面中进行评论成功,并提示“评论提交成功”统计分析在我的空间中查询到上传文件总数、下载文件总数、分享文件总数、发布评论总数在页面中进行在团队空间中查询到团队总人数,已分配空间人数、未分配空间人数、存储空间将满的人数在页面中进行菜单管理菜单的正常显示,并且能够自定义对文件类型进行匹配在页面中进行,成功提示“操作成功”新建用户新建成功,并提示“新建成功”提示登录名不能为空提示用户名不能为空提示身份证号不能为空提示邮箱不能为空用户管理查询成功,在页面显示在页面进行授权成功,提示操作成功新建角色成功创建,并提示“操作成功”提示角色编号不能为空提示角色名称不能为空角色管理在页面进行在页面进行新建单位新建成功,并提示“操作成功”提示名称不能为空提示上级不能为空提示编码不能为空提示所在地区不能为空单位管理在页面进行新建资源新建成功,并提示“操作成功”资源分类在页面进行新增文件类型新建成功,并提示“操作成功”提示“类型名称不能为空”提示“文件类型后缀”不能为空文件类型管理在页面进行日志管理在页面中进行5.2.2用户功能测试登录密码输入“666666”密码输入“666666”密码输入“welcome”文件操作文件上传,选择要上传的文件并点击上传上传成功,并提示“上传成功”文件分享,选择要分享的文件,再选择要分享的部门或者个人再选择相对应的文件资源分类分享成功,并提示“分享成功”成功文件下载,选择要下载的文件并点击下载,点击确认下载成功,并提示“文件下载成功”成功文件移动、文件重命名、文件删除、文件复制以及文件修改密级在页面中进行共享资源在页面中进行在共享资源模块中进行文件的下载、收藏和保存至网盘在页面中进行评论成功,并提示“评论提交成功”统计分析在我的空间中查询到上传文件总数、下载文件总数、分享文件总数、发

温馨提示

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

评论

0/150

提交评论