|
|
@@ -0,0 +1,208 @@
|
|
|
+# Transfer订单数据清理功能说明
|
|
|
+
|
|
|
+## 任务概述
|
|
|
+解释Transfer模块中"清理过期的划转订单数据"功能的作用和必要性,澄清"过期"概念在订单管理中的含义。
|
|
|
+
|
|
|
+## 完成时间
|
|
|
+2025-06-18 23:25
|
|
|
+
|
|
|
+## "过期"概念的含义
|
|
|
+
|
|
|
+### 🕒 时间维度的"过期"
|
|
|
+在Transfer模块中,"过期"不是指订单本身有有效期,而是指:
|
|
|
+- **历史数据清理**: 清理指定时间之前的历史订单数据
|
|
|
+- **存储空间管理**: 避免数据库无限增长
|
|
|
+- **性能优化**: 减少查询时的数据量
|
|
|
+- **合规要求**: 满足数据保留政策
|
|
|
+
|
|
|
+### 📊 清理策略
|
|
|
+默认清理策略:
|
|
|
+- **时间范围**: 30天前的数据(可配置)
|
|
|
+- **状态限制**: 只清理已完成或失败的订单
|
|
|
+- **保护机制**: 不清理进行中的订单
|
|
|
+
|
|
|
+## 功能详细说明
|
|
|
+
|
|
|
+### 🎯 清理命令
|
|
|
+```bash
|
|
|
+php artisan transfer:clean [选项]
|
|
|
+```
|
|
|
+
|
|
|
+### 📋 命令参数
|
|
|
+
|
|
|
+#### 1. 基本参数
|
|
|
+- `--days=30`: 清理多少天前的数据(默认30天)
|
|
|
+- `--limit=1000`: 每次处理的数量限制(默认1000条)
|
|
|
+- `--dry-run`: 仅预览,不实际删除
|
|
|
+- `--force`: 强制清理,跳过确认
|
|
|
+
|
|
|
+#### 2. 高级参数
|
|
|
+- `--status=`: 指定要清理的状态
|
|
|
+ - `100`: 只清理已完成订单
|
|
|
+ - `-1`: 只清理失败订单
|
|
|
+ - 不指定: 清理已完成和失败订单
|
|
|
+
|
|
|
+### 🔍 清理逻辑
|
|
|
+
|
|
|
+#### 1. 默认清理范围
|
|
|
+```sql
|
|
|
+-- 清理30天前的已完成或失败订单
|
|
|
+SELECT * FROM kku_transfer_orders
|
|
|
+WHERE created_at < '30天前'
|
|
|
+AND status IN (100, -1) -- 已完成或失败
|
|
|
+```
|
|
|
+
|
|
|
+#### 2. 保护机制
|
|
|
+- ✅ **不清理进行中订单**: 状态为1(已创建)、20(处理中)、30(已回调)的订单
|
|
|
+- ✅ **分批处理**: 避免一次性删除大量数据影响性能
|
|
|
+- ✅ **事务保护**: 确保数据一致性
|
|
|
+- ✅ **日志记录**: 记录每个被删除的订单信息
|
|
|
+
|
|
|
+#### 3. 安全确认
|
|
|
+```bash
|
|
|
+找到 1500 条记录需要清理
|
|
|
+数据统计:
|
|
|
+ 已完成: 1200 条
|
|
|
+ 失败: 300 条
|
|
|
+按类型统计:
|
|
|
+ 转入: 800 条
|
|
|
+ 转出: 700 条
|
|
|
+
|
|
|
+确定要删除这 1500 条记录吗?此操作不可恢复!
|
|
|
+```
|
|
|
+
|
|
|
+### 💡 使用场景
|
|
|
+
|
|
|
+#### 1. 定期维护
|
|
|
+- **场景**: 系统运行一段时间后,历史订单数据积累
|
|
|
+- **目的**: 保持数据库性能,控制存储空间
|
|
|
+- **频率**: 建议每月执行一次
|
|
|
+
|
|
|
+#### 2. 合规清理
|
|
|
+- **场景**: 满足数据保留政策要求
|
|
|
+- **目的**: 按照法规要求清理超期数据
|
|
|
+- **策略**: 根据业务需求设定保留期限
|
|
|
+
|
|
|
+#### 3. 性能优化
|
|
|
+- **场景**: 查询性能下降,数据量过大
|
|
|
+- **目的**: 减少查询时的数据扫描量
|
|
|
+- **效果**: 提升列表查询和统计查询性能
|
|
|
+
|
|
|
+#### 4. 存储管理
|
|
|
+- **场景**: 数据库存储空间不足
|
|
|
+- **目的**: 释放存储空间
|
|
|
+- **策略**: 优先清理最旧的已完成订单
|
|
|
+
|
|
|
+### ⚠️ 注意事项
|
|
|
+
|
|
|
+#### 1. 数据不可恢复
|
|
|
+- 清理操作是物理删除,无法恢复
|
|
|
+- 建议先使用`--dry-run`预览
|
|
|
+- 重要数据建议先备份
|
|
|
+
|
|
|
+#### 2. 业务影响评估
|
|
|
+- 确认清理的订单不再需要查询
|
|
|
+- 考虑财务对账需求
|
|
|
+- 评估报表统计影响
|
|
|
+
|
|
|
+#### 3. 清理时机选择
|
|
|
+- 建议在业务低峰期执行
|
|
|
+- 避免在月末、季末等关键时期清理
|
|
|
+- 考虑备份和维护窗口
|
|
|
+
|
|
|
+### 🔧 实际操作示例
|
|
|
+
|
|
|
+#### 1. 预览清理
|
|
|
+```bash
|
|
|
+# 预览30天前的数据
|
|
|
+php artisan transfer:clean --dry-run
|
|
|
+
|
|
|
+# 预览60天前的数据
|
|
|
+php artisan transfer:clean --days=60 --dry-run
|
|
|
+
|
|
|
+# 预览只清理失败订单
|
|
|
+php artisan transfer:clean --status=-1 --dry-run
|
|
|
+```
|
|
|
+
|
|
|
+#### 2. 执行清理
|
|
|
+```bash
|
|
|
+# 清理30天前的已完成和失败订单
|
|
|
+php artisan transfer:clean --force
|
|
|
+
|
|
|
+# 清理90天前的数据
|
|
|
+php artisan transfer:clean --days=90
|
|
|
+
|
|
|
+# 只清理失败订单
|
|
|
+php artisan transfer:clean --status=-1
|
|
|
+```
|
|
|
+
|
|
|
+#### 3. 分批清理
|
|
|
+```bash
|
|
|
+# 每次只处理500条记录
|
|
|
+php artisan transfer:clean --limit=500
|
|
|
+
|
|
|
+# 大批量清理,每次2000条
|
|
|
+php artisan transfer:clean --limit=2000 --days=180
|
|
|
+```
|
|
|
+
|
|
|
+### 📈 清理效果
|
|
|
+
|
|
|
+#### 1. 性能提升
|
|
|
+- 查询速度提升20-50%
|
|
|
+- 索引效率提高
|
|
|
+- 备份时间缩短
|
|
|
+
|
|
|
+#### 2. 存储节省
|
|
|
+- 数据库文件大小减少
|
|
|
+- 索引文件优化
|
|
|
+- 日志文件减少
|
|
|
+
|
|
|
+#### 3. 维护便利
|
|
|
+- 数据管理更简单
|
|
|
+- 备份恢复更快
|
|
|
+- 问题排查更容易
|
|
|
+
|
|
|
+### 🎯 最佳实践
|
|
|
+
|
|
|
+#### 1. 制定清理策略
|
|
|
+- 根据业务需求确定保留期限
|
|
|
+- 区分不同类型订单的保留策略
|
|
|
+- 建立定期清理计划
|
|
|
+
|
|
|
+#### 2. 监控清理效果
|
|
|
+- 记录清理前后的性能指标
|
|
|
+- 监控存储空间变化
|
|
|
+- 跟踪查询性能改善
|
|
|
+
|
|
|
+#### 3. 建立备份机制
|
|
|
+- 清理前创建数据备份
|
|
|
+- 保留关键订单的长期备份
|
|
|
+- 建立数据恢复流程
|
|
|
+
|
|
|
+### 🔍 故障排查
|
|
|
+
|
|
|
+#### 1. 清理失败
|
|
|
+- 检查数据库连接
|
|
|
+- 确认权限配置
|
|
|
+- 查看错误日志
|
|
|
+
|
|
|
+#### 2. 性能问题
|
|
|
+- 调整批处理大小
|
|
|
+- 选择合适的清理时间
|
|
|
+- 监控系统资源使用
|
|
|
+
|
|
|
+#### 3. 数据恢复
|
|
|
+- 从备份恢复数据
|
|
|
+- 检查清理日志
|
|
|
+- 联系技术支持
|
|
|
+
|
|
|
+## 总结
|
|
|
+
|
|
|
+Transfer模块的数据清理功能是一个重要的维护工具,"过期"在这里指的是超过保留期限的历史数据。通过定期清理这些数据,可以:
|
|
|
+
|
|
|
+1. **提升性能**: 减少查询数据量,提高响应速度
|
|
|
+2. **节省存储**: 控制数据库大小,降低存储成本
|
|
|
+3. **简化维护**: 减少数据管理复杂度
|
|
|
+4. **满足合规**: 符合数据保留政策要求
|
|
|
+
|
|
|
+这是一个标准的数据生命周期管理功能,在大多数业务系统中都是必需的。
|