feat(代理自充): AUG26-017 代理自充收款方式与线下预存款审批字段
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:
2026-09-11 15:21:23 +08:00
parent e687a266e6
commit 7891189712
32 changed files with 1168 additions and 172 deletions

View File

@@ -23,6 +23,34 @@ const (
AgentRechargeSourceAgentOnline = "agent_online"
)
// 代理线下预存款审批字段边界。
const (
// AgentRechargeExternalTransactionNoMaxLength 表示线下充值交易流水号最大长度。
AgentRechargeExternalTransactionNoMaxLength = 128
// AgentRechargePaymentVoucherMaxCount 表示一次线下充值允许的最多支付凭证数量。
AgentRechargePaymentVoucherMaxCount = 5
// AgentRechargeOtherVoucherMaxCount 表示一次线下充值允许的最多其他凭证数量。
AgentRechargeOtherVoucherMaxCount = 5
// AgentRechargeVoucherKeyMaxLength 表示单个凭证对象键最大长度。
AgentRechargeVoucherKeyMaxLength = 500
// AgentRechargeVoucherMaxBytes 表示单张付款凭证图片允许的最大字节数。
AgentRechargeVoucherMaxBytes = 10 << 20
)
// GetAgentSelfRechargeAllowedMethodsName 返回代理在线自充允许范围的中文名称。
func GetAgentSelfRechargeAllowedMethodsName(value string) string {
switch value {
case AgentSelfRechargeAllowedWechatOnly:
return "仅微信"
case AgentSelfRechargeAllowedAlipayOnly:
return "仅支付宝"
case AgentSelfRechargeAllowedBoth:
return "同时支持微信和支付宝"
default:
return "未知允许范围"
}
}
// GetAgentRechargeSource 根据支付方式返回稳定的充值来源及中文名称。
func GetAgentRechargeSource(paymentMethod string) (string, string) {
if paymentMethod == RechargeMethodWechat || paymentMethod == RechargeMethodAlipay {

View File

@@ -31,6 +31,14 @@ const (
ApprovalFieldSubmitterID = "submitter_id"
// ApprovalFieldSubmitterName 表示真实业务提交人账号名称业务字段。
ApprovalFieldSubmitterName = "submitter_name"
// ApprovalFieldOfflinePaymentMethod 表示线下代充值收款方式名称快照业务字段。
ApprovalFieldOfflinePaymentMethod = "offline_payment_method"
// ApprovalFieldOfflinePaymentMethodCode 表示线下代充值收款方式稳定编码业务字段。
ApprovalFieldOfflinePaymentMethodCode = "offline_payment_method_code"
// ApprovalFieldExternalTransactionNo 表示线下代充值交易流水号业务字段。
ApprovalFieldExternalTransactionNo = "external_transaction_no"
// ApprovalFieldOtherVoucherKey 表示线下代充值其他凭证对象存储 Key 列表业务字段。
ApprovalFieldOtherVoucherKey = "other_voucher_key"
// ApprovalFieldRefundNo 表示退款单号业务字段。
ApprovalFieldRefundNo = "refund_no"
// ApprovalFieldOrderID 表示退款关联订单 ID 业务字段。

View File

@@ -24,6 +24,14 @@ const (
SystemConfigPaymentAllowedCard = "c2b.payment.card_allowed_methods"
// SystemConfigPaymentAllowedDevice 定义设备资产允许的支付方式集合。
SystemConfigPaymentAllowedDevice = "c2b.payment.device_allowed_methods"
// SystemConfigAgentSelfRechargeAllowedMethods 定义代理在线自充允许范围配置 Key。
SystemConfigAgentSelfRechargeAllowedMethods = "agent.self_recharge.allowed_methods"
// AgentSelfRechargeAllowedWechatOnly 表示代理在线自充仅允许微信。
AgentSelfRechargeAllowedWechatOnly = "wechat_only"
// AgentSelfRechargeAllowedAlipayOnly 表示代理在线自充仅允许支付宝。
AgentSelfRechargeAllowedAlipayOnly = "alipay_only"
// AgentSelfRechargeAllowedBoth 表示代理在线自充同时允许微信和支付宝。
AgentSelfRechargeAllowedBoth = "both"
// SystemConfigCarrierCallbackCTCCRealnameEnabled 控制电信实名回调是否执行业务处理。
SystemConfigCarrierCallbackCTCCRealnameEnabled = "carrier_callback.ctcc_realname.enabled"
// SystemConfigCarrierCallbackCMCCRealnameEnabled 控制移动实名回调是否执行业务处理。

View File

@@ -490,8 +490,8 @@ var errorMessages = map[int]string{
CodeAuditDataArchived: "数据已归档,第一阶段不支持在线查询",
CodeEmployeeCollectionPaymentMethodNotFound: "线下收款方式不存在",
CodeEmployeeCollectionPaymentMethodCodeExists: "线下收款方式编码已存在",
CodeEmployeeCollectionPaymentMethodReferenced: "线下收款方式已被核销申请引用,只能停用",
CodeEmployeeCollectionPaymentMethodDisabled: "线下收款方式已停用,不能用于新的核销申请",
CodeEmployeeCollectionPaymentMethodReferenced: "线下收款方式已被核销申请或代理充值申请引用,只能停用",
CodeEmployeeCollectionPaymentMethodDisabled: "线下收款方式已停用,不能用于新的业务申请",
CodeEmployeeCollectionBillNotFound: "员工代收款账单不存在",
CodeEmployeeCollectionBillNotSettleable: "账单当前状态不允许核销",
CodeEmployeeCollectionAllocationExceeded: "分摊金额超过账单可核销余额",