智能法律文书系统 - 后端项目
项目概览
技术栈 : Spring Boot + JWT + MVC核心功能 : 用户认证、法律知识问答、法律文书处理与摘要生成、预测报告生成统一响应 : common.Result
封装安全认证 : JWT + 拦截器校验
项目结构树
con.example.demo ├── common │ ├── Constants.java # 全局常量 │ └── Result.java # 统一响应封装 ├── config │ └── WebConfig.java # Web配置(拦截器/跨域) ├── controller │ ├── LoginController.java # 登录API │ ├── QARecordController.java # 问答记录管理 │ ├── WendaController.java # 问答功能 │ ├── WenShuController.java # 文书处理 │ └── YuceController.java # 预测功能 ├── exception │ ├── ServiceException.java # 自定义业务异常 │ └── ServiceExceptionHandler.java # 全局异常处理器 ├── interceptor │ └── LoginCheckInterceptor.java # 登录校验拦截器 ├── pojo │ ├── dto │ │ ├── Dialog.java # 对话DTO │ │ └── LoginRequest.java # 登录请求DTO │ └── User.java # 用户实体 ├── repository │ ├── LoginRepository.java # 登录数据访问 │ └── QARecordRepository.java # 问答记录数据访问 ├── service │ ├── impl │ │ ├── LoginServiceImpl.java # 登录服务实现 │ │ └── QARecordServiceImpl.java # 问答服务实现 │ ├── LoginService.java # 登录服务接口 │ └── QARecordService.java # 问答服务接口 ├── utils │ └── JwtUtils.java # JWT令牌工具 ├── DemoApplication.java # SpringBoot启动类 └── pom.xml # Maven依赖配置
核心模块说明
1. 控制层 (controller
)
控制器 功能说明 LoginController
用户登录/登出/注册 QARecordController
AI问答记录的增删改查 WendaController
智能问答核心业务 WenShuController
法律文书生成与分析 YuceController
预测报告生成与结果分析
2. 服务层 (service
)
接口/实现 功能说明 LoginService
定义认证逻辑接口 QARecordService
定义问答记录操作接口 LoginServiceImpl
实现登录校验/JWT生成 QARecordServiceImpl
实现问答记录管理逻辑
3. 数据层 (repository
)
数据访问对象 功能说明 LoginRepository
用户数据CRUD操作 QARecordRepository
问答记录数据CRUD操作
4. 安全体系
组件 功能说明 JwtUtils
生成/解析JWT令牌 LoginCheckInterceptor
拦截非法请求并验证Token有效性 WebConfig
注册拦截器并配置跨域规则
5. 全局处理
组件 功能说明 ServiceException
自定义业务异常(如: “用户不存在”) ServiceExceptionHandler
捕获所有异常并返回统一格式 Result
标准化响应格式: {code, msg, data}
Constants
定义状态码/错误消息等常量
关键技术点
认证流程
Client LoginController LoginServiceImpl LoginRepository JwtUtils 其他API LoginCheckInterceptor 提交用户名密码 调用认证服务 查询用户数据 生成Token 返回Token 携带Token请求 校验Token有效性 通过/拒绝 Client LoginController LoginServiceImpl LoginRepository JwtUtils 其他API LoginCheckInterceptor
异常处理机制
@ControllerAdvice
public class ServiceExceptionHandler { @ExceptionHandler ( ServiceException . class ) @ResponseBody public Result handle ( ServiceException se) { return Result . error ( se. getCode ( ) , se. getMessage ( ) ) ; }
}
统一响应格式
package com. example. demo. common ; public class Result { private Integer code; private String msg; private Object data; public Result ( ) { } public Result ( Integer code, String msg, Object data) { this . code = code; this . msg = msg; this . data = data; } public static Result success ( ) { return new Result ( 200 , "success" , null ) ; } public static Result success ( Object data) { return new Result ( 200 , "success" , data) ; } public static Result success ( String msg) { return new Result ( 200 , msg, null ) ; } public static Result success ( Integer code, String msg, Object data) { return new Result ( code, msg, data) ; } public static Result error ( String msg) { return new Result ( Constants . CODE_500 , msg, null ) ; } public static Result error ( Integer code, String msg) { return new Result ( code, msg, null ) ; } public static Result error ( Integer code, String msg, Object data) { return new Result ( code, msg, data) ; } public Integer getCode ( ) { return code; } public void setCode ( Integer code) { this . code = code; } public String getMsg ( ) { return msg; } public void setMsg ( String msg) { this . msg = msg; } public Object getData ( ) { return data; } public void setData ( Object data) { this . data = data; } public String toString ( ) { return "Result{code = " + code + ", msg = " + msg + ", data = " + data + "}" ; }
}
项目依赖详见 pom.xml 全局常量配置: common.Constants
法律智能系统 - 前端项目
技术栈概览
核心框架 : Vue 3状态管理 : Vuex路由管理 : Vue RouterHTTP库 : AxiosUI适配 : 移动端兼容方案构建工具 : Webpack + Vue CLI
项目结构树
LEGAL/ ├── public/ # 静态资源 │ ├── favicon.ico # 网站图标 │ └── index.html # 主入口HTML ├── src/ # 核心源码 │ ├── assets/ # 静态资源 │ ├── coms/ # 公共组件 (疑似components缩写) │ ├── css/ # 全局样式 │ │ └── k.css # 自定义样式 │ ├── login/ # 登录模块工具 │ │ ├── axios/ # HTTP请求封装 │ │ │ ├── awaitapi.js # API异步处理 │ │ │ └── request.js # 请求拦截器 │ │ └── components/login/ │ │ └── Login_Auth.vue # 登录认证组件 │ ├── mixin/ # 混入逻辑 │ │ └── index.js # 公共方法复用 │ ├── router/ # 路由管理 │ │ └── index.js # 路由配置 │ ├── store/ # 状态管理 │ │ ├── index.js # Vuex主仓库 │ │ └── mobile.js # 移动端状态管理 │ ├── views/ # 页面视图 │ │ ├── home/ # 首页 │ │ │ ├── Home.vue # 首页组件 │ │ │ └── HomeView.vue # 首页视图 │ │ ├── login/ # 登录页 │ │ │ └── Login.vue │ │ ├── register/ # 注册页 │ │ │ └── register.vue │ │ ├── souc/ # 检索模块 │ │ │ └── souc.vue │ │ ├── wenda/ # 智能问答 │ │ │ ├── history.vue # 问答记录历史会话 │ │ │ └── wenda.vue # 问答主界面 │ │ ├── wenshu/ # 法律文书处理 │ │ │ ├── history1.vue # 法律文书历史会话 │ │ │ └── wenshu.vue # 法律文书生成 │ │ └── yuce/ # 预测分析 │ │ └── yuce.vue # 预测页面 │ ├── App.vue # 根组件 │ └── main.js # 应用入口 ├── .browserslistrc # 浏览器兼容配置 ├── .eslintrc.js # ESLint规则 ├── babel.config.js # Babel配置 ├── vue.config.js # Vue CLI配置 ├── webpack.base.config.js # Webpack基础配置 ├── package.json # 依赖管理 └── README.md # 项目说明
核心模块说明
1. 页面视图 (views
)
页面 文件 功能说明 首页 Home.vue
系统主界面 登录 Login.vue
用户登录 注册 register.vue
用户注册 搜索 souc.vue
全局搜索功能 问答 wenda.vue
智能问答交互界面 问答历史会话 history.vue
用户问答记录查询 法律文书摘要生成 wenshu.vue
法律文书摘要生成界面 法律文书摘要历史会话 history1.vue
法律文书摘要历史会话查询 预测分析 yuce.vue
数据预测分析界面
2. 请求处理 (axios
)
文件 功能说明 request.js
Axios实例封装(拦截器/基地址) awaitapi.js
异步API统一管理
3. 状态管理 (store
)
文件 功能说明 index.js
全局状态管理(用户信息等) mobile.js
移动端适配状态管理
4. 路由配置 (router
)
文件 功能说明 index.js
路由定义/懒加载/导航守卫
5. 公共资源
目录/文件 功能说明 css/k.css
核心自定义样式 mixin
复用逻辑(如表单验证) assets
静态资源(图片/图标)
关键技术点
请求封装 (request.js
)
import axios from 'axios' const request = axios. create ( { baseURL : 'http://localhost:9090' , timeout : 60000
} )
request. interceptors. request. use ( config => { if ( ! ( config. data instanceof FormData ) ) { config. headers[ 'Content-Type' ] = 'application/json;charset=utf-8' ; } let jwtToken = localStorage. getItem ( 'jwtToken' ) ; if ( jwtToken) { config. headers[ 'jwtToken' ] = jwtToken; } return config
} , error => { return Promise. reject ( error)
} ) ;
request. interceptors. response. use ( response => { let res = response. data; if ( response. config. responseType === 'blob' ) { return res} if ( typeof res === 'string' ) { res = res ? JSON . parse ( res) : res} return res; } , error => { console. log ( 'err' + error) return Promise. reject ( error) }
) export default request
路由守卫逻辑 (router/index.js)
import Vue from 'vue'
import VueRouter from 'vue-router' const Home = ( ) => import ( '@/views/home/Home' )
const Login = ( ) => import ( '@/views/login/Login' )
const HomeView = ( ) => import ( '@/views/home/HomeView' )
const wenshu = ( ) => import ( '@/views/wenshu/wenshu' )
const yuce = ( ) => import ( '@/views/yuce/yuce' )
const wenda = ( ) => import ( '@/views/wenda/wenda' )
const history = ( ) => import ( '@/views/wenda/history' )
const history1 = ( ) => import ( '@/views/wenshu/history1' )
const souc = ( ) => import ( '@/views/souc/souc' )
const zhuc = ( ) => import ( '@/views/register/register' ) Vue. use ( VueRouter)
const routes = [ { path : '/' , component : Login} , { name : '19' , path : '/zhuc' , component : zhuc} , { path : '/home' , component : Home, children : [ { path : "/home" , name : '0' , redirect : '/homeview' } , { name : '1' , path : '/homeview' , component : HomeView} , { name : '12' , path : '/wenshu' , component : wenshu} , { name : '13' , path : '/yuce' , component : yuce} , { name : '14' , path : '/wenda' , component : wenda} , { name : '15' , path : '/lishi' , component : history} , { name : '16' , path : '/lishi1' , component : history1} , { name : '18' , path : '/souc' , component : souc} , ] } ,
] const router = new VueRouter ( { mode : 'history' , routes
} ) export default router
移动端适配方案 (store/mobile.js)
const mobile = { namespaced : true , state : { name : "" , } , getters : { } , mutations : { setname ( state, e ) { console. log ( e) ; state. name= e. name} } , actions : { }
}
export default mobile;
启动说明
安装依赖
npm install
开发模式
npm run serve
生产构建
npm run build
环境配置
在 .env 文件中配置后端地址:
VUE_APP_BASE_API = 'http://your-backend-api.com'
详细配置参考 vue.config.js 和 package.json 组件规范参考 components/login/Login_Auth.vue