zlwu 1e6dcb164c 提交 1 mēnesi atpakaļ
..
01-核心状态修改.md ff1228873c 提交 10 mēneši atpakaļ
02-组织关系处理.md ff1228873c 提交 10 mēneši atpakaļ
03-经济资助处理.md ff1228873c 提交 10 mēneši atpakaļ
04-其他业务处理.md ff1228873c 提交 10 mēneši atpakaļ
06-完整SQL脚本.md ff1228873c 提交 10 mēneši atpakaļ
07-快速执行脚本.md ff1228873c 提交 10 mēneši atpakaļ
PRODUCTION_DEPLOYMENT.md abfc5cd746 提交 10 mēneši atpakaļ
README.md 34a843e790 提交 10 mēneši atpakaļ
control_scripts.sh abfc5cd746 提交 10 mēneši atpakaļ
data.conf 1e6dcb164c 提交 1 mēnesi atpakaļ
data.conf.prod abfc5cd746 提交 10 mēneši atpakaļ
dict字典.sql a514c26f83 提交 10 mēneši atpakaļ
health_check.sh 34a843e790 提交 10 mēneši atpakaļ
his.sql ff1228873c 提交 10 mēneši atpakaļ
hzdyjs_xg.sql a514c26f83 提交 10 mēneši atpakaļ
process_student_changes.sh abfc5cd746 提交 10 mēneši atpakaļ
process_student_changes_fixed.sh abfc5cd746 提交 10 mēneši atpakaļ
process_student_resume.sh 34a843e790 提交 10 mēneši atpakaļ
process_student_resume_fixed.sh abfc5cd746 提交 10 mēneši atpakaļ
prod_debug.sh abfc5cd746 提交 10 mēneši atpakaļ
xg_student_status_change.sql 8783150883 提交 10 mēneši atpakaļ
学生退学休学毕业处理清单.md ff1228873c 提交 10 mēneši atpakaļ

README.md

学生状态变更处理脚本

本项目包含用于处理学生退学、休学、复学、毕业状态变更的自动化脚本。

📋 脚本说明

脚本文件

  1. process_student_changes.sh - 处理毕业、退学、休学的状态变更
  2. process_student_resume.sh - 处理复学的状态变更
  3. control_scripts.sh - 脚本控制程序(启动、停止、重启)
  4. health_check.sh - 服务健康检查脚本
  5. data.conf - 数据库配置文件
  6. test_data.sql - 测试数据脚本
  7. optional_crontab_config.txt - 可选的定时任务配置(备用)

处理逻辑

毕业/退学/休学处理 (process_student_changes.sh)

处理类型:XIU_XUE(休学), TUI_XUE(退学), BI_YE(毕业)

执行步骤:

  1. 备份原始数据到his表
  2. 更新学生学籍状态
  3. 禁用用户账号
  4. 处理班级干部关系(取消现任职务)
  5. 处理社团成员关系(设置为已退出)
  6. 处理住宿关系(退学/毕业时退宿)
  7. 更新变更记录状态为已处理

复学处理 (process_student_resume.sh)

处理类型:FU_XUE(复学)

执行步骤:

  1. 备份原始数据到his表
  2. 更新学生学籍状态为复学
  3. 启用用户账号
  4. 更新变更记录状态为已处理

🔧 配置说明

data.conf 配置

# Database configuration
DB_HOST="localhost"          # 数据库主机
DB_PORT="3306"              # 数据库端口
DB_NAME="hzdyjs_xg"         # 数据库名
DB_USER="root"              # 数据库用户名
DB_PASS="password"          # 数据库密码

# Script configuration
LOG_DIR="./student_status_change"  # 日志目录
SCRIPT_DIR="/path/to/scripts"             # 脚本目录
LOCK_FILE="${SCRIPT_DIR}/script.lock"     # 锁文件

# Processing configuration
BATCH_SIZE=100              # 每次处理记录数
MAX_RETRY=3                 # 最大重试次数
RETRY_DELAY=5               # 重试间隔(秒)
CYCLE_INTERVAL=600          # 循环间隔时间(秒),默认10分钟

🚀 使用方法

1. 配置数据库连接

编辑 data.conf 文件,设置正确的数据库连接信息:

DB_HOST="your_db_host"
DB_PORT="3306"
DB_NAME="hzdyjs_xg"
DB_USER="your_username"
DB_PASS="your_password"

2. 启动服务

脚本采用持续运行模式,启动后会自动循环处理:

# 启动所有服务(持续运行模式)
./control_scripts.sh startall

# 查看服务状态
./control_scripts.sh statusall

持续运行模式说明

  • 启动方式: ./control_scripts.sh startall 一次性启动所有服务
  • 运行逻辑: 每个脚本启动后进入while循环,持续监控和处理数据
  • 处理周期: 检查数据库 → 处理未处理记录 → 等待10分钟 → 重复循环
  • 并发控制: 通过锁文件确保同一脚本只运行一个实例
  • 自动重启: 如果脚本异常退出,可以通过控制脚本重启

3. 手动执行脚本(一次性)

如需手动执行单个脚本处理一次:

# 处理毕业/退学/休学(一次性执行)
./process_student_changes.sh

# 处理复学(一次性执行)
./process_student_resume.sh

4. 停止服务

# 正常停止所有服务
./control_scripts.sh stopall

# 强制停止所有服务(如果正常停止失败)
# 手动kill进程或使用系统命令

5. 健康检查

# 执行健康检查
./health_check.sh

# 执行检查并生成详细报告
./health_check.sh report

### 3. 使用控制脚本管理

