1. 项目概述:为什么要做在线法律咨询辅助系统
很多法律信息分散在不同网页中,普通用户遇到问题时往往不知道应该从哪里查起,也不容易持续跟踪咨询进度。本项目以"信息查询 + 在线提交 + 后台回复"为主线,将法律资讯、法律信息、在线咨询、预约、委托和留言集中到一个 B/S 系统中。
系统的核心价值不是代替律师作出专业判断,而是降低信息检索和沟通成本:用户可以在线了解公开信息、提交问题和查看回复;管理员可以统一维护内容、用户和各类业务记录。
- 减少时间与地点限制,用户可通过浏览器完成常用操作。
- 将咨询、预约、委托与留言数据统一留痕,便于查询和管理。
- 通过角色和权限区分普通用户与管理员,避免后台功能被越权访问。
- 采用前后端分离思路,便于后续增加移动端、消息提醒或智能检索功能。

图 1 普通用户首页:资讯入口与主要业务导航
2. 技术选型与系统架构
项目使用 Java 作为后端开发语言,以 Spring Boot 搭建服务端;前端采用 Vue.js,并结合 Vue-Router、Vuex、Ajax 与 Element UI 完成路由、状态管理、接口通信和页面组件。数据持久化使用 MyBatis 与 MySQL,论文中同时提到 Redis,可用于缓存或会话相关场景。
|--------|----------------------|----------------------|
| 层次 | 技术 | 主要职责 |
| 表现层 | Vue.js、Element UI | 表单、列表、导航、咨询提交与后台管理页面 |
| 前端基础 | Vue-Router、Vuex、Ajax | 页面路由、全局状态、前后端数据通信 |
| 服务层 | Spring Boot、Java | 接口、业务校验、登录鉴权、统一响应 |
| 持久层 | MyBatis | 实体映射、条件查询与增删改查 |
| 数据层 | MySQL、Redis | 业务数据持久化,以及可选的缓存或会话支持 |
架构要点 浏览器只负责交互与展示,核心业务规则和权限判断放在服务端;数据库负责持久化,避免在前端保存敏感业务状态。
3. 角色划分与功能模块
系统主要包含普通用户和管理员两类角色。设计时先明确每类用户能"看什么、提交什么、管理什么",再把功能拆成可独立维护的模块。
|--------|---------------------------------------------------|
| 角色 | 核心功能 |
| 普通用户 | 注册登录、浏览公告与法律资讯、查看法律信息、提交委托、在线咨询、在线预约、在线留言、收藏与个人中心 |
| 管理员 | 后台首页、轮播图、公告、法律资讯与分类、用户、法律信息、用户委托、在线咨询、在线预约、在线留言管理 |
从业务闭环来看,最关键的是在线咨询:用户填写咨询标题、类型、联系方式和问题内容;管理员在后台查看记录并回复;用户再次进入系统即可查看处理结果。
4. 数据库设计:围绕业务对象建表
数据库设计不能只按页面数量机械建表,更适合围绕"用户、内容、互动、业务申请、权限"五类对象组织。论文中的主要数据表可以归纳如下。
|--------|-------------------------------------------------------------------|-------------------------|
| 类别 | 代表数据表 | 用途 |
| 账号权限 | user、ordinary_users、user_group、auth、access_token | 保存账号、普通用户资料、用户组、权限与登录令牌 |
| 内容资讯 | article、article_type、legal_information、notice、slides | 管理资讯、分类、法律信息、公告与轮播图 |
| 互动行为 | collect、comment、praise、hits | 收藏、评论、点赞与浏览记录 |
| 业务记录 | user_delegation、online_consultation、online_booking、online_message | 委托、咨询、预约与留言 |
| 文件资源 | upload | 统一记录上传文件及其访问位置 |
4.1 关键表之间的关系
- 用户表与用户组关联,用于确定登录用户的角色和可访问范围。
- 普通用户资料通过 user_id 与账号关联,业务表再保存提交用户或其联系方式。
- 咨询、预约、委托和留言各自独立建表,便于按照不同状态和处理流程维护。
- 资讯与资讯分类分表保存,支持分类筛选;收藏、评论、点赞等互动记录关联用户与内容。
设计建议 业务表建议统一增加创建时间、更新时间、处理状态、处理人和逻辑删除字段;常用查询条件应建立索引。手机号、邮箱等个人信息应按最小必要原则采集,并做好脱敏与访问控制。
5. 核心实现:登录、鉴权与咨询闭环
5.1 登录处理流程
论文中的登录接口支持用户名、邮箱或手机号三种方式。后端先识别登录标识并查询用户,再检查用户组、审核状态和账号状态;密码验证成功后生成访问令牌并返回用户信息。
- 接收账号标识与密码,完成非空和格式校验。
- 按用户名、邮箱或手机号查询账号,避免在控制器中拼接 SQL。
- 检查用户组、资料审核状态和账号可用状态。
- 使用安全的密码哈希算法验证密码。
- 生成访问令牌,保存有效期与用户 ID,并向前端返回必要信息。
下面的代码按论文流程进行了简化,重点展示控制器与服务层的职责边界:
@PostMapping("/login")
public Result<LoginVO> login(@Valid @RequestBody LoginDTO dto) {
User user = userService.findByLoginName(dto.getLoginName())
.orElseThrow(() -> new BizException("账号或密码错误"));
userService.checkLoginAllowed(user);
if (!passwordEncoder.matches(dto.getPassword(), user.getPassword())) {
throw new BizException("账号或密码错误");
}
String token = tokenService.issue(user.getUserId());
return Result.success(LoginVO.of(user, token));
}
安全提醒 论文示例使用 MD5 并包含动态 SQL 拼接。生产环境应改用 BCrypt、Argon2 等专用密码哈希算法,所有查询使用参数绑定或白名单映射,同时配置令牌过期、注销、限流与登录失败锁定策略。
图 2 系统登录界面
5.2 在线咨询业务闭环
咨询模块不是简单的新增表单,而是一个有状态的业务流程。建议将状态明确为"待处理、处理中、已回复、已关闭",并记录提交时间、回复内容、回复人和回复时间。
- 用户提交咨询,后端校验必填项并写入待处理记录。
- 管理员按状态筛选咨询,查看详情后填写回复。
- 系统更新处理状态和回复时间,必要时发送站内提醒。
- 用户在"我的咨询"中查看答复;完成后可关闭或补充问题。
6. 管理端实现:列表、表单与权限控制
后台页面以列表查询和表单维护为主。通用实现可以抽象为"条件筛选 + 分页列表 + 新增/编辑 + 删除或状态变更",但不同模块仍需保留各自的业务校验。例如,回复咨询时必须校验记录状态;删除用户前要处理关联数据;发布法律资讯前要校验分类和内容完整性。
- 列表接口统一支持页码、每页数量、排序字段和有限的筛选条件。
- 新增与编辑使用 DTO 校验,不直接把数据库实体暴露给前端。
- 管理员接口在服务端进行角色校验,不能只依赖前端隐藏菜单。
- 涉及文件上传时限制扩展名、大小和存储路径,并生成不可预测的文件名。
- 富文本内容入库和展示前进行 XSS 过滤,避免恶意脚本。

