# school_pay_refund 表文档 ## 表概述 **表名**: school_pay_refund **功能**: 支付退款管理表,用于处理和管理各种业务场景下的退款申请和处理流程,包括课程退费、订单取消、服务纠纷等退款场景,支持多渠道退款、状态跟踪、失败处理和凭证管理,为学校提供完整的退款业务管理和财务对账功能 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 主键 refund_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 退款单号 out_trade_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付流水号 type varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付方式 channel varchar(50) utf8mb4_general_ci NO select,insert,update,references 支付渠道 money decimal(10,2) NULL NO 0.00 select,insert,update,references 支付金额 reason varchar(255) utf8mb4_general_ci NO select,insert,update,references 退款原因 status varchar(255) utf8mb4_general_ci NO 0 select,insert,update,references 支付状态(0.待退款 1. 退款中 2. 已退款 -1已关闭) create_time int NULL NO 0 select,insert,update,references 创建时间 refund_time int NULL NO 0 select,insert,update,references 支付时间 close_time int NULL NO 0 select,insert,update,references 关闭时间 fail_reason varchar(255) utf8mb4_general_ci NO select,insert,update,references 失败原因 voucher varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付凭证 trade_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 业务类型 trade_id varchar(50) utf8mb4_general_ci NO select,insert,update,references 业务关联id refund_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 退款方式 main_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 操作人类型 main_id int NULL NO 0 select,insert,update,references 操作人 pay_refund_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 外部支付方式的退款单号 ``` ## 功能用途 ### 主要功能 - **退款申请管理**: 处理各种业务场景下的退款申请和审批流程 - **退款流程控制**: 管理退款的完整流程(申请→审核→退款→完成) - **退款状态跟踪**: 实时跟踪退款状态变化和处理进度 - **多渠道退款**: 支持多种支付渠道的退款处理(微信、支付宝、银行卡等) - **退款金额管理**: 精确计算和管理退款金额,支持部分退款 - **退款凭证管理**: 管理退款凭证和相关票据信息 - **失败处理机制**: 记录退款失败原因,支持重新处理 - **业务关联**: 与原始支付记录和相关业务进行关联 - **操作人员管理**: 记录退款操作的具体执行人员 ### 业务场景 - **课程退费**: 学员申请课程退费的退款处理 - **订单取消退款**: 订单取消后的自动退款 - **服务纠纷退款**: 因服务质量问题产生的退款 - **系统错误退款**: 因系统错误导致的多收费用退款 - **部分退款**: 课程部分完成后的按比例退款 - **批量退款**: 因活动取消等原因的批量退款处理 - **退款审核**: 财务人员审核退款申请的合理性 - **退款对账**: 与第三方支付平台进行退款对账 ## 关联关系 ### 主要关联表 - `school_pay`: 支付记录表 (out_trade_no) - `school_member`: 会员信息表 (main_id) - `school_order`: 订单信息表 (通过trade_id关联) - `school_contract`: 合同信息表 (通过trade_id关联) - `school_course`: 课程信息表 (通过业务关联) - `school_sys_user`: 系统用户表 (操作人员信息) - `school_member_account`: 会员账户表 (退款到余额) - `school_member_account_log`: 账户流水表 (资金变动记录) ### 关联说明 - **支付关联**: out_trade_no关联原始支付记录,确保退款与支付匹配 - **会员关联**: main_id关联退款接收方的会员信息 - **业务关联**: 通过trade_type和trade_id关联具体的业务记录 - **操作人关联**: main_id在不同main_type下关联不同类型的操作人员 - **账户关联**: 退款到余额时需要关联会员账户信息 - **流水关联**: 退款完成后在账户流水表中记录资金变动 - **渠道关联**: channel和type字段关联支付渠道配置 ## 索引建议 - **主键索引**: id (已存在) - **唯一索引**: refund_no (退款单号唯一性) - **外键索引**: - out_trade_no (支付流水号查询) - main_id (操作人查询) - **业务索引**: - trade_type (业务类型查询) - trade_id (业务ID查询) - **状态索引**: status (退款状态查询) - **时间索引**: - create_time (创建时间查询) - refund_time (退款时间查询) - close_time (关闭时间查询) - **复合索引**: - (out_trade_no, status) (支付退款状态查询) - (main_id, status) (操作人退款状态查询) - (trade_type, trade_id) (业务关联查询) - (type, status) (退款方式状态查询) - (create_time, status) (时间状态查询) ## 注意事项 - **金额精度**: money字段使用decimal(10,2),确保财务计算精度 - **退款限制**: 退款金额不能超过原支付金额 - **状态流转**: 退款状态有严格的流转规则(0→1→2或0→-1) - **时间逻辑**: refund_time不能早于create_time,close_time只在关闭时设置 - **支付关联**: 必须基于有效的支付记录才能发起退款 - **渠道一致性**: 退款渠道应与原支付渠道保持一致 - **重复退款**: 防止同一笔支付重复退款或超额退款 - **失败处理**: 退款失败时必须记录详细的fail_reason - **凭证管理**: voucher字段用于存储退款凭证,确保可追溯 - **业务完整性**: trade_type和trade_id必须与原支付记录保持一致 - **操作权限**: 不同类型的操作人员有不同的退款权限 - **数据一致性**: 退款成功后必须同步更新相关业务状态 - **审核机制**: 大额退款需要多级审核确认 - **对账要求**: 定期与第三方支付平台进行退款对账 - **法律合规**: 退款操作需要符合相关法律法规要求