zlwu abfc5cd746 提交 10 tháng trước cách đây
..
01-核心状态修改.md ff1228873c 提交 10 tháng trước cách đây
02-组织关系处理.md ff1228873c 提交 10 tháng trước cách đây
03-经济资助处理.md ff1228873c 提交 10 tháng trước cách đây
04-其他业务处理.md ff1228873c 提交 10 tháng trước cách đây
06-完整SQL脚本.md ff1228873c 提交 10 tháng trước cách đây
07-快速执行脚本.md ff1228873c 提交 10 tháng trước cách đây
PRODUCTION_DEPLOYMENT.md abfc5cd746 提交 10 tháng trước cách đây
README.md 34a843e790 提交 10 tháng trước cách đây
control_scripts.sh abfc5cd746 提交 10 tháng trước cách đây
data.conf 34a843e790 提交 10 tháng trước cách đây
data.conf.prod abfc5cd746 提交 10 tháng trước cách đây
dict字典.sql a514c26f83 提交 10 tháng trước cách đây
health_check.sh 34a843e790 提交 10 tháng trước cách đây
his.sql ff1228873c 提交 10 tháng trước cách đây
hzdyjs_xg.sql a514c26f83 提交 10 tháng trước cách đây
process_student_changes.sh abfc5cd746 提交 10 tháng trước cách đây
process_student_changes_fixed.sh abfc5cd746 提交 10 tháng trước cách đây
process_student_resume.sh 34a843e790 提交 10 tháng trước cách đây
process_student_resume_fixed.sh abfc5cd746 提交 10 tháng trước cách đây
prod_debug.sh abfc5cd746 提交 10 tháng trước cách đây
xg_student_status_change.sql 8783150883 提交 10 tháng trước cách đây
学生退学休学毕业处理清单.md ff1228873c 提交 10 tháng trước cách đây

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