```bash
# 启动指定脚本
./control_scripts.sh start changes    # 启动状态变更处理脚本
./control_scripts.sh start resume     # 启动复学处理脚本

# 停止指定脚本
./control_scripts.sh stop changes     # 停止状态变更处理脚本
./control_scripts.sh stop resume      # 停止复学处理脚本

# 重启指定脚本
./control_scripts.sh restart changes  # 重启状态变更处理脚本
./control_scripts.sh restart resume   # 重启复学处理脚本

# 查看脚本状态
./control_scripts.sh status changes   # 查看状态变更处理脚本状态
./control_scripts.sh status resume    # 查看复学处理脚本状态

# 批量操作
./control_scripts.sh startall         # 启动所有脚本
./control_scripts.sh stopall          # 停止所有脚本
./control_scripts.sh statusall        # 查看所有脚本状态

📊 数据表说明

核心表

  • xg_student_status_change - 学生状态变更记录表
    • process_status: 处理状态 (0=未处理,1=已处理)
    • change_type: 变更类型 (XIU_XUE/TUI_XUE/FU_XUE/BI_YE)

业务表

  • xg_student_msg - 学生基本信息表
  • sys_user - 系统用户表
  • xg_class_pos_msg - 班级干部信息表
  • club_member - 社团成员表
  • stgl_member - 志愿者成员表
  • xg_dorm_bed_student - 宿舍床位分配表
  • xg_dorm_bed - 宿舍床位表

历史表

所有主表都有对应的his表用于数据备份:

  • xg_student_msg_his
  • sys_user_his
  • xg_class_pos_msg_his
  • club_member_his
  • stgl_member_his
  • xg_dorm_bed_student_his

📝 日志说明

日志文件位置

  • 日志目录:./student_status_change/
  • 日志格式:process_student_changes_YYYYMMDD_HHMMSS.log

日志内容

  • 脚本启动/停止信息
  • 数据库连接状态
  • 每条记录的处理详情
  • 错误信息和重试记录
  • 处理结果统计

示例日志

[2025-01-01 10:00:00] [INFO] Starting student status change processing script
[2025-01-01 10:00:01] [INFO] Database connection successful
[2025-01-01 10:00:02] [INFO] Processing student change - ID: 123, Student: 20240001 (456), Type: TUI_XUE
[2025-01-01 10:00:03] [INFO] Successfully processed student change - ID: 123, Student: 20240001
[2025-01-01 10:00:03] [INFO] Processing completed - Processed: 1, Failed: 0

⚠️ 注意事项

安全提醒

  1. 数据备份: 脚本会自动备份数据到his表,但建议在运行前手动备份重要数据
  2. 权限控制: 确保运行脚本的用户有数据库操作权限
  3. 网络安全: 数据库密码等敏感信息请妥善保管

使用限制

  1. 并发控制: 同一脚本只允许一个实例运行(通过锁文件控制)
  2. 批量处理: 每次最多处理100条记录,避免数据库负载过高
  3. 错误重试: 处理失败时会自动重试,最多3次

监控建议

  1. 日志监控: 定期检查日志文件,关注错误信息
  2. 数据库监控: 监控数据库连接和性能
  3. 业务监控: 检查处理结果是否符合预期
  4. 健康检查: 使用 ./health_check.sh 脚本定期检查服务状态

🔧 故障排除

常见问题

  1. 数据库连接失败

    • 检查 data.conf 中的数据库配置
    • 确认数据库服务正在运行
    • 验证用户权限
  2. 脚本重复运行

    • 删除对应的锁文件:rm -f script.lock
    • 检查是否有残留进程并终止
  3. 处理失败

    • 查看日志文件了解具体错误
    • 检查数据库数据完整性
    • 手动处理失败的记录

紧急停止

# 强制停止所有相关进程
pkill -f "process_student_changes.sh"
pkill -f "process_student_resume.sh"

# 清理锁文件
rm -f *.lock
rm -f pids/*.pid

📞 技术支持

如遇到问题,请:

  1. 查看日志文件获取详细错误信息
  2. 检查数据库连接和权限配置
  3. 确认相关数据表结构是否正确
  4. 联系技术支持团队

🔄 运行模式说明

持续运行模式(推荐)

脚本采用持续运行模式,启动后自动循环执行:

  1. 启动脚本: ./control_scripts.sh startall
  2. 处理逻辑: 检查未处理的记录 → 处理业务 → 等待10分钟 → 重复
  3. 停止脚本: ./control_scripts.sh stopall

可选的定时任务模式

如果需要使用crontab模式(不推荐),参考 optional_crontab_config.txt 文件:

# 添加定时任务(仅在特殊情况下使用)
crontab -e
# 参考配置文件内容

运行模式对比

特性 持续运行模式 Crontab模式
启动方式 ./control_scripts.sh startall crontab配置
执行频率 每10分钟自动 可自定义时间
资源占用 常驻进程 按需启动
监控便利性 更容易监控 需要额外配置
维护复杂度 较低 较高

推荐使用持续运行模式,简单可靠,易于监控管理。

🚀 快速开始

💡 使用指南

  1. 配置数据库: 编辑 data.conf 配置数据库连接信息
  2. 启动服务: 使用 ./control_scripts.sh startall 启动持续运行的服务
  3. 监控运行: 使用 ./health_check.sh 检查服务状态
  4. 停止服务: 需要时使用 ./control_scripts.sh stopall 停止服务

🧪 测试步骤

  1. 插入测试数据: 执行 test_data.sql 插入测试记录
  2. 启动服务: ./control_scripts.sh startall
  3. 观察日志: 查看 ./student_status_change/ 目录的日志
  4. 检查结果: 确认 xg_student_status_change.process_status 已更新为1

最后更新: 2025-01-01 版本: v1.0.0