图 3 后台法律信息列表与维护操作
图 4 后台法律信息新增与编辑界面
7. 测试思路:不仅要测"能不能点通"
论文采用黑盒测试与白盒测试相结合的思路。对这类管理系统,至少应覆盖正常流程、异常输入、权限边界和数据一致性四个方面。
|----------|---------------------------|-----------------------|
| 测试对象 | 关键场景 | 预期结果 |
| 登录 | 正确密码、错误密码、禁用账号、未审核用户、过期令牌 | 正确返回或拒绝,错误信息不泄露账号是否存在 |
| 权限 | 普通用户直接访问后台接口、跨用户查看咨询记录 | 服务端返回无权限,不能仅靠菜单隐藏 |
| 咨询 | 缺少必填项、重复提交、管理员回复、用户查看结果 | 校验明确,状态流转和数据归属正确 |
| 列表 | 分页边界、空数据、组合筛选、非法排序字段 | 返回结构稳定,非法字段被拒绝或忽略 |
| 安全 | SQL 注入、XSS、文件伪装、暴力登录 | 输入被拦截或安全处理,并产生必要日志 |
8. 可以继续优化的方向
- 搜索体验:为法律资讯和法律信息增加全文检索、关键词高亮与分类筛选。
- 消息提醒:咨询被回复或预约状态变化时,通过站内消息或合规渠道提醒用户。
- 数据安全:对联系方式等敏感字段加密存储,日志中进行脱敏,建立数据保留和删除策略。
- 接口治理:补充统一异常处理、接口文档、参数校验、操作审计和限流策略。
- 部署运维:拆分开发与生产配置,使用 HTTPS,备份 MySQL,并监控接口错误率与响应时间。
- 智能辅助:可增加基于公开法律知识的检索式问答,但必须展示来源、限制范围,并明确其不能替代专业法律服务。
9. 总结
这个项目覆盖了 Spring Boot + Vue 管理系统中最典型的一组能力:账号与角色、内容管理、业务表单、后台回复、数据库设计和功能测试。对毕业设计或 Java Web 入门项目而言,真正值得复用的不是某个页面,而是从需求拆分、数据建模、接口设计到权限与测试的完整开发思路。
在论文版本基础上继续完善时,建议优先处理密码存储、动态 SQL、数据权限、个人信息保护和状态流转,再考虑搜索、提醒与智能辅助功能。这样既能提升项目完成度,也能让系统更接近真实生产环境。
建议标签: Spring Boot · Vue.js · Java · MySQL · 毕业设计
整理说明: 本文根据上传论文重新编排并删减;技术安全建议为发布前补充说明。CSDN 发布时请根据实际项目与版权归属再次核对。