feat(代理自充): AUG26-017 代理自充收款方式与线下预存款审批字段
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m52s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m52s
- 受控配置新增代理在线自充允许范围(仅微信/仅支付宝/同时支持),读侧与创建侧取允许范围与可用商户池交集,两侧失败关闭 - 新增允许范围查询与修改端点,读限代理与平台账号、写限超级管理员,复用受控配置写服务留痕 - tb_agent_recharge_record 新增交易流水号、线下收款方式三列快照与其他凭证列(成对迁移 000213) - 线下申请校验启用的收款方式字典项与必填交易流水号,交易流水号独立于在线渠道交易号、不参与去重 - 扩展 offline_recharge_approval 场景可映射字段白名单与字典引用保护 - 新增付款凭证识别能力与交易流水号预填接口,识别不落库、日志不记录载荷
This commit is contained in:
@@ -130,7 +130,7 @@ func (s *PaymentMethodService) Update(
|
||||
}
|
||||
if referenced > 0 {
|
||||
return errors.New(errors.CodeEmployeeCollectionPaymentMethodReferenced,
|
||||
"线下收款方式已被核销申请引用,不能修改稳定编码")
|
||||
"线下收款方式已被核销申请或代理充值申请引用,不能修改稳定编码")
|
||||
}
|
||||
if err := ensurePaymentMethodCodeAvailable(ctx, tx, normalized.Code, id); err != nil {
|
||||
return err
|
||||
@@ -276,14 +276,23 @@ func ensurePaymentMethodCodeAvailable(ctx context.Context, tx *gorm.DB, code str
|
||||
return nil
|
||||
}
|
||||
|
||||
// countPaymentMethodReferences 统计引用该收款方式的核销申请数量。
|
||||
// countPaymentMethodReferences 统计引用该收款方式的核销申请与代理充值申请数量。
|
||||
// 两类引用任一存在即禁止物理删除与改码,历史快照由各自记录冻结。
|
||||
func countPaymentMethodReferences(ctx context.Context, tx *gorm.DB, id uint) (int64, error) {
|
||||
var count int64
|
||||
var applicationCount int64
|
||||
if err := tx.WithContext(ctx).Model(&model.EmployeeCollectionApplication{}).
|
||||
Where("payment_method_id = ?", id).Count(&count).Error; err != nil {
|
||||
Where("payment_method_id = ?", id).Count(&applicationCount).Error; err != nil {
|
||||
return 0, errors.Wrap(errors.CodeDatabaseError, err, "统计线下收款方式引用失败")
|
||||
}
|
||||
return count, nil
|
||||
if applicationCount > 0 {
|
||||
return applicationCount, nil
|
||||
}
|
||||
var rechargeCount int64
|
||||
if err := tx.WithContext(ctx).Model(&model.AgentRechargeRecord{}).
|
||||
Where("offline_payment_method_id = ?", id).Count(&rechargeCount).Error; err != nil {
|
||||
return 0, errors.Wrap(errors.CodeDatabaseError, err, "统计代理充值线下收款方式引用失败")
|
||||
}
|
||||
return rechargeCount, nil
|
||||
}
|
||||
|
||||
// mapPaymentMethodCodeConflict 把稳定编码唯一索引冲突映射为稳定业务错误。
|
||||
|
||||
Reference in New Issue
Block a user