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