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 关键表之间的关系

  1. 用户表与用户组关联,用于确定登录用户的角色和可访问范围。
  2. 普通用户资料通过 user_id 与账号关联,业务表再保存提交用户或其联系方式。
  3. 咨询、预约、委托和留言各自独立建表,便于按照不同状态和处理流程维护。
  4. 资讯与资讯分类分表保存,支持分类筛选;收藏、评论、点赞等互动记录关联用户与内容。

设计建议 业务表建议统一增加创建时间、更新时间、处理状态、处理人和逻辑删除字段;常用查询条件应建立索引。手机号、邮箱等个人信息应按最小必要原则采集,并做好脱敏与访问控制。

5. 核心实现:登录、鉴权与咨询闭环

5.1 登录处理流程

论文中的登录接口支持用户名、邮箱或手机号三种方式。后端先识别登录标识并查询用户,再检查用户组、审核状态和账号状态;密码验证成功后生成访问令牌并返回用户信息。

  1. 接收账号标识与密码,完成非空和格式校验。
  2. 按用户名、邮箱或手机号查询账号,避免在控制器中拼接 SQL。
  3. 检查用户组、资料审核状态和账号可用状态。
  4. 使用安全的密码哈希算法验证密码。
  5. 生成访问令牌,保存有效期与用户 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 在线咨询业务闭环

咨询模块不是简单的新增表单,而是一个有状态的业务流程。建议将状态明确为“待处理、处理中、已回复、已关闭”,并记录提交时间、回复内容、回复人和回复时间。

  1. 用户提交咨询,后端校验必填项并写入待处理记录。
  2. 管理员按状态筛选咨询,查看详情后填写回复。
  3. 系统更新处理状态和回复时间,必要时发送站内提醒。
  4. 用户在“我的咨询”中查看答复;完成后可关闭或补充问题。

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 发布时请根据实际项目与版权归属再次核对。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