摘 要
本论文旨在介绍基于SSM(Spring+Spring MVC+MyBatis)框架的在线法律咨询与服务平台的设计与实现。随着互联网的快速发展,人们对法律咨询与服务的需求日益增长,传统的线下方式已经无法满足用户的多样化需求。因此,设计和开发一个高效、安全且便捷的在线法律咨询与服务平台具有重要意义。
本文首先分析了目前法律咨询与服务领域存在的问题和挑战,包括信息不对称、服务质量参差不齐等。接着,通过需求调研和功能分析,确定了在线法律咨询与服务平台的主要功能模块,如用户注册与登录、在线咨询、案件管理等。然后,详细介绍了系统的架构设计和数据库设计,以保证系统的可扩展性和数据安全性。
在实现阶段,本文采用SSM框架作为系统的开发工具,并结合前端技术,如HTML、CSS、JavaScript等,实现了用户界面的友好性和交互性。在软件调试和测试过程中,采用了单元测试、集成测试和用户验收测试等方法,确保系统的稳定性和功能完备性。
最后,通过对系统的综合评估和用户反馈的收集,验证了基于SSM框架的在线法律咨询与服务平台的有效性和可行性。本文的研究成果为相关领域的研究者和开发人员提供了有益的参考和借鉴,同时也为满足用户多样化需求的在线法律咨询与服务提供了一种可行的解决方案。
关键词:在线法律咨询与服务;SSM框架;系统设计与实现;软件调试;功能模块;用户界面
SSM Online Legal Consultation and Service Platform
Abstract
This paper aims to introduce the design and implementation of an online legal consultation and service platform based on the SSM (Spring+Spring MVC+MyBatis) framework. With the rapid development of the Internet, people's demand for legal consultation and services is increasing day by day, and traditional offline methods can no longer meet the diverse needs of users. Therefore, designing and developing an efficient, secure, and convenient online legal consultation and service platform is of great significance.
This article first analyzes the current problems and challenges in the field of legal consultation and services, including information asymmetry and uneven service quality. Subsequently, through demand research and functional analysis, the main functional modules of the online legal consultation and service platform were determined, such as user registration and login, online consultation, case management, etc. Then, a detailed introduction was given to the system architecture design and database design to ensure system scalability and data security.
In the implementation phase, this article uses the SSM framework as the development tool for the system, and combines front-end technologies such as HTML, CSS, JavaScript, etc. to achieve user-friendly and interactive user interfaces. During the software debugging and testing process, methods such as unit testing, integration testing, and user acceptance testing were adopted to ensure the stability and functional completeness of the system.
Finally, the effectiveness and feasibility of the online legal consultation and service platform based on the SSM framework were verified through comprehensive evaluation of the system and collection of user feedback. The research results of this article provide useful reference and inspiration for researchers and developers in related fields, and also provide a feasible solution for online legal consultation and services to meet the diverse needs of users.
Keywords: online legal consultation and services; SSM framework; System design and implementation; Software debugging; Functional modules; user interface
目录
1.3研究内容
致谢 40
第1章 绪论
1.1研究背景
随着社会的发展和法律环境的复杂化,人们对法律咨询与服务的需求日益增长。然而,传统的线下法律咨询方式存在诸多问题,如地域限制、时间成本高、服务质量参差不齐等。同时,互联网的快速普及和技术的进步为在线法律咨询与服务提供了新的机遇和挑战。
在传统的线下法律咨询模式中,信息不对称是一个常见的问题。用户往往难以准确获取到合适的法律服务提供者,而律师也面临着客户需求匹配和案件管理的困扰。此外,由于线下咨询的时间和地点限制,用户可能需要长时间等待或者前往律师事务所,给双方带来不便。
为了解决这些问题,许多在线法律咨询与服务平台应运而生。这些平台通过互联网技术实现了用户和律师的线上连接,提供了便捷、高效、可靠的法律咨询与服务。然而,目前市场上的在线法律咨询与服务平台仍然存在一些问题,如用户体验不佳、信息安全隐患等,因此有必要进行深入研究和改进。
基于以上背景,本论文将以基于SSM框架的在线法律咨询与服务平台的设计与实现为研究对象,旨在提供一种高效、安全且便捷的在线法律咨询与服务解决方案。通过充分利用互联网技术和软件开发的优势,希望能够满足用户对法律咨询与服务的多样化需求,并提升整个行业的服务质量和效率。
1.2开发现状
当前,在线法律咨询与服务平台的开发正在取得快速发展。越来越多的公司和机构开始关注并投入资源进行相关系统的设计与实现。这些平台类型多样化,包括综合型平台和专业化平台。综合型平台提供广泛的法律咨询与服务,涵盖多个领域;而专业化平台则针对特定领域或专业律师提供专业化服务。技术支持方面,采用SSM框架、前端技术和云计算等不断完善,提高了平台的性能、安全性和可扩展性。用户体验也得到了大幅优化,通过改进用户界面设计、提供友好的操作方式和加强与用户的互动性来提升用户满意度。同时,平台的合规要求也得到重视,确保律师资质认证、用户隐私保护、交易安全等方面符合相关法律法规和行业准则。然而,在线法律咨询与服务平台仍面临一些挑战,如信息不对称问题、平台的可信度和权威性建立等。因此,继续深入研究和改进在线法律咨询与服务平台的开发,提高平台的可用性和用户满意度,是未来发展的关键方向。
1.3研究内容
在线法律咨询与服务平台系统的开发及实现,所需要的工作内容:
(1)首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。
(2)系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,本在线法律咨询与服务平台的开发使用JAVA技术,数据库进行平台的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成在线法律咨询与服务平台的实现。
(3)确定好系统使用的技术,进行在线确认系统所划分的咨询者用户角色,并且根据咨询者用户角色划分确定所要设计的功能模块,对于在线法律咨询与服务平台的设计主要划分别为管理员和律师,咨询者用户三个角色,并所使用的功能模块也相应不同,但是系统的数据库实现的内容是交互的,咨询者用户跟律师可以随时根据自己的需求进行咨询,管理员获取到所有咨询者用户跟律师的详细数据信息,并根据需求进行第一时间处理解决。
(4)系统的功能模块确认完成后进行程序及界面的设计,设计完成后,并且通过测试来判断程序是否完善,对于系统测试,需要不同的人进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞,并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。
第2章 相关技术介绍
2.1 开发技术
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的ssm框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用ssm作为开发框架,同时集成MyBatis、Redis等相关技术。
2.2 Java简介
Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,Java servlet API,JSP(Java server pages),和XML技术。Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器上运行。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。
Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。
2.3 MVVM模式
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
2.4 B/S结构
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
2.5 MySQL数据库
Mysql的语言是非结构化的,用户可以在数据上进行工作。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。并且因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,所以得到了普遍的应用。
Mysql数据库在编程过程中的作用是很广泛的,为用户进行数据查询带来了方便。Mysql数据库的应用因其灵活性强,功能强大,所以在实现某功能时只需要一小段代码,而不像其他程序需要编写大段代码。总体来说,Mysql数据库的语言相对要简洁很多。
数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据的存放是按固定格式,而不是无序的,其定义就是:长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要是数据存储、修改和增加以及数据表的建立。为了保证系统数据的正常运行,一些有能力的处理者可以进行管理而不需要专业的人来处理。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。
2.6 SSM框架介绍
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
1.6.1 Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
1.6.2 SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
1.6.3 mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
第3章 系统分析
3.1可行性分析
技术性方面,采用当前主流的SSM框架进行系统主体框架的搭建,使用java技术实现前台页面的设计与美观调整,以上技术,均由本人经过系统学习,并且都是在课程设计中实践过的,可以使得开发更加便捷和系统。从技术角度看,这个系统是完全可以实现的。
实用性方面,本次设计的主要任务是在在线法律咨询与服务平台内实现管理员:首页,个人中心,系统用户管理,擅长类型管理,律师信息管理,咨询信息管理,预约接案管理,系统管理,通知公告管理,资源管理等功能,符合当前潮流的发展。从注册用户角度出发,同时也考虑系统运营成本和人力资源,采用网络上的便捷方式,实现线上业务,使得业务流程更系统,也更方便用户的体验,比较实用。
经济性方面,由于本课题中设计的在线法律咨询与服务平台的主要目的是为了能够更加方便及快捷的进行信息的查询管理及检索服务,也就是能够可以直接投入使用的信息化软件。系统的主要成本主要是集中在对使用数据后期继续维护及其管理更新这个操作上。但是一旦系统投入到实际的运行及使用之后就能够很好的提高信息查询检索的效率,同时也需要有效的保证查询者的信息方面的安全性,同时该系统所带来的实际应用方面的价值是远远的超过了实际系统进行开发与维护方面的成本,因此,从经济上来说开发这个软件是可行的。
3.2功能需求分析
在线法律咨询与服务平台的功能主要分为咨询者用户,管理员,律师,根据自己的需求进行注册登录,咨询,回复等操作。后台系统管理员主要对普通用户,律师用户管理,系统用户管理,擅长类型管理,律师信息管理,咨询信息管理,预约接案管理,系统管理,通知公告管理,资源管理进行处理。
咨询者用户后台功能图如下所示。
![](https://i-blog.csdnimg.cn/direct/295e2b32539a4dada5428743a847178e.png)
图3-1 咨询者用户后台功能图
管理员后台功能图如下所示。
![](https://i-blog.csdnimg.cn/direct/865437107bcc4cf5aea84d874dbfb6f0.png)
图3-2 管理员用例图
律师后台功能图如下所示。
![](https://i-blog.csdnimg.cn/direct/5fd598e58ce94f968e97c3c6fcdb878c.png)
图3-3 律师后台功能图
在线法律咨询与服务平台在对需求做解析后,整个系统主要分为三个部分:管理员、咨询者用户和律师,每个模块下的分支功能不一样。对功能做出如下说明:
咨询者用户模块:
账号登录认证。
管理个人资料信息,修改可修改的信息项。
有通知公告,法律知识,律师信息,后台管理。
律师模块:
个人资料管理,修改删除自己的信息。
有律师信息管理,咨询信息管理,预约接案管理。
管理员模块:
系统用户的管理,管理和添加删除管理员,可以设置登录权限,或者删除所有用户账号。
擅长类型管理能查看到律师擅长类型列表和擅长类型添加等。
律师信息管理能查看到律师的信息列表,如律师账号,姓名,擅长类型、专业领域、从业经验、预约费用等。还具有咨询、预约、点赞、收藏律师账号和律师信息添加等功能。
咨询信息管理主要能查看到用户的咨询信息列表等。
系统管理主要有轮播图管理这一大板块。
通知公告管理主要能查看网站上的各类通知等公告。
资源管理主要能查看到网站上提供的各类法律知识和知识分类等。
系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。
3.3数据流程分析
零层数据流程图包括了登录、用户功能和检索维护等模块,在登录模块使用到的数据存储有用户账户文档,用户功能模块需要的存储是用户各功能模块数据文档,检索维护是使用以上这些数据文档通过关键词进行检索。
系统的零层数据流图如下图所示。
![](https://i-blog.csdnimg.cn/direct/550e506d2c55409193192aa6484bd701.png)
图3-2系统数据流图(零层)
一层数据流程图是对零层数据流程图的细化,将登录细分为填制登录数据和完善数据,用户功能细分为用户基本功能和用户主要功能。
系统的一层数据流图如下图所示。
![](https://i-blog.csdnimg.cn/direct/9983cca99d4e47a4ac3e9138a572c15f.png)
图3-3系统数据流图(一层)
第4章 系统设计
4.1系统架构设计
目前B/S体系的系统主要的数据访问方式是:通过浏览器页面用户可以进入系统,系统可以自动对用户向服务器发送的请求进行处理,处理请求是在系统后台中进行的,用户在浏览器页面上进行相应操作,就能够看到服务端传递的处理结果。在线法律咨询与服务平台系统主要分为视图-模型-控制三层架构设计。在视图层中,主要是操作在服务器端向客户端反馈并显示的数据,在模型层中,主要处理相关的业务逻辑、数据整合等,最后的控制层它介于视图和模型之间,主要是调整两层之间的关系,最终落实数据的传递。
系统架构图如下图所示。
![](https://i-blog.csdnimg.cn/direct/98cdf64029364d938c3f0b696983c6e8.png)
图4-1系统架构图
4.2 系统功能结构
系统设计的目的是分析系统包括的所有功能结构,为开发人员设计开发和实现系统做好准备工作。经过前期的需求调查、分析和整理之后,确定的总体需求主要包括多个模块,分别是:系统用户管理,通知公告管理,法律知识管理,律师信息管理,擅长类型管理,咨询信息管理,预约接案管理,系统管理,通知公告管理,资源管理。系统整体角色分为三个部分,一是咨询者用户、二是律师、最后是管理员。权限分布也是很明显,普通用户是在除去浏览信息之外还具有查询和管理自己账户信息、咨询信息管理,预约接案管理,收藏管理等权限;管理员是最高权限拥有者。
系统功能结构图如下图所示。
![](https://i-blog.csdnimg.cn/direct/385e178726824ec1942104febd908dd5.png)
图4-2系统功能结构图
4.3功能模块设计
用户管理模块
该模块是为所有用户登录设计的,如咨询者用户这种普通用户登录后只能进行自己的普通功能操作(如个人信息修改),管理员和律师登录后有不同的权限,管理员不能超越权限。管理员能对整个系统的数据进行管理,主要是用户的登录权限以及用户登录后在系统里的操作权限。
购咨询者用户管理
咨询者用户可录入服务名称,是否通过点击查询。依次查看个人状态信息数据,然后刷数据页面,每条数据右边有删除和编辑按钮,来完成相应的删除和更新功能。
咨询者信息管理
咨询者用户可根据信息表里律师姓名等点击查询。依次查看个人状态信息数据,然后刷数据页面详情,每条数据上边有查询和重置按钮,来完成相应的查看和更新功能。
预约接案管理
咨询者用户根据信息列表里律师姓名点击查询。依次查看个人状态信息数据,支付状态、接案状态、预约费用然后刷数据页面详情,每条数据上边有查询和重置按钮,来完成相应的查看和更新功能。
收藏管理
咨询者用户可点击查看收藏列表里收藏的律师信息详情和其他法律知识等。
4.4数据库设计
4.4.1概念模型
对于一个要开发的系统来说,E-R图可以让别人能更快更轻松的了解此系统的事务及它们之间的关系。
系统总体ER图如下图所示。
![](https://i-blog.csdnimg.cn/direct/320a4e76b96041f097e7b7be7a4c776e.png)
图4-4系统总体ER图
管理员(管理员id、用户名、密码、权限)
律师(首页,个人中心,律师信息管理,咨询信息管理,预约接案管理)
前台(首页,个人中心,通知公告,法律知识,律师信息)
咨询者用户(咨询者用户:首页,个人中心,咨询信息管理,预约接案管理,收藏管理)
数据库逻辑结构就是将E-R图在数据库中用具体的字段进行描述。用字段和数据类型描述来使对象特征实体化,最后形成具有一定逻辑关系的数据库表结构。在线法律咨询与服务平台系统所需要的部分数据结构表如下表所示。
数据库名:project71174
文档版本:1.0.0
文档描述:数据库设计文档
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表appointment_for_case_reception (预约接案)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | appointment_for_case_reception_id | int | 10 | 0 | N | Y | 预约接案ID | |
2 | lawyer_users | int | 10 | 0 | Y | N | 0 | 律师用户 |
3 | lawyers_name | varchar | 64 | 0 | Y | N | 律师姓名 | |
4 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | mobile_phone_number | varchar | 64 | 0 | Y | N | 手机号码 | |
7 | appointment_fees | int | 10 | 0 | Y | N | 0 | 预约费用 |
8 | case_acceptance_status | varchar | 64 | 0 | Y | N | 接案状态 | |
9 | case_brief | text | 65535 | 0 | Y | N | 案件简诉 | |
10 | user_feedback | text | 65535 | 0 | Y | N | 用户反馈 | |
11 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
12 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表consultation_information (咨询信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | consultation_information_id | int | 10 | 0 | N | Y | 咨询信息ID | |
2 | lawyer_users | int | 10 | 0 | Y | N | 0 | 律师用户 |
3 | lawyers_name | varchar | 64 | 0 | Y | N | 律师姓名 | |
4 | consulting_users | int | 10 | 0 | Y | N | 0 | 咨询用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | consultation_date | date | 10 | 0 | Y | N | 咨询日期 | |
7 | reply_status | varchar | 64 | 0 | Y | N | 回复状态 | |
8 | consultation_questions | text | 65535 | 0 | Y | N | 咨询问题 | |
9 | lawyers_reply | text | 65535 | 0 | Y | N | 律师回复 | |
10 | user_reviews | text | 65535 | 0 | Y | N | 用户评价 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | lawyer_information_id | int | 10 | 0 | N | Y | 律师信息ID | |
2 | lawyer_users | int | 10 | 0 | Y | N | 0 | 律师用户 |
3 | lawyers_name | varchar | 64 | 0 | Y | N | 律师姓名 | |
4 | lawyers_gender | varchar | 64 | 0 | Y | N | 律师性别 | |
5 | professional_field | varchar | 64 | 0 | Y | N | 专业领域 | |
6 | proficient_in_type | varchar | 64 | 0 | Y | N | 擅长类型 | |
7 | professional_experience | varchar | 64 | 0 | Y | N | 从业经验 | |
8 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
9 | appointment_fees | int | 10 | 0 | Y | N | 0 | 预约费用 |
10 | lawyer_introduction | text | 65535 | 0 | Y | N | 律师简介 | |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | lawyer_users_id | int | 10 | 0 | N | Y | 律师用户ID | |
2 | lawyers_name | varchar | 64 | 0 | Y | N | 律师姓名 | |
3 | lawyers_gender | varchar | 64 | 0 | Y | N | 律师性别 | |
4 | professional_field | varchar | 64 | 0 | Y | N | 专业领域 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | proficient_in_type_id | int | 10 | 0 | N | Y | 擅长类型ID | |
2 | proficient_in_type | varchar | 64 | 0 | Y | N | 擅长类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | mobile_phone_number | varchar | 64 | 0 | Y | N | 手机号码 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
第5章 系统实现
5.1登录模块的实现
系统的登录窗口是用户的入口,用户只有在登录成功后才可以进入访问。通过在登录提交表单,后台处理判断是否为合法用户,进行页面跳转,进入系统中去。
登录合法性判断过程:用户输入账号和密码后,系统首先确定输入输入数据合法性,然后在login.jsp页面发送登录请求,调用src下的mainctrl类的dopost方法来验证。
用户登录模块的IPO如下所示:
输入:用户名和密码。
处理:
1)检测用户输入的账号、密码是否正确及在数据库已对应存在。
2)从数据库中提取记录,并储存在本地的session中(timeout默认=30min)。
3)根据用户名,将其显示在系统首页上。
输出:是否成功的信息。
登录流程图如下所示。
![](https://i-blog.csdnimg.cn/direct/c9d654b4476c471c835eed6bae98bea5.png)
图5-1登录流程图
咨询者用户平台登录界面如下所示。
![](https://i-blog.csdnimg.cn/direct/46a2d9e1b1d44979a30e77d05a6945cd.png)
图5-2系统登录界面
登录关键代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.2用户系统模块的实现
5.2.1 咨询者用户登录首页模块
系统呈现出一种简洁大方的首页:界面简约、鳞次栉比,用户能轻车熟路的使用。出于对系统使用群体广泛的顾虑,应有良好性能的后台。
如下图所示为系统的首页界面。
![](https://i-blog.csdnimg.cn/direct/8f8ea84f88784e90be51303c4b003e7e.png)
图5-3咨询者用户登录首页界面
5.2.2后台管理模块
后台管理模块有系统用户管理,有个人首页,咨询信息,预约接案,收藏等内容。如图5-4所示。
![](https://i-blog.csdnimg.cn/direct/f889c232314a4e07828795cdd3cce6b1.png)
图5-4后台管理界面图
5.2.3咨询信息管理模块
咨询信息管理模块可查看在平台上咨询律师的问题以及律师给予的回复,并可根据需要进行查询、评论、重置等操作。如图5-5所示。
![](https://i-blog.csdnimg.cn/direct/5f6ddca68e434a30b8b017f866f77940.png)
图5-5擅长信息管理模块界面如图
5.2.4预约接案管理模块
预约接案管理可查看案件状态是否已结案,如已结案即可在线通过微信,支付宝,网银第三方等支付案件结案费用,也可留言用户反馈,并可根据需要进行查询、重置等操作。如图5-6所示。
![](https://i-blog.csdnimg.cn/direct/884fbc38d68a4b52aad5cbb056e1c323.png)
图5-6预约接案管理界面
5.3.1管理员模块
管理员在yhzhgl查看信息,先使用sql语句查询出所有咨询者用户的数据,然后调用PageManager.getPages(url,4,sql, request ),返回一个ArrayList的对象,在for循环里,使用jsp得到每个ArrayList对象的数据,在jsp页面中解析ArrayList对象,得到其各个键值对的值。
管理员首页界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/5ea808ca31b241b38cf245bd7e6b816c.png)
图5-7管理员首页界面
管理员首页界面图代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
this.addMap(paramMap);
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
5.3.2擅长类型模块
擅长类型列表用于展示已有的擅长类型,管理员可以查看和管理各个律师所擅长的法律领域。而擅长类型添加则允许管理员新增新的擅长类型,以满足用户对更多法律领域的需求。通过这两个功能,管理员能够有效地管理和维护平台上的擅长类型信息,确保用户能够准确选择符合自己需求的律师。
擅长类型模块如下图所示。
![](https://i-blog.csdnimg.cn/direct/1e4db4f9209b4675a85b32d0c012bb5d.png)
图5-8擅长类型模块图
擅长类型代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
5.3.3律师信息界面如下图所示。
律师信息列表用于展示已注册的律师信息,管理员可以查看和管理律师的基本信息、专业领域,擅长类型等。而律师信息添加功能则允许管理员新增律师的详细信息,包括姓名、专业领域、工作经历等,以便用户能够全面了解律师的背景和专业能力。通过这两个功能,管理员能够高效地管理和更新平台上的律师信息,提供给用户更准确和可靠的律师选择。
![](https://i-blog.csdnimg.cn/direct/4d81ed1bbf0e4d9890ecfd036fd01bd4.png)
图5-9律师信息界面图
律师信息代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
5.3.4资源管理模块
资源管理有法律知识,知识分类两个版面,管理员可查看评论,添加发布新增的法律知识等,也可按需求查询、删除、添加等功能。
![](https://i-blog.csdnimg.cn/direct/2227f29d8df6483b89045da0b815dfd4.png)
图5-10系统管理界面
律师管理模块有律师信息管理,咨询信息管理,预约接案管理把主键的uId传zhuanjiaController控制器,再调用控制器的deletezhuanjia方法,数据经过zhuanjiaService业务层解析和处理,请求zhuanjiaMapper持久层调用deleteByPrimaryKey方法操作数据库将教师数据从数据库中删除。
查找律师时,输入需要查找的律师名,调用getData方法获取所有数据并且进行分页,把获取到的所有数据显示到视图上,这时候只需要用脚本方法便能快速查找,不涉及对数据库操作。
律师管理流程图如下所示。
![](https://i-blog.csdnimg.cn/direct/a04ed93049d748799ab217c36a798fc2.png)
图5-11律师管理流程图
5.4.1律师登录界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/f97068e72b444daeb477d931f7c60d25.png)
图5-12律师登录界面
第6章 系统测试
6.1系统测试的目的
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,再测试过程中发现问题,并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但对于长期使用而言是非常重要和必要系统的开发。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
论文管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在论文管理系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
6.2系统测试方法
在对论文管理系统进行测试的时候在找到问题的情况下必须在第一时间找到解决问题的办法,不要存在侥幸的心理,这样才能让论文管理系统开发的质量可以过关,并且开发的周期会大大缩短,还有就是在测试时,不要出现重复性的错误,遇到一个错误问题,要将整个论文管理系统开发所牵扯的该问题都必须一一解决,提高论文管理系统平台的安全性、稳定性。
白盒测试与黑盒测试是测试中比较常用的两种方法。
①结构测试俗称白盒测试:这种测试是在对程序的处理过程与结构都有详尽谅解的前提下,顺从程序内部的逻辑而完成的系统测试,以确定系统中所有的通路都能够遵照设计要求正常工作,不出现任何偏差。
②功能测试又成黑盒测试:主要是针对程序功能能够按照设计正常实现的一种检测,在程序接口处进行,检测程序手法数据是否正常,与外部信息的交换是否完整。
6.3功能测试
用户登录测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
修改密码测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
通过对功能的测试,论文管理系统的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
结 论
此时项目已经完成,即使实施的时间不是很长,但是这个过程中需要准备很长的一段时间去对系统设计开发所相关技术进行学习。在学习的过程中,我逐渐认识得到了我自身存在的一些不足。对于一些控制是必要的应用技能,能够理解,整个过程中仅仅是一个掌握了常用的性能和控制方法,我觉得挺容易的。从该系统中,系统的分析和设计的调查数据,并且已经经历了几个月,并努力几个月,该系统已经完成。很显然,该系统仍有很多不成熟的地方,在系统设计过程中有许多技术缺陷存在。在设计的过程中也涉及到了很多自己无法解决的问题,主要通过咨询老师解决这些问题,对于毕业设计的圆满完成,需要感谢老师们的指导。系统的开发环境和配置都是可以自行安装的,系统使用Java开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
回顾毕业设计的整个过程,既付出汗水也收获了很多。虽然经历了各种各样的困难,自己的不断研究探索,系统的实现仍有不足之处。
在以后的学习及工作中,我仍然继续学习计算机方面的技术,让我在后期的平台开发中可以更好更快的实现需求功能。我相信我可以让更多的好工作,做出更大的贡献。
第7章 总结与展望
通过这次在线法律咨询与服务平台的开发,我参考了很多相关系统的例子,取长补短,吸取了其他系统的长处,逐步对该系统进行了完善,但是该系统还是有很多的不足之处,有待以后进一步学习。
实践证明,在线法律咨询与服务平台有着非常好的发展前景,经过测试运行,系统各项功能都十分完善,界面简洁,使用方便,操作容易,在技术理论上已经成熟。
通过在线法律咨询与服务平台的开发,本人巩固了之前学过的知识,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。
目前本系统已经上线,正在试运行阶段,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在租赁的云平台服务器中。
本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。
系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。
参考文献
[1]Jia W ,Xiaoyu Z ,Shuqin L , et al. Physical properties, phenolic profile and antioxidant capacity of Java tea (Clerodendranthus spicatus) stems as affected by steam explosion treatment [J]. Food Chemistry, 2024, 440 138190-.
[2]王蓉. 努力把首席法律咨询专家制度打造成服务法治实践的精品名牌[N]. 民主与法制时报, 2023-12-29 (001).
[3]Ketki R ,Arjun K ,Nicole T F . Corrigendum to “Mental health law, policy & program in India – A fragmented narrative of change, contradictions and possibilities” [SSM - Mental Health 2 (2022) 100174] [J]. SSM - Mental Health, 2023, 4
[4]马付才. 全面推进首席法律咨询专家制度走深走实[N]. 民主与法制时报, 2023-12-07 (001).
[5]陈丽雅. 以高质量法律资源推动长春经济社会高质量发展[N]. 长春日报, 2023-12-06 (008).
[6]黄世钊. 将法学会法律咨询专家纳入多元解纷力量[N]. 广西法治日报, 2023-11-24 (B02).
[7]李继远,吴献凤. 当好政府“法治参谋” 做好基层“法律顾问”[N]. 广西法治日报, 2023-11-21 (B01).
[8]张崇宁. 健全服务体系 全力打造便捷高效普惠公共法律服务[N]. 凉山日报(汉), 2023-11-01 (007).
[9]庄德通. 打造“法律诊所”+“首席”“四个一”融合发展新模式[N]. 民主与法制时报, 2023-10-26 (001).
[10]薛应军. 首席法律咨询专家服务地方法治的“凤翔经验”[N]. 民主与法制时报, 2023-10-18 (001).
[11]赵进步,袁慧. 基于SSM框架的“云节”系统设计与实现 [J]. 电脑编程技巧与维护, 2023, (10): 90-92.
[12]调解矛盾、化解积案、助力决策……首席法律咨询专家工作取得成效[N]. 新华每日电讯, 2023-10-10 (002).
[13]崔智友. 紧扣三个坚持 发挥三个作用 创新推进首席法律咨询专家工作走深走实[N]. 民主与法制时报, 2023-09-27 (002).
[14]尚永江,卢林锋,郑能. 近3000条法律建议护航高质量发展[N]. 广西法治日报, 2023-09-25 (001).
[15]侯礼灏,迟玉红,谢虹铭. 基于知识图谱的法律问答系统研究 [J]. 电脑编程技巧与维护, 2023, (08): 106-108.
[16]胡静,钟佳男,王金兰等. 鹤峰打造远程视频法律咨询平台 群众享受“指尖”法律服务[N]. 恩施日报, 2023-06-30 (006).
[17]Stokes D . Update or migrate? Planning for MySQL 5.7 EOL [J]. InfoWorld.com, 2023,
[18]李晟. 校政协同开展法律咨询的实践与思考——以广州商学院法学院为研究对象 [J]. 教书育人(高教论坛), 2022, (30): 24-26.
[19]王晨. 基于智慧社区的手机律师服务平台设计与实现[D]. 中南民族大学, 2022.
[20]何琛. 在线诉讼中的当事人权利保障[D]. 华东政法大学, 2022.
致谢
光阴似箭,一晃大学生活即将过去了。一直以严谨的态度和积极的热情投身于学习和工作中,虽然有竞争,也有泪水,但是通过我不断学习和奋斗不断的完善自己,不仅很好的完成了我的学业而且也让我的各方面得到了发展,取得了很大的进步。
大学的生活也即将结束,虽然也有许多的不舍,但是终究是要告别的。回想大学的学习生活,有泪水也有汗水。在此期间我严格要求自己,凭着对知识的强烈追求,刻苦钻研,勤奋好学,态度端正,目标明确,牢固的掌握了一些专业知识和技能,做到了理论联系实际。除了专业知识的学习外,我还不断的扩展我的知识面,从不同的领域以不同的方式来获得新的知识。争取成为一名各方面都很合格的大学生。
这次的毕业设计,是我独自完成周期最长,也是耗力最大的一个项目。值得庆幸的是,在我毕业设计完成的过程当中,有许多帮助我的同学和老师。在几个月的开发过程中,我遇到了大大小小无数个问题。是我的舍友和老师,不断地帮助鼓励。
我的指导老师,在自身工作十分繁忙的情况下,依然能做到及时恢复我们发去的问题邮件,并抽时间对我们进行线下的辅导。指出我们设计上的失误,逻辑错误以及学习规划问题,可以说没有导师的帮助,我的毕设会陷入死胡同,是导师为我指点了迷津,像迷雾中的路灯,为我指明方向!