Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
AUG26-008。
- 迁移 000214–000217:tb_shop 全局唯一且不可修改的随机分销码(含存量回填)、
tb_agent_distribution_registration 待审批注册记录、tb_withdrawal_qualification 资料版本、
tb_commission_withdrawal_request_attempt 审批尝试记录,以及提现申请的 latest_*/异常标记列;
不修改既有迁移,down 在存在本 Change 业务事实或新类型场景行时拒绝破坏性回滚。
- 公开接口 POST /api/c/v1/agent-distribution-registrations:无认证,复用既有短信验证码校验、
消费与限流;无效分销码、停用上级、验证码无效或已消费统一返回「分销码不可用」且不落库,
审批通过前不创建店铺、账号或钱包。
- 审批通过才在同一事务内建启用店铺、代理主账号、钱包、上级层级与业务员快照,驳回不建实体,
重复回调不重复建实体,提交后清理上级下级缓存。
- 提现资料资格按不可变版本保存,替换合同或法人身份证即新增版本并同事务失效旧有效版本;
超管作废原因必填;代理停用与店铺删除联动失效。
- 提现每次提交或重提新增不可变审批尝试记录并冻结金额;企业微信通过仅一次从冻结扣减、
保持状态 2 并写 paid_at(不使用状态 4),驳回/cancelled/deleted 仅一次释放,
通过后撤销不回滚、不重新冻结、只写正交异常标记;加锁顺序统一为申请→尝试→钱包。
- 本地人工终审对已关联审批实例的申请返回状态冲突,approval_instance_id 为空的存量申请保持既有行为,
不新增任何配置开关。
- 补齐审批业务类型注册点全集:业务类型与场景字段常量、场景 DTO 两处枚举与中文描述、
场景字段白名单/合法类型/中文名、数据库 CHECK、Worker 决策消费者与装配、审批审计资源映射,
以及三个新审计资源与 13 个审计动作;失败/拒绝审计改为必达。
- 新增后台路由与 OpenAPI:资格提交/查询/作废、提现申请/重提/详情、店铺详情返回只读分销码。
- 归档本 Change:主 Spec 新增 agent-distribution-withdrawal 能力(5 个 Requirement)。
验证(junhong_cmp_test + Redis DB 6,显式 DB_*,未重置整库):
- 迁移 up → version 217 且 dirty=false → down 3 → up 回 217,fixture 复核残留为 0。
- 受控状态机脚手架 227 项通过 / 0 项失败,覆盖 18 组场景(幂等与乱序回调、资金冻结/释放/重提、
退款回扣 × 在途提现并发、负向场景拒绝审计与 14 个动作码审计真实落库)。
- gofmt 空、go build/go vet 通过、gendocs 与工作区逐字节一致、context-health 通过、
openspec validate --strict 通过、doctor healthy;自动化测试按项目决策为 N/A。
运行期前置(未完成,非代码交付物):由超管经 PUT /api/admin/wecom/scenes/{business_type} 为
agent_distribution_approval、withdrawal_qualification_approval、commission_withdrawal_approval
配置启用场景与模板控件映射;未配置时相应提交失败关闭。
283 lines
16 KiB
Go
283 lines
16 KiB
Go
package constants
|
||
|
||
import "time"
|
||
|
||
const (
|
||
// ApprovalBusinessTypeRefund 表示退款审批业务场景。
|
||
ApprovalBusinessTypeRefund = "refund_approval"
|
||
// ApprovalBusinessTypeOfflineRecharge 表示员工线下代充值审批业务场景。
|
||
ApprovalBusinessTypeOfflineRecharge = "offline_recharge_approval"
|
||
// ApprovalBusinessTypeEmployeeCollection 表示员工代收款核销审批业务场景。
|
||
// 该场景的业务ID取核销申请的审批尝试记录主键,使同一申请每次提交各自持有独立审批实例。
|
||
ApprovalBusinessTypeEmployeeCollection = "employee_collection_approval"
|
||
// ApprovalBusinessTypeAgentDistribution 表示代理扫码分销注册审批业务场景。
|
||
// 该场景的业务ID取待审批注册记录主键,审批通过才创建店铺与代理账号。
|
||
ApprovalBusinessTypeAgentDistribution = "agent_distribution_approval"
|
||
// ApprovalBusinessTypeWithdrawalQualification 表示提现资料资格审批业务场景。
|
||
// 该场景的业务ID取资料版本主键,替换资料即新版本新实例,历史版本不可覆盖。
|
||
ApprovalBusinessTypeWithdrawalQualification = "withdrawal_qualification_approval"
|
||
// ApprovalBusinessTypeCommissionWithdrawal 表示佣金提现终审审批业务场景。
|
||
// 该场景的业务ID取提现申请的审批尝试记录主键,使同一申请每次提交或重提各自持有独立审批实例。
|
||
ApprovalBusinessTypeCommissionWithdrawal = "commission_withdrawal_approval"
|
||
)
|
||
|
||
const (
|
||
// ApprovalFieldRechargeNo 表示线下代充值单号业务字段。
|
||
ApprovalFieldRechargeNo = "recharge_no"
|
||
// ApprovalFieldShopID 表示线下代充值目标店铺 ID 业务字段。
|
||
ApprovalFieldShopID = "shop_id"
|
||
// ApprovalFieldShopName 表示线下代充值目标店铺名称业务字段。
|
||
ApprovalFieldShopName = "shop_name"
|
||
// ApprovalFieldAmount 表示线下代充值元金额展示业务字段。
|
||
ApprovalFieldAmount = "amount"
|
||
// ApprovalFieldAmountCent 表示线下代充值分金额业务字段。
|
||
ApprovalFieldAmountCent = "amount_cent"
|
||
// ApprovalFieldPaymentVoucherKey 表示线下代充值凭证对象存储 Key 列表业务字段。
|
||
ApprovalFieldPaymentVoucherKey = "payment_voucher_key"
|
||
// ApprovalFieldRemark 表示线下代充值运营备注业务字段。
|
||
ApprovalFieldRemark = "remark"
|
||
// ApprovalFieldSubmitterID 表示真实业务提交人账号 ID 业务字段。
|
||
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 业务字段。
|
||
ApprovalFieldOrderID = "order_id"
|
||
// ApprovalFieldOrderNo 表示退款关联订单号业务字段。
|
||
ApprovalFieldOrderNo = "order_no"
|
||
// ApprovalFieldAssetIdentifier 表示退款资产标识业务字段。
|
||
ApprovalFieldAssetIdentifier = "asset_identifier"
|
||
// ApprovalFieldAssetType 表示退款资产类型业务字段。
|
||
ApprovalFieldAssetType = "asset_type"
|
||
// ApprovalFieldActualReceivedAmount 表示退款实收金额业务字段。
|
||
ApprovalFieldActualReceivedAmount = "actual_received_amount"
|
||
// ApprovalFieldRequestedRefundAmount 表示申请退款金额业务字段。
|
||
ApprovalFieldRequestedRefundAmount = "requested_refund_amount"
|
||
// ApprovalFieldRefundVoucherKey 表示退款凭证对象存储 Key 列表业务字段。
|
||
ApprovalFieldRefundVoucherKey = "refund_voucher_key"
|
||
// ApprovalFieldRefundReason 表示退款原因业务字段。
|
||
ApprovalFieldRefundReason = "refund_reason"
|
||
// ApprovalFieldPackageUsageID 表示退款指定套餐使用记录 ID 业务字段。
|
||
ApprovalFieldPackageUsageID = "package_usage_id"
|
||
// ApprovalFieldCollectionApplicationID 表示员工代收款核销申请 ID 业务字段。
|
||
ApprovalFieldCollectionApplicationID = "collection_application_id"
|
||
// ApprovalFieldCollectionPaymentMethod 表示员工代收款线下收款方式名称业务字段。
|
||
ApprovalFieldCollectionPaymentMethod = "collection_payment_method"
|
||
// ApprovalFieldCollectionPaidAmount 表示员工代收款付款金额元展示业务字段。
|
||
ApprovalFieldCollectionPaidAmount = "collection_paid_amount"
|
||
// ApprovalFieldCollectionPaidAmountCent 表示员工代收款付款金额分业务字段。
|
||
ApprovalFieldCollectionPaidAmountCent = "collection_paid_amount_cent"
|
||
// ApprovalFieldCollectionPayerName 表示员工代收款付款方名称业务字段。
|
||
ApprovalFieldCollectionPayerName = "collection_payer_name"
|
||
// ApprovalFieldCollectionPaidAt 表示员工代收款付款时间业务字段。
|
||
ApprovalFieldCollectionPaidAt = "collection_paid_at"
|
||
// ApprovalFieldCollectionExternalTransactionNo 表示员工代收款外部交易流水号业务字段。
|
||
ApprovalFieldCollectionExternalTransactionNo = "collection_external_transaction_no"
|
||
// ApprovalFieldCollectionBillCount 表示员工代收款分摊账单数量业务字段。
|
||
ApprovalFieldCollectionBillCount = "collection_bill_count"
|
||
// ApprovalFieldCollectionBillSummary 表示员工代收款分摊账单摘要业务字段。
|
||
ApprovalFieldCollectionBillSummary = "collection_bill_summary"
|
||
)
|
||
|
||
const (
|
||
// ApprovalFieldDistributionCode 表示扫码注册使用的上级店铺分销码业务字段。
|
||
ApprovalFieldDistributionCode = "distribution_code"
|
||
// ApprovalFieldDistributionParentShopID 表示扫码注册上级店铺 ID 业务字段。
|
||
ApprovalFieldDistributionParentShopID = "distribution_parent_shop_id"
|
||
// ApprovalFieldDistributionParentShopName 表示扫码注册上级店铺名称业务字段。
|
||
ApprovalFieldDistributionParentShopName = "distribution_parent_shop_name"
|
||
// ApprovalFieldDistributionShopName 表示申请店铺名称业务字段。
|
||
ApprovalFieldDistributionShopName = "distribution_shop_name"
|
||
// ApprovalFieldDistributionShopCode 表示申请店铺编号业务字段。
|
||
ApprovalFieldDistributionShopCode = "distribution_shop_code"
|
||
// ApprovalFieldDistributionUsername 表示申请代理主账号用户名业务字段。
|
||
ApprovalFieldDistributionUsername = "distribution_username"
|
||
// ApprovalFieldDistributionPhoneMasked 表示脱敏后的注册手机号业务字段,禁止写入完整手机号。
|
||
ApprovalFieldDistributionPhoneMasked = "distribution_phone_masked"
|
||
// ApprovalFieldDistributionContactName 表示注册联系人姓名业务字段。
|
||
ApprovalFieldDistributionContactName = "distribution_contact_name"
|
||
// ApprovalFieldDistributionRegion 表示注册地址摘要业务字段。
|
||
ApprovalFieldDistributionRegion = "distribution_region"
|
||
// ApprovalFieldQualificationSubjectType 表示提现资格签约主体类型中文名业务字段。
|
||
ApprovalFieldQualificationSubjectType = "qualification_subject_type"
|
||
// ApprovalFieldQualificationSubjectCodeMasked 表示脱敏后的签约主体代码业务字段。
|
||
ApprovalFieldQualificationSubjectCodeMasked = "qualification_subject_code_masked"
|
||
// ApprovalFieldQualificationLegalPersonMasked 表示脱敏后的法人身份证号业务字段。
|
||
ApprovalFieldQualificationLegalPersonMasked = "qualification_legal_person_id_card_masked"
|
||
// ApprovalFieldQualificationShopID 表示提现资格所属店铺 ID 业务字段。
|
||
ApprovalFieldQualificationShopID = "qualification_shop_id"
|
||
// ApprovalFieldQualificationShopName 表示提现资格所属店铺名称业务字段。
|
||
ApprovalFieldQualificationShopName = "qualification_shop_name"
|
||
// ApprovalFieldQualificationContractKey 表示合同附件对象存储 Key 业务字段。
|
||
ApprovalFieldQualificationContractKey = "qualification_contract_key"
|
||
// ApprovalFieldQualificationIDCardFrontKey 表示法人身份证正面附件对象存储 Key 业务字段。
|
||
ApprovalFieldQualificationIDCardFrontKey = "qualification_id_card_front_key"
|
||
// ApprovalFieldQualificationIDCardBackKey 表示法人身份证反面附件对象存储 Key 业务字段。
|
||
ApprovalFieldQualificationIDCardBackKey = "qualification_id_card_back_key"
|
||
// ApprovalFieldQualificationBusinessLicenseKey 表示营业执照附件对象存储 Key 业务字段。
|
||
ApprovalFieldQualificationBusinessLicenseKey = "qualification_business_license_key"
|
||
// ApprovalFieldQualificationShopFrontKey 表示门头照附件对象存储 Key 业务字段。
|
||
ApprovalFieldQualificationShopFrontKey = "qualification_shop_front_key"
|
||
// ApprovalFieldQualificationInvoiceKey 表示发票附件对象存储 Key 业务字段。
|
||
ApprovalFieldQualificationInvoiceKey = "qualification_invoice_key"
|
||
// ApprovalFieldQualificationInvoiceTitle 表示发票抬头业务字段。
|
||
ApprovalFieldQualificationInvoiceTitle = "qualification_invoice_title"
|
||
// ApprovalFieldWithdrawalNo 表示提现单号业务字段。
|
||
ApprovalFieldWithdrawalNo = "withdrawal_no"
|
||
// ApprovalFieldWithdrawalAttemptNo 表示提现第几次提交业务字段。
|
||
ApprovalFieldWithdrawalAttemptNo = "withdrawal_attempt_no"
|
||
// ApprovalFieldWithdrawalShopID 表示提现店铺 ID 业务字段。
|
||
ApprovalFieldWithdrawalShopID = "withdrawal_shop_id"
|
||
// ApprovalFieldWithdrawalShopName 表示提现店铺名称业务字段。
|
||
ApprovalFieldWithdrawalShopName = "withdrawal_shop_name"
|
||
// ApprovalFieldWithdrawalAmount 表示提现金额元展示业务字段。
|
||
ApprovalFieldWithdrawalAmount = "withdrawal_amount"
|
||
// ApprovalFieldWithdrawalAmountCent 表示提现金额分业务字段。
|
||
ApprovalFieldWithdrawalAmountCent = "withdrawal_amount_cent"
|
||
// ApprovalFieldWithdrawalFee 表示提现手续费元展示业务字段。
|
||
ApprovalFieldWithdrawalFee = "withdrawal_fee"
|
||
// ApprovalFieldWithdrawalActualAmount 表示提现实际到账金额元展示业务字段。
|
||
ApprovalFieldWithdrawalActualAmount = "withdrawal_actual_amount"
|
||
// ApprovalFieldWithdrawalMethod 表示提现收款方式快照业务字段。
|
||
ApprovalFieldWithdrawalMethod = "withdrawal_method"
|
||
// ApprovalFieldWithdrawalAccountName 表示提现收款人姓名业务字段。
|
||
ApprovalFieldWithdrawalAccountName = "withdrawal_account_name"
|
||
// ApprovalFieldWithdrawalAccountNumber 表示提现收款账号业务字段。
|
||
ApprovalFieldWithdrawalAccountNumber = "withdrawal_account_number"
|
||
// ApprovalFieldWithdrawalInvoiceKey 表示申请级发票附件对象存储 Key 列表业务字段。
|
||
ApprovalFieldWithdrawalInvoiceKey = "withdrawal_invoice_key"
|
||
)
|
||
|
||
const (
|
||
// ApprovalFieldValueTypeString 表示业务字段值为普通字符串。
|
||
ApprovalFieldValueTypeString = "string"
|
||
// ApprovalFieldValueTypeInteger 表示业务字段值为整数。
|
||
ApprovalFieldValueTypeInteger = "integer"
|
||
// ApprovalFieldValueTypeMoney 表示业务字段值为两位小数的元金额字符串。
|
||
ApprovalFieldValueTypeMoney = "money"
|
||
// ApprovalFieldValueTypeFileList 表示业务字段值为对象存储文件引用列表。
|
||
ApprovalFieldValueTypeFileList = "file_list"
|
||
)
|
||
|
||
const (
|
||
// ApprovalStatusSubmitting 表示审批申请等待渠道提交。
|
||
ApprovalStatusSubmitting = 0
|
||
// ApprovalStatusPending 表示审批申请已进入渠道审批。
|
||
ApprovalStatusPending = 1
|
||
// ApprovalStatusApproved 表示审批已通过。
|
||
ApprovalStatusApproved = 2
|
||
// ApprovalStatusRejected 表示审批已拒绝。
|
||
ApprovalStatusRejected = 3
|
||
// ApprovalStatusCancelled 表示审批已撤销。
|
||
ApprovalStatusCancelled = 4
|
||
// ApprovalStatusRevokedAfterApproved 表示审批通过后被撤销。
|
||
ApprovalStatusRevokedAfterApproved = 5
|
||
// ApprovalStatusDeleted 表示审批已删除。
|
||
ApprovalStatusDeleted = 6
|
||
// ApprovalStatusSubmissionFailed 表示渠道明确确认审批提交失败。
|
||
ApprovalStatusSubmissionFailed = 7
|
||
// ApprovalStatusSubmissionUnknown 表示审批提交请求已发出但结果未知。
|
||
ApprovalStatusSubmissionUnknown = 8
|
||
)
|
||
|
||
const (
|
||
// ApprovalDecisionApproved 表示标准审批通过决策。
|
||
ApprovalDecisionApproved = "approved"
|
||
// ApprovalDecisionRejected 表示标准审批拒绝决策。
|
||
ApprovalDecisionRejected = "rejected"
|
||
// ApprovalDecisionCancelled 表示标准审批撤销决策。
|
||
ApprovalDecisionCancelled = "cancelled"
|
||
// ApprovalDecisionDeleted 表示标准审批删除决策。
|
||
ApprovalDecisionDeleted = "deleted"
|
||
// ApprovalDecisionRevokedAfterApproved 表示标准审批通过后撤销决策。
|
||
ApprovalDecisionRevokedAfterApproved = "revoked_after_approved"
|
||
)
|
||
|
||
const (
|
||
// ApprovalInitialVersion 表示通用审批实例的初始乐观锁版本。
|
||
ApprovalInitialVersion = 1
|
||
// ApprovalQueryMaxBatchSize 表示通用审批摘要单次批量投影上限。
|
||
ApprovalQueryMaxBatchSize = 100
|
||
// ApprovalUnknownSubmitterName 表示提交人名称快照无法解析。
|
||
ApprovalUnknownSubmitterName = "未知账号"
|
||
// ApprovalDecisionDeliveryLeaseDuration 表示标准决策消费者的单次处理租约时长。
|
||
ApprovalDecisionDeliveryLeaseDuration = 5 * time.Minute
|
||
// ApprovalPreparationTTL 表示事务前审批可用性结果允许复用的最长期限。
|
||
ApprovalPreparationTTL = 30 * time.Second
|
||
)
|
||
|
||
const (
|
||
// ApprovalAuditActorWeCom 表示企业微信外部审批系统。
|
||
ApprovalAuditActorWeCom = "wecom"
|
||
// ApprovalAuditActorSubmissionWorker 表示企业微信审批提交 Worker。
|
||
ApprovalAuditActorSubmissionWorker = "wecom_approval_submission"
|
||
// ApprovalAuditActorRecoveryJob 表示企业微信审批主动恢复计划任务。
|
||
ApprovalAuditActorRecoveryJob = "wecom_approval_recovery"
|
||
)
|
||
|
||
const (
|
||
// ApprovalDecisionDeliveryPending 表示标准决策等待业务消费。
|
||
ApprovalDecisionDeliveryPending = 0
|
||
// ApprovalDecisionDeliveryProcessing 表示标准决策已被消费者租约领取。
|
||
ApprovalDecisionDeliveryProcessing = 1
|
||
// ApprovalDecisionDeliverySucceeded 表示标准决策已被业务幂等处理。
|
||
ApprovalDecisionDeliverySucceeded = 2
|
||
// ApprovalDecisionDeliveryFailed 表示标准决策消费失败并等待重试。
|
||
ApprovalDecisionDeliveryFailed = 3
|
||
)
|
||
|
||
const (
|
||
// OutboxEventTypeApprovalTerminalDecision 表示通用审批标准终态已记录。
|
||
OutboxEventTypeApprovalTerminalDecision = "approval.terminal_decision.recorded"
|
||
// OutboxEventTypeApprovalSubmissionRequested 表示通用审批实例等待渠道提交。
|
||
OutboxEventTypeApprovalSubmissionRequested = "approval.submission.requested"
|
||
// ApprovalTerminalDecisionPayloadVersionV1 表示标准终态事件载荷第一版。
|
||
ApprovalTerminalDecisionPayloadVersionV1 = 1
|
||
// ApprovalSubmissionPayloadVersionV1 表示审批申请提交事件载荷第一版。
|
||
ApprovalSubmissionPayloadVersionV1 = 1
|
||
)
|
||
|
||
const (
|
||
// ApprovalSyncSourceCallback 表示由第三方审批回调触发权威同步。
|
||
ApprovalSyncSourceCallback = "callback"
|
||
// ApprovalSyncSourcePolling 表示由定时兜底轮询触发权威同步。
|
||
ApprovalSyncSourcePolling = "polling"
|
||
// ApprovalSyncSourceManual 表示由受控人工动作触发权威同步。
|
||
ApprovalSyncSourceManual = "manual"
|
||
)
|
||
|
||
// GetApprovalStatusName 返回通用审批状态的中文名称。
|
||
func GetApprovalStatusName(status int) string {
|
||
switch status {
|
||
case ApprovalStatusSubmitting:
|
||
return "提交中"
|
||
case ApprovalStatusPending:
|
||
return "审批中"
|
||
case ApprovalStatusApproved:
|
||
return "已通过"
|
||
case ApprovalStatusRejected:
|
||
return "已拒绝"
|
||
case ApprovalStatusCancelled:
|
||
return "已撤销"
|
||
case ApprovalStatusRevokedAfterApproved:
|
||
return "通过后撤销"
|
||
case ApprovalStatusDeleted:
|
||
return "已删除"
|
||
case ApprovalStatusSubmissionFailed:
|
||
return "提交失败"
|
||
case ApprovalStatusSubmissionUnknown:
|
||
return "提交结果未知"
|
||
default:
|
||
return "未知"
|
||
}
|
||
}
|