feat: 添加后端和前端编译脚本及Docker配置
- 新增 build.sh 脚本用于编译后端 Java 项目和前端 Vue3 项目,并生成部署包 - 新增 docker-compose.yml 文件以配置 MySQL、Redis、后端和前端服务 - 新增 application-prod.yaml 配置文件用于后端服务 - 新增 Dockerfile 用于后端服务的容器化部署 - 新增 SQL 初始化脚本 xlcp_dev.sql - 新增部署文档 DEPLOYMENT.md 详细描述部署流程和环境要求
This commit is contained in:
parent
153ddeff8a
commit
c5909c6266
162
build.sh
Executable file
162
build.sh
Executable file
@ -0,0 +1,162 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# XL监狱综合管理平台 - 前后端编译脚本
|
||||||
|
# ============================================
|
||||||
|
# 功能:
|
||||||
|
# 1. 编译后端 Java 项目
|
||||||
|
# 2. 编译前端 Vue3 项目
|
||||||
|
# 3. 生成部署包
|
||||||
|
#
|
||||||
|
# 使用方法:
|
||||||
|
# 1. 修改下面的配置(可选)
|
||||||
|
# 2. 执行: bash build.sh
|
||||||
|
#
|
||||||
|
# 依赖:
|
||||||
|
# - Maven 3.8+
|
||||||
|
# - Node.js 16+
|
||||||
|
# - pnpm
|
||||||
|
# ============================================
|
||||||
|
|
||||||
|
# 配置
|
||||||
|
PROJECT_DIR="/Volumes/Dpan/github/xlcp"
|
||||||
|
BACKEND_DIR="${PROJECT_DIR}/backend"
|
||||||
|
FRONTEND_DIR="${PROJECT_DIR}/frontend"
|
||||||
|
BACKEND_OUTPUT_DIR="${PROJECT_DIR}/deploy/backend"
|
||||||
|
FRONTEND_OUTPUT_DIR="${PROJECT_DIR}/deploy/frontend"
|
||||||
|
|
||||||
|
# Maven 配置
|
||||||
|
MAVEN_PROFILE="prod"
|
||||||
|
JAVA_VERSION="17"
|
||||||
|
|
||||||
|
# 颜色输出
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo -e "${GREEN}XL监狱综合管理平台 - 前后端编译脚本${NC}"
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 检查依赖
|
||||||
|
echo -e "${BLUE}📋 检查编译环境...${NC}"
|
||||||
|
|
||||||
|
# 检查 Maven
|
||||||
|
if ! command -v mvn &> /dev/null; then
|
||||||
|
echo -e "${RED}❌ 错误: 未找到 Maven,请先安装 Maven${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo -e "${GREEN}✅ Maven 版本: $(mvn -version | head -1)${NC}"
|
||||||
|
|
||||||
|
# 检查 Node.js
|
||||||
|
if ! command -v node &> /dev/null; then
|
||||||
|
echo -e "${RED}❌ 错误: 未找到 Node.js,请先安装 Node.js${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo -e "${GREEN}✅ Node.js 版本: $(node -v)${NC}"
|
||||||
|
|
||||||
|
# 检查 pnpm
|
||||||
|
if ! command -v pnpm &> /dev/null; then
|
||||||
|
echo -e "${YELLOW}⚠️ 未找到 pnpm,尝试使用 npm...${NC}"
|
||||||
|
PACKAGE_MANAGER="npm"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✅ pnpm 版本: $(pnpm -v)${NC}"
|
||||||
|
PACKAGE_MANAGER="pnpm"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}开始编译...${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# 第一部分:编译后端
|
||||||
|
# ============================================
|
||||||
|
echo -e "${BLUE}🏗️ 编译后端项目...${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cd "${BACKEND_DIR}"
|
||||||
|
|
||||||
|
# 清理并编译
|
||||||
|
echo -e "${YELLOW}📦 清理并编译后端...${NC}"
|
||||||
|
mvn clean package -DskipTests -Dmaven.javadoc.skip=true -q
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✅ 后端编译成功!${NC}"
|
||||||
|
|
||||||
|
# 查找生成的 JAR 文件
|
||||||
|
JAR_FILE=$(find "${BACKEND_DIR}/yudao-server/target" -name "yudao-server-*.jar" 2>/dev/null | head -1)
|
||||||
|
if [ -n "$JAR_FILE" ]; then
|
||||||
|
echo -e "${GREEN}📁 生成的 JAR 文件: ${JAR_FILE}${NC}"
|
||||||
|
|
||||||
|
# 复制到部署目录
|
||||||
|
mkdir -p "${BACKEND_OUTPUT_DIR}"
|
||||||
|
cp "${JAR_FILE}" "${BACKEND_OUTPUT_DIR}/"
|
||||||
|
echo -e "${GREEN}📁 已复制到部署目录: ${BACKEND_OUTPUT_DIR}/$(basename $JAR_FILE)${NC}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ 后端编译失败!${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# 第二部分:编译前端
|
||||||
|
# ============================================
|
||||||
|
echo -e "${BLUE}🎨 编译前端项目...${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cd "${FRONTEND_DIR}"
|
||||||
|
|
||||||
|
# 检查依赖是否已安装
|
||||||
|
if [ ! -d "node_modules" ]; then
|
||||||
|
echo -e "${YELLOW}📥 安装前端依赖...${NC}"
|
||||||
|
$PACKAGE_MANAGER install
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${RED}❌ 前端依赖安装失败!${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 清理并编译生产版本
|
||||||
|
echo -e "${YELLOW}📦 编译前端生产版本...${NC}"
|
||||||
|
$PACKAGE_MANAGER build:prod
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✅ 前端编译成功!${NC}"
|
||||||
|
|
||||||
|
# 复制到部署目录
|
||||||
|
mkdir -p "${FRONTEND_OUTPUT_DIR}"
|
||||||
|
|
||||||
|
# 复制编译产物
|
||||||
|
if [ -d "dist" ]; then
|
||||||
|
rm -rf "${FRONTEND_OUTPUT_DIR}/dist"
|
||||||
|
cp -r "dist" "${FRONTEND_OUTPUT_DIR}/"
|
||||||
|
echo -e "${GREEN}📁 已复制到部署目录: ${FRONTEND_OUTPUT_DIR}/dist${NC}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ 前端编译失败!${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ============================================
|
||||||
|
# 完成
|
||||||
|
# ============================================
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo -e "${GREEN}🎉 编译完成!${NC}"
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}部署文件位置:${NC}"
|
||||||
|
echo -e " - 后端: ${BACKEND_OUTPUT_DIR}/"
|
||||||
|
echo -e " - 前端: ${FRONTEND_OUTPUT_DIR}/dist/"
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}下一步:${NC}"
|
||||||
|
echo -e " 1. 部署后端 JAR 文件"
|
||||||
|
echo -e " 2. 部署前端静态文件"
|
||||||
|
echo -e " 3. 配置 Nginx"
|
||||||
|
echo ""
|
||||||
150
deploy/config/application-prod.yaml
Normal file
150
deploy/config/application-prod.yaml
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
spring:
|
||||||
|
application:
|
||||||
|
name: xl-prison-server
|
||||||
|
|
||||||
|
# 数据源配置(使用新建的 MySQL 容器)
|
||||||
|
datasource:
|
||||||
|
dynamic:
|
||||||
|
datasource:
|
||||||
|
master:
|
||||||
|
# 使用 Docker 服务名连接 MySQL
|
||||||
|
url: jdbc:mysql://mysql:3306/prison?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useUnicode=true&characterEncoding=utf8
|
||||||
|
username: root
|
||||||
|
password: Prison2024!@
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
slave:
|
||||||
|
# 从库配置(可选,如果不需要可以删除或保持与主库相同)
|
||||||
|
url: jdbc:mysql://mysql:3306/prison?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useUnicode=true&characterEncoding=utf8
|
||||||
|
username: root
|
||||||
|
password: Prison2024!@
|
||||||
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
|
hikari:
|
||||||
|
# 连接池配置
|
||||||
|
maximum-pool-size: 20
|
||||||
|
minimum-idle: 5
|
||||||
|
idle-timeout: 600000
|
||||||
|
connection-timeout: 30000
|
||||||
|
max-lifetime: 1800000
|
||||||
|
pool-name: PrisonHikariCP
|
||||||
|
# 连接健康检测
|
||||||
|
connection-test-query: SELECT 1
|
||||||
|
|
||||||
|
# Redis 配置(使用新建的 Redis 容器)
|
||||||
|
data:
|
||||||
|
redis:
|
||||||
|
host: redis
|
||||||
|
port: 6379
|
||||||
|
password: Prison2024!@
|
||||||
|
database: 0
|
||||||
|
timeout: 10000ms
|
||||||
|
lettuce:
|
||||||
|
pool:
|
||||||
|
max-active: 20
|
||||||
|
max-wait: -1ms
|
||||||
|
max-idle: 10
|
||||||
|
min-idle: 0
|
||||||
|
shutdown-timeout: 100ms
|
||||||
|
|
||||||
|
# 文件上传配置
|
||||||
|
servlet:
|
||||||
|
multipart:
|
||||||
|
enabled: true
|
||||||
|
max-file-size: 100MB
|
||||||
|
max-request-size: 100MB
|
||||||
|
file-size-threshold: 2KB
|
||||||
|
|
||||||
|
# Jackson 配置
|
||||||
|
jackson:
|
||||||
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
|
time-zone: GMT+8
|
||||||
|
serialization:
|
||||||
|
write-dates-as-timestamps: false
|
||||||
|
|
||||||
|
# 服务器配置
|
||||||
|
server:
|
||||||
|
port: 48080
|
||||||
|
servlet:
|
||||||
|
context-path: /
|
||||||
|
compression:
|
||||||
|
enabled: true
|
||||||
|
mime-types: application/json,application/xml,text/html,text/xml,text/plain
|
||||||
|
error:
|
||||||
|
include-message: always
|
||||||
|
include-binding-errors: always
|
||||||
|
|
||||||
|
# 应用配置
|
||||||
|
app:
|
||||||
|
name: XL监狱综合管理平台
|
||||||
|
version: 1.0.0
|
||||||
|
|
||||||
|
# 验证码配置
|
||||||
|
captcha:
|
||||||
|
enabled: true
|
||||||
|
type: math
|
||||||
|
|
||||||
|
# 文件上传配置
|
||||||
|
upload:
|
||||||
|
path: ./data/upload
|
||||||
|
avatar-path: ./data/upload/avatar
|
||||||
|
cache-path: ./data/upload/cache
|
||||||
|
|
||||||
|
# XSS 过滤配置
|
||||||
|
security:
|
||||||
|
xss:
|
||||||
|
enabled: true
|
||||||
|
exclude-urls:
|
||||||
|
- /admin/ck/uploadImage
|
||||||
|
- /admin/oss/uploadToAliCloudV2
|
||||||
|
- /admin/oss/uploadToTencentCloudV2
|
||||||
|
|
||||||
|
# 日志配置
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
root: INFO
|
||||||
|
cn.iocoder.yudao: DEBUG
|
||||||
|
cn.iocoder.yudao.module.prison: DEBUG
|
||||||
|
file:
|
||||||
|
name: logs/yudao-server.log
|
||||||
|
logback:
|
||||||
|
rollingpolicy:
|
||||||
|
max-history: 30
|
||||||
|
max-file-size: 100MB
|
||||||
|
total-size-cap: 3GB
|
||||||
|
|
||||||
|
# MyBatis Plus 配置
|
||||||
|
mybatis-plus:
|
||||||
|
mapper-locations: classpath*:mapper/**/*.xml
|
||||||
|
type-aliases-package: cn.iocoder.yudao.module.*.dal.dataobject
|
||||||
|
global-config:
|
||||||
|
db-config:
|
||||||
|
id-type: auto
|
||||||
|
logic-delete-field: deleted
|
||||||
|
logic-delete-value: 1
|
||||||
|
logic-not-delete-value: 0
|
||||||
|
banner: false
|
||||||
|
configuration:
|
||||||
|
map-underscore-to-camel-case: true
|
||||||
|
cache-enabled: false
|
||||||
|
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||||
|
|
||||||
|
# Actuator 监控配置
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
exposure:
|
||||||
|
include: health,info,metrics,prometheus
|
||||||
|
base-path: /actuator
|
||||||
|
endpoint:
|
||||||
|
health:
|
||||||
|
show-details: always
|
||||||
|
metrics:
|
||||||
|
tags:
|
||||||
|
application: ${spring.application.name}
|
||||||
|
|
||||||
|
# LLM 配置(用于危险评估智能分析)
|
||||||
|
llm:
|
||||||
|
local:
|
||||||
|
base-url: ${LLM_BASE_URL:http://127.0.0.1:5001/v1}
|
||||||
|
api-key: ${LLM_API_KEY:}
|
||||||
|
model: ${LLM_MODEL:}
|
||||||
|
timeout-seconds: ${LLM_TIMEOUT:120}
|
||||||
126
deploy/docker-compose.yml
Normal file
126
deploy/docker-compose.yml
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
name: xl-prison-system
|
||||||
|
|
||||||
|
# 复用 RAGFlow 平台的 Docker 镜像创建独立的中间件服务
|
||||||
|
# MySQL: 基于 ragflow-mysql-1 镜像 (mysql:8.0.39)
|
||||||
|
# Redis: 基于 ragflow-redis-1 镜像 (redis:6-alpine / valkey:8)
|
||||||
|
|
||||||
|
services:
|
||||||
|
# MySQL 数据库(复用 RAGFlow 镜像)
|
||||||
|
mysql:
|
||||||
|
image: mysql:8.0.39
|
||||||
|
container_name: xl-prison-mysql
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: Prison2024!@
|
||||||
|
MYSQL_DATABASE: prison
|
||||||
|
MYSQL_CHARACTER_SET_SERVER: utf8mb4
|
||||||
|
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
volumes:
|
||||||
|
- ./data/mysql:/var/lib/mysql
|
||||||
|
- ./sql:/docker-entrypoint-initdb.d:ro
|
||||||
|
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pPrison2024!@"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
networks:
|
||||||
|
- xl-prison-network
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 2G
|
||||||
|
reservations:
|
||||||
|
memory: 512M
|
||||||
|
|
||||||
|
# Redis 缓存(复用 RAGFlow 镜像)
|
||||||
|
redis:
|
||||||
|
image: redis:6-alpine
|
||||||
|
container_name: xl-prison-redis
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
volumes:
|
||||||
|
- ./data/redis:/data
|
||||||
|
command: redis-server --requirepass Prison2024!@ --appendonly yes --maxmemory 512mb --maxmemory-policy allkeys-lru
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "redis-cli", "-a", "Prison2024!@", "ping"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
networks:
|
||||||
|
- xl-prison-network
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 512M
|
||||||
|
reservations:
|
||||||
|
memory: 256M
|
||||||
|
|
||||||
|
# 后端服务
|
||||||
|
backend:
|
||||||
|
build:
|
||||||
|
context: ./backend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: xl-prison-backend
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "48080:48080"
|
||||||
|
environment:
|
||||||
|
SPRING_PROFILES_ACTIVE: prod
|
||||||
|
JAVA_OPTS: -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/heapdump -Djava.security.egd=file:/dev/./urandom
|
||||||
|
volumes:
|
||||||
|
- ./backend/config:/app/config:ro
|
||||||
|
- ./logs/backend:/app/logs
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy
|
||||||
|
redis:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
- xl-prison-network
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 2G
|
||||||
|
reservations:
|
||||||
|
memory: 512M
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:48080/actuator/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 60s
|
||||||
|
|
||||||
|
# 前端服务
|
||||||
|
frontend:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: xl-prison-frontend
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8080:80"
|
||||||
|
volumes:
|
||||||
|
- ./frontend/dist:/usr/share/nginx/html:ro
|
||||||
|
- ./frontend/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ./logs/nginx:/var/log/nginx
|
||||||
|
depends_on:
|
||||||
|
- backend
|
||||||
|
networks:
|
||||||
|
- xl-prison-network
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 256M
|
||||||
|
reservations:
|
||||||
|
memory: 128M
|
||||||
|
|
||||||
|
networks:
|
||||||
|
xl-prison-network:
|
||||||
|
driver: bridge
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 172.20.0.0/16
|
||||||
31
deploy/docker/backend/Dockerfile
Normal file
31
deploy/docker/backend/Dockerfile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# 基础镜像:使用 Eclipse Temurin JDK 17
|
||||||
|
FROM eclipse-temurin:17-jre-alpine
|
||||||
|
|
||||||
|
# 维护者信息
|
||||||
|
LABEL maintainer="XL Prison System <admin@xlprison.com>"
|
||||||
|
|
||||||
|
# 设置时区
|
||||||
|
ENV TZ=Asia/Shanghai
|
||||||
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||||
|
|
||||||
|
# 创建非 root 用户运行应用
|
||||||
|
RUN addgroup -g 1000 app && adduser -u 1000 -G app -s /bin/sh -D app
|
||||||
|
|
||||||
|
# 设置工作目录
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 创建必要的目录
|
||||||
|
RUN mkdir -p logs heapdump config && chown -R app:app /app
|
||||||
|
|
||||||
|
# 切换到非 root 用户
|
||||||
|
USER app
|
||||||
|
|
||||||
|
# 暴露端口
|
||||||
|
EXPOSE 48080
|
||||||
|
|
||||||
|
# 健康检查
|
||||||
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
|
||||||
|
CMD curl -f http://localhost:48080/actuator/health || exit 1
|
||||||
|
|
||||||
|
# 启动命令
|
||||||
|
ENTRYPOINT ["java", "-jar", "app.jar"]
|
||||||
912
deploy/sql/xlcp_dev.sql
Normal file
912
deploy/sql/xlcp_dev.sql
Normal file
@ -0,0 +1,912 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : 192.168.10.130
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 80403 (8.4.3)
|
||||||
|
Source Host : 192.168.10.130:3306
|
||||||
|
Source Schema : xlcp_dev
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 80403 (8.4.3)
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 21/01/2026 16:05:49
|
||||||
|
|
||||||
|
Note: 本文件已根据代码实体类进行了精简,只保留代码中涉及的字段
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_prisoner
|
||||||
|
-- 服刑人员信息表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_prisoner`;
|
||||||
|
CREATE TABLE `prison_prisoner` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '罪犯ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪犯编号',
|
||||||
|
`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '姓名',
|
||||||
|
`gender` tinyint NOT NULL COMMENT '性别:1-男 2-女',
|
||||||
|
`birthday` date DEFAULT NULL COMMENT '出生日期',
|
||||||
|
`id_card` varchar(18) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '身份证号',
|
||||||
|
`photo` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '照片URL',
|
||||||
|
`ethnicity` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '民族',
|
||||||
|
`native_place` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '籍贯',
|
||||||
|
`education` tinyint DEFAULT NULL COMMENT '文化程度:1-文盲 2-小学 3-初中 4-高中 5-中专 6-大专 7-本科 8-硕士 9-博士',
|
||||||
|
`occupation` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '入狱前职业',
|
||||||
|
`address` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '家庭住址',
|
||||||
|
`crime` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪名',
|
||||||
|
`sentence_years` int DEFAULT '0' COMMENT '刑期(年)',
|
||||||
|
`sentence_months` int DEFAULT '0' COMMENT '刑期(月)',
|
||||||
|
`life_imprisonment` tinyint DEFAULT '0' COMMENT '是否无期:0-否 1-是',
|
||||||
|
`death_sentence_reprieve` tinyint DEFAULT '0' COMMENT '是否死缓:0-否 1-是',
|
||||||
|
`court_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '判决法院',
|
||||||
|
`judgment_date` date DEFAULT NULL COMMENT '判决日期',
|
||||||
|
`judgment_no` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '判决书编号',
|
||||||
|
`original_sentence` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '原判刑期',
|
||||||
|
`imprisonment_date` date DEFAULT NULL COMMENT '入狱日期',
|
||||||
|
`release_date` date DEFAULT NULL COMMENT '释放日期',
|
||||||
|
`release_type` tinyint DEFAULT NULL COMMENT '释放类型',
|
||||||
|
`release_reason` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '释放原因',
|
||||||
|
`supervision_level` tinyint DEFAULT '2' COMMENT '监管等级:1-严管 2-普管 3-宽管',
|
||||||
|
`risk_level` tinyint DEFAULT '1' COMMENT '风险等级:1-低风险 2-中风险 3-高风险 4-极高风险',
|
||||||
|
`prison_area_id` bigint DEFAULT NULL COMMENT '监区ID',
|
||||||
|
`sub_area_id` bigint DEFAULT NULL COMMENT '分监区ID',
|
||||||
|
`prison_cell_id` bigint DEFAULT NULL COMMENT '监室ID',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-在押 2-已释放 3-已死亡 4-假释',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
`marital_status` tinyint DEFAULT NULL COMMENT '婚姻状态:1-未婚 2-已婚 3-离异 4-丧偶',
|
||||||
|
`crime_type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '罪名类型',
|
||||||
|
`sentence` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '刑期',
|
||||||
|
`children` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '子女情况',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_prisoner_no` (`prisoner_no`,`tenant_id`),
|
||||||
|
KEY `idx_name` (`name`),
|
||||||
|
KEY `idx_id_card` (`id_card`),
|
||||||
|
KEY `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='罪犯信息表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_area
|
||||||
|
-- 监区信息表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_area`;
|
||||||
|
CREATE TABLE `prison_area` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '监区ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '监区名称',
|
||||||
|
`code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '监区编码',
|
||||||
|
`parent_id` bigint NOT NULL DEFAULT '0' COMMENT '父级ID,0表示顶级监区',
|
||||||
|
`level` tinyint NOT NULL DEFAULT '1' COMMENT '级别:1-监区(大队) 2-分监区(中队)',
|
||||||
|
`type` tinyint DEFAULT NULL COMMENT '监区类型:1-普通监区 2-严管监区 3-集训监区 4-出监监区 5-医院 6-禁闭室',
|
||||||
|
`capacity` int DEFAULT NULL COMMENT '容纳人数',
|
||||||
|
`current_count` int DEFAULT '0' COMMENT '当前人数',
|
||||||
|
`sort` int DEFAULT '0' COMMENT '排序',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-启用 2-禁用',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_code` (`code`,`tenant_id`),
|
||||||
|
KEY `idx_sort` (`sort`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='监区信息表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_cell
|
||||||
|
-- 监室信息表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_cell`;
|
||||||
|
CREATE TABLE `prison_cell` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '监室ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`area_id` bigint NOT NULL COMMENT '所属监区ID',
|
||||||
|
`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '监室名称',
|
||||||
|
`code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '监室编码',
|
||||||
|
`capacity` int DEFAULT NULL COMMENT '床位数量',
|
||||||
|
`current_count` int DEFAULT '0' COMMENT '当前人数',
|
||||||
|
`sort` int DEFAULT '0' COMMENT '排序',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-启用 2-禁用',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_code` (`code`,`tenant_id`),
|
||||||
|
KEY `idx_area_id` (`area_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='监室信息表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_score
|
||||||
|
-- 计分考核表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_score`;
|
||||||
|
CREATE TABLE `prison_score` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪犯编号',
|
||||||
|
`year` int NOT NULL COMMENT '考核年份',
|
||||||
|
`month` int NOT NULL COMMENT '考核月份',
|
||||||
|
`base_score` decimal(10,2) DEFAULT '0.00' COMMENT '基础分',
|
||||||
|
`reward_score` decimal(10,2) DEFAULT '0.00' COMMENT '加分',
|
||||||
|
`penalty_score` decimal(10,2) DEFAULT '0.00' COMMENT '扣分',
|
||||||
|
`total_score` decimal(10,2) DEFAULT '0.00' COMMENT '总分',
|
||||||
|
`level` tinyint DEFAULT NULL COMMENT '考核等级:1-优秀 2-良好 3-合格 4-不合格',
|
||||||
|
`assessor_id` bigint DEFAULT NULL COMMENT '考核人ID',
|
||||||
|
`assessor_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '考核人姓名',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-待审核 2-已通过 3-已驳回',
|
||||||
|
`prison_area_id` bigint DEFAULT NULL COMMENT '监区ID',
|
||||||
|
`prison_cell_id` bigint DEFAULT NULL COMMENT '监室ID',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prisoner_id` (`prisoner_id`),
|
||||||
|
KEY `idx_year_month` (`year`,`month`),
|
||||||
|
KEY `idx_prison_score_prison_area_id` (`prison_area_id`),
|
||||||
|
KEY `idx_prison_score_prison_cell_id` (`prison_cell_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计分考核表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_score_rule
|
||||||
|
-- 考核规则配置表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_score_rule`;
|
||||||
|
CREATE TABLE `prison_score_rule` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '规则ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`category` tinyint NOT NULL COMMENT '类别:1-劳动改造 2-教育改造 3-日常行为 4-卫生纪律 5-加分项 6-扣分项',
|
||||||
|
`item_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '项目名称',
|
||||||
|
`item_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '项目编码(唯一)',
|
||||||
|
`score` decimal(10,2) NOT NULL COMMENT '分值',
|
||||||
|
`max_daily_score` decimal(10,2) DEFAULT NULL COMMENT '日最高分限制',
|
||||||
|
`max_monthly_score` decimal(10,2) DEFAULT NULL COMMENT '月最高分限制',
|
||||||
|
`description` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '规则说明',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-启用 2-禁用',
|
||||||
|
`sort` int DEFAULT '0' COMMENT '排序',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_item_code` (`item_code`,`tenant_id`),
|
||||||
|
KEY `idx_category` (`category`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='考核规则配置表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_score_detail
|
||||||
|
-- 考核记录明细表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_score_detail`;
|
||||||
|
CREATE TABLE `prison_score_detail` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪犯编号',
|
||||||
|
`record_date` date NOT NULL COMMENT '记录日期',
|
||||||
|
`rule_id` bigint NOT NULL COMMENT '规则ID',
|
||||||
|
`score` decimal(10,2) NOT NULL COMMENT '得分',
|
||||||
|
`score_type` tinyint NOT NULL COMMENT '类型:1-加分 2-扣分',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`recorder_id` bigint DEFAULT NULL COMMENT '记录人ID',
|
||||||
|
`recorder_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '记录人姓名',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-有效 2-作废',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prisoner_id` (`prisoner_id`),
|
||||||
|
KEY `idx_record_date` (`record_date`),
|
||||||
|
KEY `idx_rule_id` (`rule_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='考核记录明细表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_risk_assessment
|
||||||
|
-- 危险评估表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_risk_assessment`;
|
||||||
|
CREATE TABLE `prison_risk_assessment` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '评估ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪犯编号',
|
||||||
|
`assessment_type` tinyint NOT NULL COMMENT '评估类型:1-入狱评估 2-定期评估 3-专项评估',
|
||||||
|
`assessment_date` date NOT NULL COMMENT '评估日期',
|
||||||
|
`violence_score` decimal(10,2) DEFAULT '0.00' COMMENT '暴力倾向得分',
|
||||||
|
`escape_score` decimal(10,2) DEFAULT '0.00' COMMENT '脱逃倾向得分',
|
||||||
|
`suicide_score` decimal(10,2) DEFAULT '0.00' COMMENT '自杀倾向得分',
|
||||||
|
`total_score` decimal(10,2) DEFAULT '0.00' COMMENT '综合得分',
|
||||||
|
`risk_level` tinyint NOT NULL COMMENT '风险等级:1-低风险 2-中风险 3-高风险 4-极高风险',
|
||||||
|
`risk_factors` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '风险因素',
|
||||||
|
`suggestions` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '管控建议',
|
||||||
|
`assessor_id` bigint DEFAULT NULL COMMENT '评估人ID',
|
||||||
|
`assessor_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '评估人姓名',
|
||||||
|
`next_assessment_date` date DEFAULT NULL COMMENT '下次评估日期',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-待审核 2-已通过',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prisoner_id` (`prisoner_id`),
|
||||||
|
KEY `idx_assessment_date` (`assessment_date`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='危险评估表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_risk
|
||||||
|
-- 风险评估表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_risk`;
|
||||||
|
CREATE TABLE `prison_risk` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '评估ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪犯编号',
|
||||||
|
`prisoner_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '罪犯姓名',
|
||||||
|
`assessment_type` tinyint NOT NULL DEFAULT '1' COMMENT '评估类型:1-入监评估 2-定期评估 3-专项评估 4-出监评估',
|
||||||
|
`assessment_date` date NOT NULL COMMENT '评估日期',
|
||||||
|
`overall_score` decimal(5,2) DEFAULT NULL COMMENT '综合风险得分',
|
||||||
|
`risk_level` tinyint DEFAULT NULL COMMENT '风险等级:1-低风险 2-中风险 3-高风险 4-极高风险',
|
||||||
|
`mental_state` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '精神状态评估',
|
||||||
|
`escape_risk` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '脱逃风险评估',
|
||||||
|
`violence_risk` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '暴力倾向评估',
|
||||||
|
`revolt_risk` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '抗改风险评估',
|
||||||
|
`self_harm_risk` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '自杀自伤风险评估',
|
||||||
|
`recommendation` text COLLATE utf8mb4_unicode_ci COMMENT '评估建议',
|
||||||
|
`assessor` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '评估人',
|
||||||
|
`assess_method` tinyint DEFAULT NULL COMMENT '评估方式:1-心理测评 2-行为观察 3-面谈评估 4-综合评估',
|
||||||
|
`item_scores` text COLLATE utf8mb4_unicode_ci COMMENT '评估项目得分JSON',
|
||||||
|
`conclusion` text COLLATE utf8mb4_unicode_ci COMMENT '评估结论',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`risk_score` int DEFAULT NULL COMMENT '风险评分',
|
||||||
|
`risk_description` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '风险描述',
|
||||||
|
`risk_factors` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '风险因素',
|
||||||
|
`suggestions` varchar(2000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '建议措施',
|
||||||
|
`assessor_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '评估人姓名',
|
||||||
|
`status` tinyint DEFAULT '1' COMMENT '状态:1-待评估 2-评估中 3-已完成 4-已取消',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_risk_prisoner_id` (`prisoner_id`),
|
||||||
|
KEY `idx_prison_risk_assessment_type` (`assessment_type`),
|
||||||
|
KEY `idx_prison_risk_assessment_date` (`assessment_date`),
|
||||||
|
KEY `idx_prison_risk_risk_level` (`risk_level`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='风险评估表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_consumption
|
||||||
|
-- 消费记录表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_consumption`;
|
||||||
|
CREATE TABLE `prison_consumption` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪犯编号',
|
||||||
|
`type` tinyint NOT NULL DEFAULT '1' COMMENT '类型:1-购物 2-餐饮 3-医疗 4-通讯 5-其他',
|
||||||
|
`total_amount` decimal(10,2) NOT NULL COMMENT '订单总金额',
|
||||||
|
`balance` decimal(12,2) DEFAULT '0.00' COMMENT '账户余额',
|
||||||
|
`order_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '订单号',
|
||||||
|
`trade_time` datetime NOT NULL COMMENT '交易时间',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-成功 2-失败',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prisoner_id` (`prisoner_id`),
|
||||||
|
KEY `idx_trade_time` (`trade_time`),
|
||||||
|
KEY `idx_type` (`type`),
|
||||||
|
KEY `idx_prison_consumption_order_no` (`order_no`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消费记录表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_consumption_detail
|
||||||
|
-- 消费明细表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_consumption_detail`;
|
||||||
|
CREATE TABLE `prison_consumption_detail` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '明细ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`consumption_id` bigint NOT NULL COMMENT '消费订单ID',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID(冗余,便于查询)',
|
||||||
|
`goods_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品名称',
|
||||||
|
`goods_code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品编码',
|
||||||
|
`goods_price` decimal(10,2) NOT NULL COMMENT '商品单价',
|
||||||
|
`goods_count` int NOT NULL COMMENT '商品数量',
|
||||||
|
`subtotal` decimal(10,2) NOT NULL COMMENT '小计金额',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人',
|
||||||
|
`deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_consumption_detail_consumption_id` (`consumption_id`),
|
||||||
|
KEY `idx_consumption_detail_prisoner_id` (`prisoner_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='消费明细表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_questionnaire
|
||||||
|
-- 问卷模板表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_questionnaire`;
|
||||||
|
CREATE TABLE `prison_questionnaire` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '问卷ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '问卷标题',
|
||||||
|
`type` tinyint NOT NULL COMMENT '问卷类型:1-心理测评 2-行为评估 3-满意度调查',
|
||||||
|
`description` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '问卷说明',
|
||||||
|
`total_score` decimal(10,2) DEFAULT '100.00' COMMENT '总分',
|
||||||
|
`pass_score` decimal(10,2) DEFAULT '60.00' COMMENT '及格分',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-草稿 2-已发布 3-已禁用',
|
||||||
|
`cover_image` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '封面图片URL',
|
||||||
|
`instruction` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '填写说明',
|
||||||
|
`estimated_time` int DEFAULT NULL COMMENT '预计耗时(分钟)',
|
||||||
|
`part_count` int DEFAULT NULL COMMENT '分区数量',
|
||||||
|
`allow_anonymous` tinyint(1) DEFAULT NULL COMMENT '是否允许匿名:0-否 1-是',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_type` (`type`),
|
||||||
|
KEY `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='问卷模板表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_question
|
||||||
|
-- 问卷问题表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_question`;
|
||||||
|
CREATE TABLE `prison_question` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '问题ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`questionnaire_id` bigint NOT NULL COMMENT '所属问卷ID',
|
||||||
|
`title` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '问题标题',
|
||||||
|
`type` tinyint NOT NULL COMMENT '问题类型:1-单选 2-多选 3-填空 4-评分',
|
||||||
|
`options` text COLLATE utf8mb4_unicode_ci COMMENT '选项JSON:[{label:"选项1",score:10},...]',
|
||||||
|
`score` decimal(10,2) DEFAULT '0.00' COMMENT '分值',
|
||||||
|
`sort` int DEFAULT '0' COMMENT '排序',
|
||||||
|
`part_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '分区名称',
|
||||||
|
`part_sort` int DEFAULT NULL COMMENT '分区排序',
|
||||||
|
`help_text` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '帮助说明',
|
||||||
|
`placeholder` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '占位提示',
|
||||||
|
`default_value` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '默认值',
|
||||||
|
`auto_fill_type` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '自动填充类型:NONE-无 AUTO-自动 MANUAL-手动',
|
||||||
|
`auto_fill_source` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '自动填充来源',
|
||||||
|
`display_condition` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '显示条件JSON',
|
||||||
|
`min_value` decimal(10,2) DEFAULT NULL COMMENT '最小值',
|
||||||
|
`max_value` decimal(10,2) DEFAULT NULL COMMENT '最大值',
|
||||||
|
`is_required` bit(1) DEFAULT b'1' COMMENT '是否必答',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_questionnaire_id` (`questionnaire_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='问卷问题表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_questionnaire_record
|
||||||
|
-- 问卷答题记录表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_questionnaire_record`;
|
||||||
|
CREATE TABLE `prison_questionnaire_record` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`questionnaire_id` bigint NOT NULL COMMENT '问卷ID',
|
||||||
|
`questionnaire_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '问卷名称',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪犯编号',
|
||||||
|
`prisoner_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '罪犯姓名',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-待测评 2-测评中 3-已完成 4-已过期',
|
||||||
|
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
|
||||||
|
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||||||
|
`total_score` decimal(10,2) DEFAULT '0.00' COMMENT '得分',
|
||||||
|
`pass_status` tinyint DEFAULT NULL COMMENT '是否及格:1-及格 2-不及格',
|
||||||
|
`answer_time` datetime NOT NULL COMMENT '答题时间',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
`deadline` datetime DEFAULT NULL COMMENT '截止日期',
|
||||||
|
`objective_score` decimal(10,2) DEFAULT '0.00' COMMENT '客观题得分',
|
||||||
|
`subjective_score` decimal(10,2) DEFAULT '0.00' COMMENT '主观题得分',
|
||||||
|
`pass_score` decimal(10,2) DEFAULT NULL COMMENT '及格分数',
|
||||||
|
`risk_level` tinyint DEFAULT NULL COMMENT '风险等级:1-高风险 2-中风险 3-低风险',
|
||||||
|
`evaluator_id` bigint DEFAULT NULL COMMENT '评阅人ID',
|
||||||
|
`evaluator_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '评阅人姓名',
|
||||||
|
`evaluate_time` datetime DEFAULT NULL COMMENT '评阅时间',
|
||||||
|
`participant_count` int DEFAULT '0' COMMENT '参与人数',
|
||||||
|
`completed_count` int DEFAULT '0' COMMENT '完成人数',
|
||||||
|
`duration` int DEFAULT NULL COMMENT '答题用时(秒)',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_questionnaire_id` (`questionnaire_id`),
|
||||||
|
KEY `idx_prisoner_id` (`prisoner_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='问卷答题记录表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_answer
|
||||||
|
-- 问卷答题详情表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_answer`;
|
||||||
|
CREATE TABLE `prison_answer` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '答题记录ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`assessment_record_id` bigint NOT NULL COMMENT '测评记录ID',
|
||||||
|
`question_id` bigint NOT NULL COMMENT '问题ID',
|
||||||
|
`questionnaire_id` bigint DEFAULT NULL COMMENT '问卷ID(冗余)',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`question_type` tinyint NOT NULL DEFAULT '1' COMMENT '问题类型:1-单选 2-多选 3-填空 4-评分 5-日期 6-数字',
|
||||||
|
`answer_text` text COLLATE utf8mb4_unicode_ci COMMENT '答案内容(填空题、评分题等)',
|
||||||
|
`option_ids` text COLLATE utf8mb4_unicode_ci COMMENT '选项ID列表(JSON数组,如 [1,2,3])',
|
||||||
|
`score` decimal(10,2) DEFAULT NULL COMMENT '得分',
|
||||||
|
`is_correct` tinyint(1) DEFAULT NULL COMMENT '是否正确:null-未评分 false-错误 true-正确',
|
||||||
|
`duration` int DEFAULT NULL COMMENT '答题时间(秒)',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_answer_assessment_record_id` (`assessment_record_id`),
|
||||||
|
KEY `idx_prison_answer_question_id` (`question_id`),
|
||||||
|
KEY `idx_prison_answer_prisoner_id` (`prisoner_id`),
|
||||||
|
KEY `idx_prison_answer_questionnaire_id` (`questionnaire_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='问卷答题记录表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_prisoner_area_log
|
||||||
|
-- 罪犯监区变动记录表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_prisoner_area_log`;
|
||||||
|
CREATE TABLE `prison_prisoner_area_log` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`from_area_id` bigint DEFAULT NULL COMMENT '原监区ID',
|
||||||
|
`from_sub_area_id` bigint DEFAULT NULL COMMENT '原分监区ID',
|
||||||
|
`from_cell_id` bigint DEFAULT NULL COMMENT '原监室ID',
|
||||||
|
`to_area_id` bigint NOT NULL COMMENT '新监区ID',
|
||||||
|
`to_sub_area_id` bigint DEFAULT NULL COMMENT '新分监区ID',
|
||||||
|
`to_cell_id` bigint NOT NULL COMMENT '新监室ID',
|
||||||
|
`change_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '变动类型:调监区、调监室、入监、出监',
|
||||||
|
`reason` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变动原因',
|
||||||
|
`approve_no` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '批准文号',
|
||||||
|
`operate_by` bigint NOT NULL COMMENT '操作人ID',
|
||||||
|
`operate_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作人姓名',
|
||||||
|
`operate_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '罪犯编号',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prisoner_id` (`prisoner_id`),
|
||||||
|
KEY `idx_operate_time` (`operate_time`),
|
||||||
|
KEY `idx_operate_time_change_type` (`operate_time`,`change_type`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='罪犯监区变动记录表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_warning
|
||||||
|
-- 预警管理表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_warning`;
|
||||||
|
CREATE TABLE `prison_warning` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '预警ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '预警标题',
|
||||||
|
`content` text COLLATE utf8mb4_unicode_ci COMMENT '预警内容',
|
||||||
|
`type` tinyint NOT NULL DEFAULT '1' COMMENT '预警类型:1-安全预警 2-监管预警 3-改造预警 4-生产预警 5-生活卫生预警 6-其他',
|
||||||
|
`level` tinyint NOT NULL DEFAULT '1' COMMENT '预警等级:1-一般 2-重要 3-紧急 4-严重',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '预警状态:1-待核实 2-已核实 3-已处置 4-已解除',
|
||||||
|
`source` tinyint NOT NULL DEFAULT '1' COMMENT '预警来源:1-民警报告 2-监控系统 3-举报 4-罪犯自首 5-智能分析 6-其他',
|
||||||
|
`situation_id` bigint DEFAULT NULL COMMENT '关联狱情ID',
|
||||||
|
`area_id` bigint DEFAULT NULL COMMENT '关联监区ID',
|
||||||
|
`cell_id` bigint DEFAULT NULL COMMENT '关联监室ID',
|
||||||
|
`alert_time` datetime DEFAULT NULL COMMENT '预警时间',
|
||||||
|
`verify_time` datetime DEFAULT NULL COMMENT '核实时间',
|
||||||
|
`verifier` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '核实人',
|
||||||
|
`verify_result` text COLLATE utf8mb4_unicode_ci COMMENT '核实结果',
|
||||||
|
`handle_time` datetime DEFAULT NULL COMMENT '处置时间',
|
||||||
|
`handler` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '处置人',
|
||||||
|
`handle_method` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '处置方式',
|
||||||
|
`handle_result` text COLLATE utf8mb4_unicode_ci COMMENT '处置结果',
|
||||||
|
`release_time` datetime DEFAULT NULL COMMENT '解除时间',
|
||||||
|
`releaser` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '解除人',
|
||||||
|
`release_reason` text COLLATE utf8mb4_unicode_ci COMMENT '解除原因',
|
||||||
|
`occur_time` datetime DEFAULT NULL COMMENT '发生时间',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
`prisoner_id` bigint DEFAULT NULL COMMENT '关联罪犯ID',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_warning_status` (`status`),
|
||||||
|
KEY `idx_prison_warning_level` (`level`),
|
||||||
|
KEY `idx_prison_warning_type` (`type`),
|
||||||
|
KEY `idx_prison_warning_situation_id` (`situation_id`),
|
||||||
|
KEY `idx_prison_warning_area_id` (`area_id`),
|
||||||
|
KEY `idx_prison_warning_cell_id` (`cell_id`),
|
||||||
|
KEY `idx_prison_warning_alert_time` (`alert_time`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='预警管理表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_situation
|
||||||
|
-- 狱情收集表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_situation`;
|
||||||
|
CREATE TABLE `prison_situation` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '狱情ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题',
|
||||||
|
`content` text COLLATE utf8mb4_unicode_ci COMMENT '详情内容',
|
||||||
|
`category` tinyint NOT NULL DEFAULT '1' COMMENT '分类:1-监管安全 2-教育改造 3-生活卫生 4-生产安全 5-狱内案件 6-其他',
|
||||||
|
`level` tinyint NOT NULL DEFAULT '1' COMMENT '等级:1-一般 2-重要 3-紧急',
|
||||||
|
`source` tinyint NOT NULL DEFAULT '1' COMMENT '来源:1-民警报告 2-监控系统 3-举报 4-罪犯自首 5-其他',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-待处理 2-处理中 3-已处理',
|
||||||
|
`area_id` bigint DEFAULT NULL COMMENT '关联监区ID',
|
||||||
|
`cell_id` bigint DEFAULT NULL COMMENT '关联监室ID',
|
||||||
|
`reporter` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '报告人',
|
||||||
|
`handler` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '处理人',
|
||||||
|
`handle_time` datetime DEFAULT NULL COMMENT '处理时间',
|
||||||
|
`handle_result` text COLLATE utf8mb4_unicode_ci COMMENT '处理结果',
|
||||||
|
`occur_time` datetime DEFAULT NULL COMMENT '发生时间',
|
||||||
|
`location` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '地点',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
`type` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '类型',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_situation_status` (`status`),
|
||||||
|
KEY `idx_prison_situation_category` (`category`),
|
||||||
|
KEY `idx_prison_situation_level` (`level`),
|
||||||
|
KEY `idx_prison_situation_area_id` (`area_id`),
|
||||||
|
KEY `idx_prison_situation_cell_id` (`cell_id`),
|
||||||
|
KEY `idx_prison_situation_occur_time` (`occur_time`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='狱情收集表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_evaluation_dimension
|
||||||
|
-- 评估维度配置表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_evaluation_dimension`;
|
||||||
|
CREATE TABLE `prison_evaluation_dimension` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '维度ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`template_id` bigint NOT NULL COMMENT '所属模板ID',
|
||||||
|
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '维度名称',
|
||||||
|
`code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '维度编码',
|
||||||
|
`description` text COLLATE utf8mb4_unicode_ci COMMENT '维度描述',
|
||||||
|
`dimension_type` int DEFAULT NULL COMMENT '维度类型:1-基本信息 2-犯罪情况 3-服刑表现 4-心理评估 5-风险评估 6-消费行为 7-劳动表现 8-家庭帮教 9-综合分析 10-管教意见',
|
||||||
|
`weight` decimal(5,2) DEFAULT NULL COMMENT '权重(百分比)',
|
||||||
|
`score_rule` int DEFAULT NULL COMMENT '评分规则:1-分值越高越好 2-分值越低越好 3-区间评分',
|
||||||
|
`max_score` decimal(10,2) DEFAULT NULL COMMENT '最大分值',
|
||||||
|
`min_score` decimal(10,2) DEFAULT NULL COMMENT '最小分值',
|
||||||
|
`pass_score` decimal(10,2) DEFAULT NULL COMMENT '及格分值',
|
||||||
|
`evaluation_method` int DEFAULT NULL COMMENT '评估方式:1-问卷测评 2-量表评分 3-行为观察 4-AI分析 5-综合评定',
|
||||||
|
`output_format` tinyint DEFAULT '1' COMMENT '输出格式:1-文本 2-段落 3-列表 4-评分 5-富文本',
|
||||||
|
`editor_type` tinyint DEFAULT '1' COMMENT '编辑器类型:1-文本框 2-富文本 3-下拉选择 4-评分组件',
|
||||||
|
`ai_enabled` tinyint(1) DEFAULT '0' COMMENT '是否AI生成:0-否 1-是',
|
||||||
|
`ai_prompt` text COLLATE utf8mb4_unicode_ci COMMENT 'AI提示词,用于指导AI生成该维度的内容',
|
||||||
|
`questions` text COLLATE utf8mb4_unicode_ci COMMENT '问题列表(JSON格式)',
|
||||||
|
`status` int DEFAULT '1' COMMENT '是否启用:1-启用 2-禁用',
|
||||||
|
`data_sources` text COLLATE utf8mb4_unicode_ci COMMENT '数据源绑定',
|
||||||
|
`is_required` tinyint(1) DEFAULT '1' COMMENT '是否必填:0-否 1-是',
|
||||||
|
`sort` int DEFAULT '0' COMMENT '排序',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_evaluation_dimension_template` (`template_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评估维度配置表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_evaluation_dimension_data
|
||||||
|
-- 报告维度数据表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_evaluation_dimension_data`;
|
||||||
|
CREATE TABLE `prison_evaluation_dimension_data` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '数据ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`report_id` bigint NOT NULL COMMENT '报告ID',
|
||||||
|
`dimension_id` bigint NOT NULL COMMENT '维度配置ID',
|
||||||
|
`dimension_code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '维度编码',
|
||||||
|
`dimension_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '维度名称',
|
||||||
|
`dimension_type` int DEFAULT NULL COMMENT '维度类型:1-心理测评 2-行为表现 3-教育改造 4-劳动表现 5-人际交往 6-自评/他评',
|
||||||
|
`score` decimal(10,2) DEFAULT NULL COMMENT '得分',
|
||||||
|
`full_score` decimal(10,2) DEFAULT NULL COMMENT '满分',
|
||||||
|
`weighted_score` decimal(10,2) DEFAULT NULL COMMENT '权重得分',
|
||||||
|
`level` int DEFAULT NULL COMMENT '评级:1-优秀 2-良好 3-一般 4-较差',
|
||||||
|
`conclusion` text COLLATE utf8mb4_unicode_ci COMMENT '维度结论',
|
||||||
|
`comment` text COLLATE utf8mb4_unicode_ci COMMENT '维度评语',
|
||||||
|
`ai_analysis` text COLLATE utf8mb4_unicode_ci COMMENT 'AI分析内容',
|
||||||
|
`answer_details` text COLLATE utf8mb4_unicode_ci COMMENT '回答详情(JSON格式)',
|
||||||
|
`sort` int DEFAULT NULL COMMENT '排序',
|
||||||
|
`content` text COLLATE utf8mb4_unicode_ci COMMENT '填充内容',
|
||||||
|
`is_ai_generated` tinyint(1) DEFAULT '0' COMMENT '是否AI生成:0-否 1-是',
|
||||||
|
`is_modified` tinyint(1) DEFAULT '0' COMMENT '是否人工修改:0-否 1-是',
|
||||||
|
`modified_by` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '修改人',
|
||||||
|
`modified_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||||
|
`data_source` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '数据来源',
|
||||||
|
`raw_data` text COLLATE utf8mb4_unicode_ci COMMENT '原始数据JSON',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_evaluation_dimension_data_report` (`report_id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='报告维度数据表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_evaluation_report
|
||||||
|
-- 评估报告表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_evaluation_report`;
|
||||||
|
CREATE TABLE `prison_evaluation_report` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '报告ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`report_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报告编号',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`prisoner_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '罪犯姓名',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '罪犯编号',
|
||||||
|
`template_id` bigint NOT NULL COMMENT '模板ID',
|
||||||
|
`template_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板名称',
|
||||||
|
`evaluation_type` tinyint DEFAULT NULL COMMENT '评估类型:1-心理评估 2-危险性评估 3-改造表现评估 4-综合评估',
|
||||||
|
`evaluation_cycle` tinyint DEFAULT NULL COMMENT '评估周期:1-月评 2-季评 3-半年评 4-年终评 5-入监评估 6-出监评估',
|
||||||
|
`evaluation_date` date DEFAULT NULL COMMENT '评估日期',
|
||||||
|
`risk_level` tinyint DEFAULT NULL COMMENT '风险等级:1-低风险 2-中风险 3-高风险',
|
||||||
|
`conclusion` text COLLATE utf8mb4_unicode_ci COMMENT '综合结论',
|
||||||
|
`suggestions` text COLLATE utf8mb4_unicode_ci COMMENT '改造建议',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-草稿 2-待审核 3-已通过 4-已退回 5-已归档',
|
||||||
|
`ai_status` tinyint NOT NULL DEFAULT '0' COMMENT 'AI生成状态:0-未生成 1-生成中 2-生成完成 3-生成失败',
|
||||||
|
`auditor_id` bigint DEFAULT NULL COMMENT '审核人ID',
|
||||||
|
`auditor_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核人姓名',
|
||||||
|
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||||||
|
`audit_opinion` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核意见',
|
||||||
|
`evaluator_id` bigint DEFAULT NULL COMMENT '评估人员ID',
|
||||||
|
`evaluator_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '评估人员姓名',
|
||||||
|
`area_id` bigint DEFAULT NULL COMMENT '监区ID',
|
||||||
|
`area_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '监区名称',
|
||||||
|
`total_score` decimal(10,2) DEFAULT NULL COMMENT '总分',
|
||||||
|
`level` tinyint DEFAULT NULL COMMENT '评级:1-优秀 2-良好 3-一般 4-较差 5-危险',
|
||||||
|
`risk_score` decimal(10,2) DEFAULT NULL COMMENT '风险得分',
|
||||||
|
`ai_content` text COLLATE utf8mb4_unicode_ci COMMENT 'AI生成内容',
|
||||||
|
`ai_report_content` text COLLATE utf8mb4_unicode_ci COMMENT 'AI生成报告内容',
|
||||||
|
`pdf_path` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '报告PDF路径',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_prison_evaluation_report_no` (`report_no`),
|
||||||
|
KEY `idx_prison_evaluation_report_prisoner` (`prisoner_id`),
|
||||||
|
KEY `idx_prison_evaluation_report_template` (`template_id`),
|
||||||
|
KEY `idx_prison_evaluation_report_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评估报告表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_evaluation_template
|
||||||
|
-- 评估报告模板表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_evaluation_template`;
|
||||||
|
CREATE TABLE `prison_evaluation_template` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '模板ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板名称',
|
||||||
|
`code` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板编码',
|
||||||
|
`type` tinyint NOT NULL COMMENT '模板类型:1-入监综合评估 2-定期考核报告 3-出监评估 4-减刑假释建议 5-专项评估',
|
||||||
|
`title_format` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '报告标题格式',
|
||||||
|
`description` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板描述',
|
||||||
|
`applicable_crowd` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '适用人群',
|
||||||
|
`evaluation_cycle` tinyint DEFAULT NULL COMMENT '评估周期类型',
|
||||||
|
`ai_enabled` tinyint(1) DEFAULT '0' COMMENT '是否允许AI生成',
|
||||||
|
`ai_prompt` text COLLATE utf8mb4_unicode_ci COMMENT 'AI提示词配置',
|
||||||
|
`cover_image` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '报告封面图',
|
||||||
|
`sort` int DEFAULT '0' COMMENT '排序',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`style_config` text COLLATE utf8mb4_unicode_ci COMMENT '样式配置JSON',
|
||||||
|
`is_default` tinyint(1) DEFAULT '0' COMMENT '是否默认模板:0-否 1-是',
|
||||||
|
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-停用 1-启用',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_evaluation_template_type` (`type`),
|
||||||
|
KEY `idx_prison_evaluation_template_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评估报告模板表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_report
|
||||||
|
-- 评估报告表(通用)
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_report`;
|
||||||
|
CREATE TABLE `prison_report` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '报告ID',
|
||||||
|
`report_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报告编号',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`prisoner_id` bigint NOT NULL COMMENT '罪犯ID',
|
||||||
|
`prisoner_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '罪犯编号',
|
||||||
|
`prisoner_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '罪犯姓名',
|
||||||
|
`template_id` bigint NOT NULL COMMENT '模板ID',
|
||||||
|
`template_name` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '模板名称',
|
||||||
|
`title` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报告标题',
|
||||||
|
`report_date` date NOT NULL COMMENT '报告日期',
|
||||||
|
`dimensions` text COLLATE utf8mb4_unicode_ci COMMENT '维度内容,JSON格式',
|
||||||
|
`conclusion` text COLLATE utf8mb4_unicode_ci COMMENT '综合结论',
|
||||||
|
`suggestions` text COLLATE utf8mb4_unicode_ci COMMENT '改造建议',
|
||||||
|
`risk_level` tinyint DEFAULT NULL COMMENT '风险等级:1-低风险 2-中风险 3-高风险 4-极高风险',
|
||||||
|
`attachments` text COLLATE utf8mb4_unicode_ci COMMENT '附件列表,JSON格式',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1-草稿 2-待审核 3-已通过 4-已退回',
|
||||||
|
`version` int NOT NULL DEFAULT '1' COMMENT '版本号',
|
||||||
|
`signature` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '数字签名',
|
||||||
|
`fingerprint` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '报告指纹',
|
||||||
|
`submitter_id` bigint DEFAULT NULL COMMENT '提交人ID',
|
||||||
|
`submitter_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '提交人姓名',
|
||||||
|
`submit_time` datetime DEFAULT NULL COMMENT '提交时间',
|
||||||
|
`reviewer_id` bigint DEFAULT NULL COMMENT '审核人ID',
|
||||||
|
`reviewer_name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核人姓名',
|
||||||
|
`review_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||||||
|
`review_comment` text COLLATE utf8mb4_unicode_ci COMMENT '审核意见',
|
||||||
|
`archived` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否已归档',
|
||||||
|
`archived_time` datetime DEFAULT NULL COMMENT '归档时间',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `uk_report_no` (`report_no`),
|
||||||
|
KEY `idx_prison_report_prisoner_id` (`prisoner_id`),
|
||||||
|
KEY `idx_prison_report_template_id` (`template_id`),
|
||||||
|
KEY `idx_prison_report_status` (`status`),
|
||||||
|
KEY `idx_prison_report_report_date` (`report_date`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评估报告表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_report_template
|
||||||
|
-- 评估报告模板表(通用)
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_report_template`;
|
||||||
|
CREATE TABLE `prison_report_template` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '模板ID',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板名称',
|
||||||
|
`type` tinyint NOT NULL DEFAULT '1' COMMENT '模板类型:1-入监综合评估 2-定期考核报告 3-出监评估 4-减刑假释建议 5-专项评估',
|
||||||
|
`title_format` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '报告标题格式',
|
||||||
|
`dimensions` text COLLATE utf8mb4_unicode_ci COMMENT '评估维度配置,JSON格式',
|
||||||
|
`ai_prompt_config` text COLLATE utf8mb4_unicode_ci COMMENT 'AI提示词配置,JSON格式',
|
||||||
|
`style_config` text COLLATE utf8mb4_unicode_ci COMMENT '样式配置,JSON格式',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-停用 1-启用',
|
||||||
|
`is_default` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否默认',
|
||||||
|
`version` int NOT NULL DEFAULT '1' COMMENT '版本号',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_report_template_type` (`type`),
|
||||||
|
KEY `idx_prison_report_template_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评估报告模板表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_report_comment
|
||||||
|
-- 快捷评语表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_report_comment`;
|
||||||
|
CREATE TABLE `prison_report_comment` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '评语ID',
|
||||||
|
`content` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '评语内容',
|
||||||
|
`comment_type` tinyint NOT NULL DEFAULT '1' COMMENT '评语类型:1-心理评语 2-行为表现评语 3-教育改造评语 4-劳动表现评语 5-综合评语 6-风险提示 7-建议措施',
|
||||||
|
`dimension_id` bigint DEFAULT NULL COMMENT '适用维度(关联维度表)',
|
||||||
|
`dimension_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '维度名称',
|
||||||
|
`level` tinyint DEFAULT NULL COMMENT '评级等级:1-优秀 2-良好 3-一般 4-较差 5-危险',
|
||||||
|
`tags` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标签(逗号分隔)',
|
||||||
|
`use_count` int DEFAULT '0' COMMENT '使用次数',
|
||||||
|
`sort` int DEFAULT '0' COMMENT '排序',
|
||||||
|
`remark` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||||
|
`dimension` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '适用维度',
|
||||||
|
`is_builtin` tinyint(1) DEFAULT '0' COMMENT '是否内置:0-否 1-是',
|
||||||
|
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-停用 1-启用',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
`tenant_id` bigint DEFAULT '0' COMMENT '租户编号',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_report_comment_dimension` (`dimension`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='快捷评语表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_quick_comment
|
||||||
|
-- 快捷评语表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_quick_comment`;
|
||||||
|
CREATE TABLE `prison_quick_comment` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '评语ID',
|
||||||
|
`category_id` bigint NOT NULL COMMENT '分类ID',
|
||||||
|
`content` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '评语内容',
|
||||||
|
`usage_count` int NOT NULL DEFAULT '0' COMMENT '使用次数',
|
||||||
|
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-停用 1-启用',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_quick_comment_category_id` (`category_id`),
|
||||||
|
KEY `idx_prison_quick_comment_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='快捷评语表';
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for prison_comment_category
|
||||||
|
-- 快捷评语分类表
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `prison_comment_category`;
|
||||||
|
CREATE TABLE `prison_comment_category` (
|
||||||
|
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类ID',
|
||||||
|
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分类名称',
|
||||||
|
`type` tinyint NOT NULL DEFAULT '1' COMMENT '评估类型:1-入监 2-定期 3-出监 4-减刑 5-专项',
|
||||||
|
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
|
||||||
|
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:0-停用 1-启用',
|
||||||
|
`creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||||
|
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||||
|
`tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_prison_comment_category_type` (`type`),
|
||||||
|
KEY `idx_prison_comment_category_status` (`status`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='快捷评语分类表';
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
756
docs/DEPLOYMENT.md
Normal file
756
docs/DEPLOYMENT.md
Normal file
@ -0,0 +1,756 @@
|
|||||||
|
# XL 监狱综合管理平台部署文档
|
||||||
|
|
||||||
|
## 1. 文档概述
|
||||||
|
|
||||||
|
本文档详细描述 XL 监狱综合管理平台在服务器 `root@192.168.10.150` 上的部署流程。该平台采用 Docker 容器化部署方式,包含 MySQL 数据库、Redis 缓存、Spring Boot 后端服务和 Nginx 前端服务。
|
||||||
|
|
||||||
|
### 1.1 系统架构
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 服务器 192.168.10.150 │
|
||||||
|
├─────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ │
|
||||||
|
│ ┌───────────────────────────────────────────────────────────────┐ │
|
||||||
|
│ │ Docker 网络 (xl-prison-network) │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ │ ┌─────────────┐ ┌─────────────┐ ┌────────────────────────┐ │ │
|
||||||
|
│ │ │ MySQL 8 │ │ Redis 6 │ │ 后端服务 (Java) │ │ │
|
||||||
|
│ │ │ 端口:3306 │ │ 端口:6379 │ │ 端口:48080 │ │ │
|
||||||
|
│ │ │ │ │ │ │ │ │ │
|
||||||
|
│ │ └──────┬──────┘ └──────┬──────┘ └───────────┬────────────┘ │ │
|
||||||
|
│ │ │ │ │ │ │
|
||||||
|
│ │ └────────────────┼──────────────────────┘ │ │
|
||||||
|
│ │ │ │ │
|
||||||
|
│ │ ┌──────┴──────┐ │ │
|
||||||
|
│ │ │ Nginx │ │ │
|
||||||
|
│ │ │ 端口:8080 │ │ │
|
||||||
|
│ │ └──────┬──────┘ │ │
|
||||||
|
│ │ │ │ │
|
||||||
|
│ └──────────────────────────┼─────────────────────────────────────┘ │
|
||||||
|
│ │ │
|
||||||
|
│ ▼ │
|
||||||
|
│ 外部用户访问入口 │
|
||||||
|
│ http://192.168.10.150:8080 │
|
||||||
|
│ │
|
||||||
|
└─────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.2 端口分配
|
||||||
|
|
||||||
|
| 服务 | 端口 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| Nginx 前端 | 8080 | Web 访问入口 |
|
||||||
|
| Spring Boot 后端 | 48080 | API 服务端口 |
|
||||||
|
| MySQL | 3306 | 数据库服务 |
|
||||||
|
| Redis | 6379 | 缓存服务 |
|
||||||
|
|
||||||
|
### 1.3 环境要求
|
||||||
|
|
||||||
|
在开始部署之前,请确保目标服务器满足以下最低要求:
|
||||||
|
|
||||||
|
- **操作系统**: CentOS 7+ / Ubuntu 18+ / Rocky Linux 8+ / Debian 10+
|
||||||
|
- **CPU**: 最低 2 核,推荐 4 核或更多
|
||||||
|
- **内存**: 最低 4GB,推荐 8GB 或更多
|
||||||
|
- **硬盘**: 最低 50GB 可用空间,推荐 100GB SSD
|
||||||
|
- **网络**: 具备互联网访问能力,用于下载 Docker 镜像
|
||||||
|
|
||||||
|
## 2. 服务器环境准备
|
||||||
|
|
||||||
|
### 2.1 安装 Docker
|
||||||
|
|
||||||
|
以下是在 CentOS/Rocky Linux 系统上安装 Docker 的步骤。如果您的服务器已安装 Docker,请跳过此步骤。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 安装必要依赖
|
||||||
|
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
|
||||||
|
|
||||||
|
# 2. 添加 Docker 官方仓库
|
||||||
|
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
||||||
|
|
||||||
|
# 3. 安装 Docker 引擎
|
||||||
|
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
|
||||||
|
# 4. 启动 Docker 服务
|
||||||
|
sudo systemctl start docker
|
||||||
|
|
||||||
|
# 5. 设置开机自启动
|
||||||
|
sudo systemctl enable docker
|
||||||
|
|
||||||
|
# 6. 验证安装
|
||||||
|
docker --version
|
||||||
|
docker compose version
|
||||||
|
```
|
||||||
|
|
||||||
|
对于 Ubuntu/Debian 系统,请使用以下命令:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 更新软件包索引
|
||||||
|
sudo apt-get update
|
||||||
|
|
||||||
|
# 2. 安装必要依赖
|
||||||
|
sudo apt-get install -y ca-certificates curl gnupg lsb-release
|
||||||
|
|
||||||
|
# 3. 添加 Docker 官方 GPG 密钥
|
||||||
|
sudo mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
|
||||||
|
# 4. 设置 Docker 仓库
|
||||||
|
echo \
|
||||||
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
|
||||||
|
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
|
||||||
|
# 5. 安装 Docker
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
|
||||||
|
# 6. 启动并设置开机自启动
|
||||||
|
sudo systemctl start docker
|
||||||
|
sudo systemctl enable docker
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2 配置 Docker 镜像加速
|
||||||
|
|
||||||
|
为了加速 Docker 镜像的下载,建议配置国内镜像加速器。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 创建 Docker 配置目录
|
||||||
|
sudo mkdir -p /etc/docker
|
||||||
|
|
||||||
|
# 配置镜像加速器
|
||||||
|
sudo tee /etc/docker/daemon.json <<-EOF
|
||||||
|
{
|
||||||
|
"registry-mirrors": [
|
||||||
|
"https://docker.mirrors.ustc.edu.cn",
|
||||||
|
"https://hub-mirror.c.163.com",
|
||||||
|
"https://registry.docker-cn.com"
|
||||||
|
],
|
||||||
|
"log-driver": "json-file",
|
||||||
|
"log-opts": {
|
||||||
|
"max-size": "100m",
|
||||||
|
"max-file": "3"
|
||||||
|
},
|
||||||
|
"storage-driver": "overlay2"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 重启 Docker 服务
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl restart docker
|
||||||
|
|
||||||
|
# 验证配置
|
||||||
|
docker info | grep "Registry Mirrors"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.3 安装 Git(用于拉取代码)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# CentOS/Rocky Linux
|
||||||
|
sudo yum install -y git
|
||||||
|
|
||||||
|
# Ubuntu/Debian
|
||||||
|
sudo apt-get install -y git
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. 项目部署
|
||||||
|
|
||||||
|
### 3.1 创建部署目录结构
|
||||||
|
|
||||||
|
在服务器上创建项目部署目录:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 创建项目根目录
|
||||||
|
sudo mkdir -p /work/projects/xl-prison
|
||||||
|
sudo mkdir -p /work/projects/xl-prison/{backend,frontend,data/{mysql,redis},logs,sql}
|
||||||
|
|
||||||
|
# 设置目录所有者(请将 username 替换为实际用户名)
|
||||||
|
sudo chown -R $USER:$USER /work/projects/xl-prison
|
||||||
|
|
||||||
|
# 进入项目目录
|
||||||
|
cd /work/projects/xl-prison
|
||||||
|
```
|
||||||
|
|
||||||
|
目录结构说明:
|
||||||
|
|
||||||
|
```
|
||||||
|
/work/projects/xl-prison/
|
||||||
|
├── backend/ # 后端服务目录
|
||||||
|
│ ├── config/ # 配置文件目录
|
||||||
|
│ └── Dockerfile # Docker 构建文件
|
||||||
|
├── frontend/ # 前端服务目录
|
||||||
|
│ ├── dist/ # 前端构建产物
|
||||||
|
│ └── nginx.conf # Nginx 配置文件
|
||||||
|
├── data/ # 数据持久化目录
|
||||||
|
│ ├── mysql/ # MySQL 数据文件
|
||||||
|
│ └── redis/ # Redis 数据文件
|
||||||
|
├── logs/ # 日志目录
|
||||||
|
│ ├── backend/ # 后端日志
|
||||||
|
│ └── nginx/ # Nginx 日志
|
||||||
|
├── sql/ # SQL 初始化脚本
|
||||||
|
├── docker-compose.yml # Docker Compose 配置
|
||||||
|
└── README.md # 部署文档
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.2 获取项目代码
|
||||||
|
|
||||||
|
您可以通过以下两种方式之一获取项目代码:
|
||||||
|
|
||||||
|
**方式一:从 Git 仓库克隆**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /work/projects/xl-prison
|
||||||
|
git clone <your-repository-url> ./source
|
||||||
|
```
|
||||||
|
|
||||||
|
**方式二:从本地复制**
|
||||||
|
|
||||||
|
在您的开发机器上执行以下命令,将项目复制到服务器:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 复制整个项目到服务器
|
||||||
|
scp -r /Volumes/Dpan/github/xlcp root@192.168.10.150:/work/projects/xl-prison/source
|
||||||
|
|
||||||
|
# 或者只复制必要文件
|
||||||
|
scp -r /Volumes/Dpan/github/xlcp/backend root@192.168.10.150:/work/projects/xl-prison/
|
||||||
|
scp -r /Volumes/Dpan/github/xlcp/frontend/dist root@192.168.10.150:/work/projects/xl-prison/frontend/
|
||||||
|
scp -r /Volumes/Dpan/github/xlcp/backend/sql/mysql/*.sql root@192.168.10.150:/work/projects/xl-prison/sql/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.3 复制配置文件
|
||||||
|
|
||||||
|
将预先准备好的配置文件复制到服务器:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 复制 Docker Compose 配置
|
||||||
|
cp deploy/docker-compose.yml /work/projects/xl-prison/
|
||||||
|
|
||||||
|
# 复制后端配置
|
||||||
|
cp deploy/config/application-prod.yaml /work/projects/xl-prison/backend/config/
|
||||||
|
|
||||||
|
# 复制后端 Dockerfile
|
||||||
|
cp deploy/docker/backend/Dockerfile /work/projects/xl-prison/backend/
|
||||||
|
|
||||||
|
# 复制前端 Nginx 配置
|
||||||
|
cp deploy/docker/frontend/nginx.conf /work/projects/xl-prison/frontend/
|
||||||
|
|
||||||
|
# 复制 SQL 初始化脚本
|
||||||
|
cp backend/sql/mysql/*.sql /work/projects/xl-prison/sql/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.4 编译后端项目
|
||||||
|
|
||||||
|
在有 Maven 环境的机器上编译后端项目:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /Volumes/Dpan/github/xlcp/backend
|
||||||
|
|
||||||
|
# 清理并打包(跳过测试)
|
||||||
|
mvn clean package -DskipTests -Dmaven.javadoc.skip=true
|
||||||
|
|
||||||
|
# 构建完成后,jar 包位于以下位置
|
||||||
|
ls -lh yudao-server/target/yudao-server.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
将编译好的 jar 包复制到服务器:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp yudao-server/target/yudao-server.jar root@192.168.10.150:/work/projects/xl-prison/backend/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.5 构建前端项目
|
||||||
|
|
||||||
|
在有 Node.js 环境的机器上构建前端:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /Volumes/Dpan/github/xlcp/frontend
|
||||||
|
|
||||||
|
# 安装依赖
|
||||||
|
pnpm install
|
||||||
|
|
||||||
|
# 生产环境构建
|
||||||
|
pnpm build:prod
|
||||||
|
|
||||||
|
# 构建完成后,构建产物在 dist 目录
|
||||||
|
ls -lh dist/
|
||||||
|
```
|
||||||
|
|
||||||
|
将构建产物复制到服务器:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp -r dist/* root@192.168.10.150:/work/projects/xl-prison/frontend/
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. 配置文件说明
|
||||||
|
|
||||||
|
### 4.1 Docker Compose 配置
|
||||||
|
|
||||||
|
主要配置项说明:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
# MySQL 数据库服务
|
||||||
|
mysql:
|
||||||
|
image: mysql:8.0 # 使用 MySQL 8.0 镜像
|
||||||
|
container_name: xl-prison-mysql # 容器名称
|
||||||
|
restart: unless-stopped # 异常退出后自动重启
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: Prison2024!@ # root 用户密码
|
||||||
|
MYSQL_DATABASE: prison # 数据库名称
|
||||||
|
volumes:
|
||||||
|
- ./data/mysql:/var/lib/mysql # 数据持久化
|
||||||
|
- ./sql:/docker-entrypoint-initdb.d:ro # 初始化脚本
|
||||||
|
ports:
|
||||||
|
- "3306:3306" # 端口映射
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 2G # 内存限制
|
||||||
|
|
||||||
|
# Redis 缓存服务
|
||||||
|
redis:
|
||||||
|
image: redis:6.2-alpine
|
||||||
|
container_name: xl-prison-redis
|
||||||
|
command: redis-server --requirepass Redis2024!@ # 设置密码
|
||||||
|
volumes:
|
||||||
|
- ./data/redis:/data
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 512M
|
||||||
|
|
||||||
|
# 后端服务
|
||||||
|
backend:
|
||||||
|
build:
|
||||||
|
context: ./backend
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: xl-prison-backend
|
||||||
|
environment:
|
||||||
|
SPRING_PROFILES_ACTIVE: prod # 生产环境配置
|
||||||
|
JAVA_OPTS: -Xms512m -Xmx1024m # JVM 内存配置
|
||||||
|
volumes:
|
||||||
|
- ./backend/config:/app/config:ro # 配置文件挂载
|
||||||
|
- ./logs/backend:/app/logs # 日志目录挂载
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy # 等待 MySQL 健康检查通过
|
||||||
|
redis:
|
||||||
|
condition: service_healthy # 等待 Redis 健康检查通过
|
||||||
|
|
||||||
|
# 前端服务
|
||||||
|
frontend:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: xl-prison-frontend
|
||||||
|
volumes:
|
||||||
|
- ./frontend/dist:/usr/share/nginx/html:ro # 前端静态文件
|
||||||
|
- ./frontend/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- ./logs/nginx:/var/log/nginx # Nginx 日志
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 后端生产配置
|
||||||
|
|
||||||
|
配置文件位置:`backend/config/application-prod.yaml`
|
||||||
|
|
||||||
|
主要配置项:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spring:
|
||||||
|
datasource:
|
||||||
|
dynamic:
|
||||||
|
datasource:
|
||||||
|
master:
|
||||||
|
url: jdbc:mysql://mysql:3306/prison?useSSL=false&serverTimezone=Asia/Shanghai...
|
||||||
|
username: root
|
||||||
|
password: Prison2024!@
|
||||||
|
data:
|
||||||
|
redis:
|
||||||
|
host: redis # 使用 Docker 网络中的服务名
|
||||||
|
port: 6379
|
||||||
|
password: Redis2024!@
|
||||||
|
|
||||||
|
server:
|
||||||
|
port: 48080 # 后端服务端口
|
||||||
|
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
cn.iocoder.yudao: DEBUG
|
||||||
|
```
|
||||||
|
|
||||||
|
**重要说明**:在 Docker 环境中,使用 Docker Compose 定义的服务名(如 `mysql`、`redis`)作为主机名,而非 IP 地址。
|
||||||
|
|
||||||
|
### 4.3 Nginx 配置
|
||||||
|
|
||||||
|
配置文件位置:`frontend/nginx.conf`
|
||||||
|
|
||||||
|
主要功能:
|
||||||
|
|
||||||
|
- 静态文件服务
|
||||||
|
- API 请求代理到后端服务
|
||||||
|
- Gzip 压缩
|
||||||
|
- 缓存配置
|
||||||
|
- 安全头配置
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
upstream backend {
|
||||||
|
server backend:48080; # 后端服务地址
|
||||||
|
keepalive 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
# 前端路由支持
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# API 代理
|
||||||
|
location /prod-api/ {
|
||||||
|
proxy_pass http://backend;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. 部署执行
|
||||||
|
|
||||||
|
### 5.1 启动服务
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /work/projects/xl-prison
|
||||||
|
|
||||||
|
# 启动所有服务(后台运行)
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 查看启动状态
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# 查看服务日志
|
||||||
|
docker compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.2 验证部署
|
||||||
|
|
||||||
|
执行以下命令验证各服务是否正常运行:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 检查 MySQL
|
||||||
|
docker exec -it xl-prison-mysql mysql -uroot -pPrison2024!@ -e "SHOW DATABASES;"
|
||||||
|
|
||||||
|
# 预期输出应包含 prison 数据库
|
||||||
|
|
||||||
|
# 2. 检查 Redis
|
||||||
|
docker exec -it xl-prison-redis redis-cli -a Redis2024!@ ping
|
||||||
|
|
||||||
|
# 预期输出:PONG
|
||||||
|
|
||||||
|
# 3. 检查后端健康状态
|
||||||
|
curl http://localhost:48080/actuator/health/
|
||||||
|
|
||||||
|
# 预期输出:{"status":"UP"}
|
||||||
|
|
||||||
|
# 4. 检查前端访问
|
||||||
|
curl -I http://localhost:8080/
|
||||||
|
|
||||||
|
# 预期输出:HTTP/1.1 200 OK
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.3 查看日志
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看后端日志
|
||||||
|
docker logs xl-prison-backend
|
||||||
|
tail -f /work/projects/xl-prison/logs/backend/yudao-server.log
|
||||||
|
|
||||||
|
# 查看 Nginx 日志
|
||||||
|
docker logs xl-prison-frontend
|
||||||
|
tail -f /work/projects/xl-prison/logs/nginx/access.log
|
||||||
|
tail -f /work/projects/xl-prison/logs/nginx/error.log
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. 访问地址
|
||||||
|
|
||||||
|
部署完成后,系统可通过以下地址访问:
|
||||||
|
|
||||||
|
| 服务 | 地址 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 前端页面 | http://192.168.10.150:8080 | 监狱管理系统 Web 界面 |
|
||||||
|
| 后端 API | http://192.168.10.150:48080 | 后端服务接口 |
|
||||||
|
| 健康检查 | http://192.168.10.150:48080/actuator/health | 服务健康状态 |
|
||||||
|
| MySQL | 192.168.10.150:3306 | 数据库连接 |
|
||||||
|
| Redis | 192.168.10.150:6379 | 缓存服务 |
|
||||||
|
|
||||||
|
## 7. 运维管理
|
||||||
|
|
||||||
|
### 7.1 服务管理命令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 启动所有服务
|
||||||
|
docker compose start
|
||||||
|
|
||||||
|
# 停止所有服务
|
||||||
|
docker compose stop
|
||||||
|
|
||||||
|
# 重启所有服务
|
||||||
|
docker compose restart
|
||||||
|
|
||||||
|
# 重启单个服务
|
||||||
|
docker compose restart backend
|
||||||
|
docker compose restart frontend
|
||||||
|
|
||||||
|
# 查看服务状态
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# 查看服务资源使用
|
||||||
|
docker stats
|
||||||
|
|
||||||
|
# 进入容器内部
|
||||||
|
docker exec -it xl-prison-backend /bin/sh
|
||||||
|
docker exec -it xl-prison-mysql mysql -uroot -pPrison2024!@
|
||||||
|
docker exec -it xl-prison-redis redis-cli -a Redis2024!@
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.2 日志管理
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看所有服务日志
|
||||||
|
docker compose logs
|
||||||
|
|
||||||
|
# 查看指定服务日志
|
||||||
|
docker compose logs backend
|
||||||
|
docker compose logs frontend
|
||||||
|
docker compose logs mysql
|
||||||
|
docker compose logs redis
|
||||||
|
|
||||||
|
# 实时查看日志
|
||||||
|
docker compose logs -f
|
||||||
|
|
||||||
|
# 查看最近 100 行日志
|
||||||
|
docker logs --tail 100 xl-prison-backend
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.3 数据备份
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 备份 MySQL 数据库
|
||||||
|
BACKUP_DIR=/work/projects/xl-prison/backup
|
||||||
|
mkdir -p $BACKUP_DIR
|
||||||
|
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
|
||||||
|
|
||||||
|
docker exec xl-prison-mysql mysqldump -uroot -pPrison2024!@ prison > $BACKUP_DIR/prison_$BACKUP_DATE.sql
|
||||||
|
|
||||||
|
# 压缩备份文件
|
||||||
|
gzip $BACKUP_DIR/prison_$BACKUP_DATE.sql
|
||||||
|
|
||||||
|
# 查看备份文件
|
||||||
|
ls -lh $BACKUP_DIR/
|
||||||
|
|
||||||
|
# 备份 Redis 数据
|
||||||
|
docker exec xl-prison-redis redis-cli -a Redis2024!@ BGSAVE
|
||||||
|
docker cp xl-prison-redis:/data/dump.rdb $BACKUP_DIR/redis_$BACKUP_DATE.rdb
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.4 版本更新
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 停止当前服务
|
||||||
|
cd /work/projects/xl-prison
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
# 2. 备份重要数据
|
||||||
|
cp -r data data.backup.$(date +%Y%m%d)
|
||||||
|
|
||||||
|
# 3. 更新代码
|
||||||
|
cd source
|
||||||
|
git pull
|
||||||
|
|
||||||
|
# 4. 重新编译
|
||||||
|
cd ../backend
|
||||||
|
mvn clean package -DskipTests
|
||||||
|
cd ../frontend
|
||||||
|
pnpm install && pnpm build:prod
|
||||||
|
|
||||||
|
# 5. 更新构建产物
|
||||||
|
cp -r dist/* ../frontend/
|
||||||
|
cp target/*.jar ../backend/
|
||||||
|
|
||||||
|
# 6. 重新构建镜像并启动
|
||||||
|
cd ..
|
||||||
|
docker compose build --no-cache
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 7. 验证部署
|
||||||
|
curl http://localhost:48080/actuator/health/
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8. 常见问题排查
|
||||||
|
|
||||||
|
### 8.1 后端无法连接数据库
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 检查 MySQL 容器状态
|
||||||
|
docker ps | grep mysql
|
||||||
|
|
||||||
|
# 检查 MySQL 日志
|
||||||
|
docker logs xl-prison-mysql
|
||||||
|
|
||||||
|
# 检查 MySQL 健康状态
|
||||||
|
docker exec xl-prison-mysql mysqladmin -uroot -pPrison2024!@ ping
|
||||||
|
|
||||||
|
# 检查网络连接
|
||||||
|
docker exec xl-prison-backend ping mysql
|
||||||
|
|
||||||
|
# 常见原因及解决方案:
|
||||||
|
# 1. MySQL 容器未启动 → docker compose restart mysql
|
||||||
|
# 2. 密码错误 → 检查 application-prod.yaml 配置
|
||||||
|
# 3. 网络问题 → 检查 Docker 网络状态
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8.2 前端 502 错误
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 检查后端服务状态
|
||||||
|
docker ps | grep backend
|
||||||
|
|
||||||
|
# 检查后端健康状态
|
||||||
|
curl http://localhost:48080/actuator/health/
|
||||||
|
|
||||||
|
# 检查后端日志
|
||||||
|
docker logs xl-prison-backend
|
||||||
|
|
||||||
|
# 检查 Nginx 配置
|
||||||
|
docker exec xl-prison-frontend cat /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
# 测试后端连通性
|
||||||
|
docker exec xl-prison-frontend curl http://backend:48080/actuator/health/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8.3 内存不足
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 检查容器资源使用情况
|
||||||
|
docker stats
|
||||||
|
|
||||||
|
# 调整 JVM 内存配置,编辑 docker-compose.yml
|
||||||
|
environment:
|
||||||
|
JAVA_OPTS: -Xms256m -Xmx512m
|
||||||
|
|
||||||
|
# 重新启动服务
|
||||||
|
docker compose restart backend
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8.4 端口冲突
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 检查端口占用
|
||||||
|
netstat -tlnp | grep 8080
|
||||||
|
netstat -tlnp | grep 48080
|
||||||
|
|
||||||
|
# 如果端口被占用,可以修改 docker-compose.yml 中的端口映射
|
||||||
|
ports:
|
||||||
|
- "8081:80" # 改为 8081 端口
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8.5 数据丢失
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 检查数据卷挂载
|
||||||
|
docker volume ls
|
||||||
|
|
||||||
|
# 检查数据目录权限
|
||||||
|
ls -la /work/projects/xl-prison/data/
|
||||||
|
|
||||||
|
# 恢复数据(从备份)
|
||||||
|
gunzip -k /work/projects/xl-prison/backup/prison_20240115.sql.gz
|
||||||
|
docker exec -i xl-prison-mysql mysql -uroot -pPrison2024!@ prison < /work/projects/xl-prison/backup/prison_20240115.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9. 安全加固建议
|
||||||
|
|
||||||
|
### 9.1 修改默认密码
|
||||||
|
|
||||||
|
生产环境中,请务必修改默认密码:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# MySQL
|
||||||
|
MYSQL_ROOT_PASSWORD: YourStrongPassword123!@
|
||||||
|
|
||||||
|
# Redis
|
||||||
|
command: redis-server --requirepass YourStrongRedisPassword456!@
|
||||||
|
|
||||||
|
# 修改 application-prod.yaml 中的数据库密码
|
||||||
|
password: YourStrongPassword123!@
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.2 配置防火墙
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 只开放必要端口(CentOS)
|
||||||
|
firewall-cmd --permanent --add-port=8080/tcp
|
||||||
|
firewall-cmd --permanent --add-port=48080/tcp
|
||||||
|
firewall-cmd --reload
|
||||||
|
|
||||||
|
# 只开放必要端口(Ubuntu)
|
||||||
|
sudo ufw allow 8080/tcp
|
||||||
|
sudo ufw allow 48080/tcp
|
||||||
|
sudo ufw enable
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.3 启用 HTTPS(推荐)
|
||||||
|
|
||||||
|
建议使用 Nginx 反向代理并配置 SSL 证书:
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
server {
|
||||||
|
listen 443 ssl http2;
|
||||||
|
server_name your-domain.com;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/ssl/cert.pem;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/key.pem;
|
||||||
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||||||
|
|
||||||
|
# 其他配置...
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name your-domain.com;
|
||||||
|
return 301 https://$server_name$request_uri;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.4 定期安全更新
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 更新系统软件包
|
||||||
|
sudo yum update -y # CentOS
|
||||||
|
sudo apt-get update && sudo apt-get upgrade -y # Ubuntu
|
||||||
|
|
||||||
|
# 更新 Docker
|
||||||
|
sudo yum update docker-ce # CentOS
|
||||||
|
sudo apt-get update && sudo apt-get install docker-ce # Ubuntu
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.5 监控与告警
|
||||||
|
|
||||||
|
建议配置以下监控:
|
||||||
|
|
||||||
|
- **服务监控**: 使用 Prometheus + Grafana 监控容器状态
|
||||||
|
- **日志监控**: 使用 ELK Stack 收集和分析日志
|
||||||
|
- **告警通知**: 配置邮件或企业微信告警通知
|
||||||
|
|
||||||
|
## 10. 联系与支持
|
||||||
|
|
||||||
|
如果在部署过程中遇到问题,请:
|
||||||
|
|
||||||
|
1. 查看本文档的常见问题排查章节
|
||||||
|
2. 检查各服务的日志文件
|
||||||
|
3. 联系系统管理员获取支持
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**文档版本**: 1.0.0
|
||||||
|
**最后更新**: 2026年1月21日
|
||||||
|
**适用系统**: XL 监狱综合管理平台 v1.0
|
||||||
2
frontend
2
frontend
@ -1 +1 @@
|
|||||||
Subproject commit 3c24350bede07f5d56fc19b27720991b9648b6c3
|
Subproject commit f2764b396116fb1e994c3639f74d4d0b135ad3a3
|
||||||
Loading…
x
Reference in New Issue
Block a user