Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 8m39s
- 迁移 000259~000265:套餐记录沉默期字段与扫描索引、套餐默认沉默期、延期政策/流水/订单/批次/明细 5 张表、默认政策与系统配置(总开关默认关闭)、企微审批白名单、卡与设备出库时间及出库记录 - 沉默期设置(订单发放、自动购包、钱包续费)、后台购买时调整(超默认值按政策免审或企微审批)、统一判定与激活闸门、排队与孤儿扫描跳过过期套餐、过期套餐禁止退款、每 10 分钟扫描 - 总开关专用接口与打开前 4 项检查;延期政策;延期资格与计费;H5 自助与后台二维码在线支付(商户池路由)、支付回调与查单恢复、线下登记、特殊/批量延期、异常重试与原路退款;沉默期审批场景与终态处理 - 换货沉默期流水与出库时间;卡/设备列表、详情、导出与出库记录接口;延期订单与即将过期套餐列表及导出;财务流水纳入延期支付 - 沉默期与出库时间回填工具 cmd/silence-backfill;前端接口变更说明 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
321 lines
14 KiB
Go
321 lines
14 KiB
Go
package constants
|
||
|
||
import "time"
|
||
|
||
// 实名即生效套餐沉默期(add-package-silence-period)。
|
||
|
||
// 套餐记录沉默期状态 silence_status。空表示不适用沉默期。
|
||
const (
|
||
SilenceStatusWaiting = "waiting" // 待实名(含延期后的"延期待实名")
|
||
SilenceStatusExpired = "expired" // 沉默期已过期(status 保持 0,由激活闸门拦截)
|
||
SilenceStatusEnded = "ended" // 截止前已实名,沉默期结束
|
||
)
|
||
|
||
// SilenceStatusName 返回沉默期状态展示名。
|
||
func SilenceStatusName(status string, extended bool) string {
|
||
switch status {
|
||
case SilenceStatusWaiting:
|
||
if extended {
|
||
return "延期待实名"
|
||
}
|
||
return "待实名"
|
||
case SilenceStatusExpired:
|
||
return "沉默期已过期"
|
||
case SilenceStatusEnded:
|
||
return "沉默期已结束"
|
||
default:
|
||
return ""
|
||
}
|
||
}
|
||
|
||
// 沉默期时间口径。
|
||
const (
|
||
SilenceTimezone = "Asia/Shanghai"
|
||
SilenceDaysPerMonth = 30
|
||
SilencePackageDaysMin = 1
|
||
SilencePackageDaysMax = 90
|
||
SilenceDefaultPeriodDays = 30
|
||
SilenceDefaultUnitPrice = 500
|
||
)
|
||
|
||
// 沉默期系统配置 Key。
|
||
const (
|
||
SystemConfigModulePackage = "package"
|
||
SystemConfigSilenceEnabled = "package.silence.enabled"
|
||
SystemConfigSilenceDefaultDays = "package.silence.default_days"
|
||
SystemConfigSilenceExtensionUnitPrice = "package.silence.extension_unit_price"
|
||
ApprovalBusinessTypePackageSilence = "package_silence_approval"
|
||
PaymentOrderTypeSilenceExtension = "silence_extension"
|
||
SilenceExtensionOrderNoPrefix = "SE"
|
||
SilenceExtensionBatchNoPrefix = "SB"
|
||
SilenceExtensionOrderPayTTL = 30 * time.Minute
|
||
SilenceScanBatchSize = 200
|
||
SilenceScanMaxBatches = 20
|
||
SilenceScanUniqueTTL = 9 * time.Minute
|
||
SilenceScanMaxRetry = 3
|
||
TaskTypePackageSilenceScan = "package:silence:scan"
|
||
TaskTypePackageSilenceOrderRecover = "package:silence:order_recover"
|
||
SilenceScanCron = "*/10 * * * *"
|
||
SilenceOrderRecoverCron = "*/5 * * * *"
|
||
SilenceOrderRecoverBatchSize = 100
|
||
SilenceBatchImportMaxRows = 1000
|
||
SilenceExtensionReasonMaxLen = 1000
|
||
SilenceExtensionVoucherMaxCount = 5
|
||
SilenceExtensionEvidenceMaxCount = 10
|
||
SilencePolicyNameMaxLen = 100
|
||
SilenceExtensionInputDaysMax = 3650
|
||
SilencePurchaseAdjustDaysMax = 3650
|
||
SilenceExtensionOptionsMax = 24
|
||
SilenceBackfillBatchSize = 500
|
||
SilenceOutboundBackfillBatchSize = 5000
|
||
SilenceSwitchPrecheckUnconfiguredPackages = "unconfigured_packages"
|
||
SilenceSwitchPrecheckUnbackfilledUsages = "unbackfilled_usages"
|
||
SilenceSwitchPrecheckDefaultPolicyMissing = "default_policy_missing"
|
||
SilenceSwitchPrecheckApprovalSceneMissing = "approval_scene_missing"
|
||
SilenceExpiringSoonDaysDefault = 7
|
||
SilenceExtensionOrderCloseReasonTimeout = "timeout"
|
||
SilenceExtensionOrderCloseReasonSuperseded = "superseded"
|
||
)
|
||
|
||
// 延期政策适用范围。
|
||
const (
|
||
SilencePolicyScopeAll = "all"
|
||
SilencePolicyScopeSeries = "series"
|
||
SilencePolicyScopePackage = "package"
|
||
)
|
||
|
||
// 延期政策状态。
|
||
const (
|
||
SilencePolicyStatusDisabled = 0
|
||
SilencePolicyStatusEnabled = 1
|
||
)
|
||
|
||
// 延期路径。
|
||
const (
|
||
SilencePathOnline = "online"
|
||
SilencePathOffline = "offline"
|
||
SilencePathSpecial = "special"
|
||
SilencePathAdjust = "adjust"
|
||
)
|
||
|
||
// 延期类型;除 standard_paid 外同时是政策免审批场景的可选值。
|
||
const (
|
||
SilenceExtensionTypeStandardPaid = "standard_paid"
|
||
SilenceExtensionTypeOfflinePaid = "offline_paid"
|
||
SilenceExtensionTypeFree = "free"
|
||
SilenceExtensionTypeDiscount = "discount"
|
||
SilenceExtensionTypeComplaintCompensation = "complaint_compensation"
|
||
SilenceExtensionTypeSystemCompensation = "system_compensation"
|
||
SilenceExtensionTypeSpecialCustomer = "special_customer"
|
||
SilenceExtensionTypeBatch = "batch"
|
||
SilenceExtensionTypePurchaseAdjust = "purchase_adjust"
|
||
)
|
||
|
||
// SilenceApprovalExemptTypes 是政策可勾选的免审批场景(在线付款始终不审批,不在可选项)。
|
||
var SilenceApprovalExemptTypes = []string{
|
||
SilenceExtensionTypeOfflinePaid, SilenceExtensionTypeFree, SilenceExtensionTypeDiscount,
|
||
SilenceExtensionTypeComplaintCompensation, SilenceExtensionTypeSystemCompensation,
|
||
SilenceExtensionTypeSpecialCustomer, SilenceExtensionTypeBatch, SilenceExtensionTypePurchaseAdjust,
|
||
}
|
||
|
||
// SilenceSpecialExtensionTypes 是特殊延期可提交的类型。
|
||
var SilenceSpecialExtensionTypes = []string{
|
||
SilenceExtensionTypeFree, SilenceExtensionTypeDiscount, SilenceExtensionTypeComplaintCompensation,
|
||
SilenceExtensionTypeSystemCompensation, SilenceExtensionTypeSpecialCustomer,
|
||
}
|
||
|
||
// 延期批次状态。
|
||
const (
|
||
SilenceBatchStatusPendingPayment = "pending_payment"
|
||
SilenceBatchStatusPendingApproval = "pending_approval"
|
||
SilenceBatchStatusExecuting = "executing"
|
||
SilenceBatchStatusCompleted = "completed"
|
||
SilenceBatchStatusPartiallyCompleted = "partially_completed"
|
||
SilenceBatchStatusRejected = "rejected"
|
||
SilenceBatchStatusClosed = "closed"
|
||
SilenceBatchStatusFailed = "failed"
|
||
)
|
||
|
||
// 审批状态(批次 approval_status)。
|
||
const (
|
||
SilenceApprovalStatusPending = "pending"
|
||
SilenceApprovalStatusApproved = "approved"
|
||
SilenceApprovalStatusRejected = "rejected"
|
||
SilenceApprovalStatusCanceled = "canceled"
|
||
)
|
||
|
||
// 延期明细状态。
|
||
const (
|
||
SilenceExtensionStatusPendingPayment = "pending_payment"
|
||
SilenceExtensionStatusPendingApproval = "pending_approval"
|
||
SilenceExtensionStatusApproved = "approved"
|
||
SilenceExtensionStatusExecuting = "executing"
|
||
SilenceExtensionStatusCompleted = "completed"
|
||
SilenceExtensionStatusException = "exception"
|
||
SilenceExtensionStatusFailed = "failed"
|
||
SilenceExtensionStatusRejected = "rejected"
|
||
SilenceExtensionStatusClosed = "closed"
|
||
)
|
||
|
||
// 延期订单状态。
|
||
const (
|
||
SilenceOrderStatusPendingPayment = "pending_payment"
|
||
SilenceOrderStatusPendingApproval = "pending_approval"
|
||
SilenceOrderStatusRejected = "rejected"
|
||
SilenceOrderStatusPaid = "paid"
|
||
SilenceOrderStatusCompleted = "completed"
|
||
SilenceOrderStatusClosed = "closed"
|
||
SilenceOrderStatusException = "exception"
|
||
SilenceOrderStatusRefunded = "refunded"
|
||
)
|
||
|
||
// 延期订单来源。
|
||
const (
|
||
SilenceOrderSourceClient = "client"
|
||
SilenceOrderSourceAdmin = "admin"
|
||
SilenceOrderSourceOffline = "offline"
|
||
)
|
||
|
||
// 沉默期流水事件类型。
|
||
const (
|
||
SilenceRecordEventSet = "set"
|
||
SilenceRecordEventAdjust = "adjust"
|
||
SilenceRecordEventExpired = "expired"
|
||
SilenceRecordEventEnded = "ended"
|
||
SilenceRecordEventExtend = "extend"
|
||
SilenceRecordEventExchange = "exchange"
|
||
SilenceRecordEventBackfill = "backfill"
|
||
SilenceRecordEventRealnameBackfill = "realname_backfill"
|
||
)
|
||
|
||
// 沉默期判定触发来源。
|
||
const (
|
||
SilenceTriggerOrderPaid = "order_paid"
|
||
SilenceTriggerAutoPurchase = "auto_purchase"
|
||
SilenceTriggerActivation = "activation"
|
||
SilenceTriggerScan = "scan"
|
||
SilenceTriggerExtension = "extension"
|
||
SilenceTriggerAdjustApproval = "adjust_approval"
|
||
SilenceTriggerExchange = "exchange"
|
||
SilenceTriggerBackfill = "backfill"
|
||
SilenceTriggerEligibilityRead = "eligibility"
|
||
)
|
||
|
||
// 沉默期流水与审计的操作人类型。
|
||
const (
|
||
SilenceOperatorSystem = "system"
|
||
SilenceOperatorAccount = "account"
|
||
SilenceOperatorCustomer = "customer"
|
||
)
|
||
|
||
// 延期资格不能付费延期的原因码。
|
||
const (
|
||
SilenceReasonNotExpired = "not_expired"
|
||
SilenceReasonNoSilence = "no_silence"
|
||
SilenceReasonExtensionDisabled = "extension_disabled"
|
||
SilenceReasonNoPolicy = "no_policy"
|
||
SilenceReasonExceedsLimit = "exceeds_limit"
|
||
SilenceReasonRefunded = "refunded"
|
||
SilenceReasonOrderPending = "order_pending"
|
||
SilenceReasonActivated = "activated"
|
||
SilenceReasonAdjustPending = "adjust_pending"
|
||
)
|
||
|
||
// 延期执行异常 / 失败原因码。
|
||
const (
|
||
SilenceFailureNotExpired = "not_expired"
|
||
SilenceFailureDeadlineNotAfter = "deadline_not_after_today"
|
||
SilenceFailureExceedsLimit = "exceeds_limit"
|
||
SilenceFailureFreeUsedUp = "free_used_up"
|
||
SilenceFailureUsageInvalid = "usage_invalid"
|
||
SilenceFailureAmountMismatch = "amount_mismatch"
|
||
SilenceFailureRefundFailed = "refund_failed"
|
||
)
|
||
|
||
// 沉默期权限点(后端统一校验并叠加店铺数据范围)。
|
||
const (
|
||
PermissionPackageSilenceConfig = "package_silence:config"
|
||
PermissionPackageSilenceOverride = "package_silence:override"
|
||
PermissionPackageSilenceExtend = "package_silence:extend"
|
||
PermissionPackageSilenceExtendBatch = "package_silence:extend_batch"
|
||
PermissionPackageSilenceOffline = "package_silence:offline"
|
||
PermissionPackageSilencePolicy = "package_silence:policy"
|
||
PermissionPackageSilenceException = "package_silence:exception"
|
||
)
|
||
|
||
// 沉默期审计动作(技术方案 §11.2)。
|
||
const (
|
||
AuditActionPackageSilenceDefaultChanged = "package.silence_default_changed"
|
||
AuditActionPackageSilenceSwitchChanged = "package.silence_switch_changed"
|
||
AuditActionUsageSilenceSet = "package_usage.silence_set"
|
||
AuditActionUsageSilenceAdjustRequested = "package_usage.silence_adjust_requested"
|
||
AuditActionUsageSilenceAdjustApproved = "package_usage.silence_adjust_approved"
|
||
AuditActionUsageSilenceAdjustRejected = "package_usage.silence_adjust_rejected"
|
||
AuditActionUsageSilenceExpired = "package_usage.silence_expired"
|
||
AuditActionUsageSilenceEnded = "package_usage.silence_ended"
|
||
AuditActionUsageSilenceExtensionRequested = "package_usage.silence_extension_requested"
|
||
AuditActionUsageSilenceExtensionApproved = "package_usage.silence_extension_approved"
|
||
AuditActionUsageSilenceExtensionRejected = "package_usage.silence_extension_rejected"
|
||
AuditActionUsageSilenceExtensionApplied = "package_usage.silence_extension_applied"
|
||
AuditActionUsageSilenceExtensionException = "package_usage.silence_extension_exception"
|
||
AuditActionUsageSilenceExtensionOrderState = "package_usage.silence_extension_order_changed"
|
||
AuditActionUsageSilenceMigratedOnExchange = "package_usage.silence_migrated_on_exchange"
|
||
AuditActionUsageSilenceBackfilled = "package_usage.silence_backfilled"
|
||
AuditActionSilencePolicyCreated = "package_silence_policy.created"
|
||
AuditActionSilencePolicyUpdated = "package_silence_policy.updated"
|
||
AuditActionSilencePolicyStatusChanged = "package_silence_policy.status_changed"
|
||
AuditActionAssetOutboundRecorded = "asset.outbound_recorded"
|
||
AuditActionAssetOutboundEnded = "asset.outbound_ended"
|
||
)
|
||
|
||
// 资产出库记录。
|
||
const (
|
||
OutboundSourceOrder = "order"
|
||
OutboundSourceExchange = "exchange"
|
||
OutboundSourceBackfill = "backfill"
|
||
OutboundEndReasonExchange = "exchange_return"
|
||
OutboundAssetTypeIotCard = "iot_card"
|
||
OutboundAssetTypeDevice = "device"
|
||
SilenceAssetTypeIotCard = "iot_card"
|
||
SilenceAssetTypeDevice = "device"
|
||
SilenceAuditResourceUsage = "package_usage"
|
||
SilenceAuditResourcePackage = "package"
|
||
SilenceAuditResourcePolicy = "package_silence_policy"
|
||
SilenceAuditResourceConfig = "system_config"
|
||
SilenceAuditResourceAsset = "asset"
|
||
)
|
||
|
||
// 沉默期审批业务字段(企微场景配置把模板控件映射到这些字段)。
|
||
const (
|
||
ApprovalFieldSilenceApplyType = "apply_type" // 申请类型
|
||
ApprovalFieldSilenceBatchNo = "batch_no" // 申请单号
|
||
ApprovalFieldSilenceAssetIdentifier = "asset_identifier" // 资产
|
||
ApprovalFieldSilencePackageName = "package_name" // 套餐
|
||
ApprovalFieldSilenceOrderNo = "order_no" // 订单号
|
||
ApprovalFieldSilenceDefaultDays = "default_days" // 默认沉默期天数
|
||
ApprovalFieldSilenceRequestedDays = "requested_days" // 申请沉默期天数
|
||
ApprovalFieldSilenceOriginalDeadline = "original_deadline" // 原截止日期
|
||
ApprovalFieldSilenceInputDays = "input_days" // 延期天数
|
||
ApprovalFieldSilenceBilledDays = "billed_days" // 计费天数
|
||
ApprovalFieldSilenceNewDeadline = "new_deadline" // 新截止日期
|
||
ApprovalFieldSilenceExtensionType = "extension_type" // 延期类型
|
||
ApprovalFieldSilenceItemCount = "item_count" // 明细条数
|
||
ApprovalFieldSilenceAmount = "amount" // 费用
|
||
ApprovalFieldSilenceAmountCent = "amount_cent" // 费用(分)
|
||
ApprovalFieldSilenceReason = "reason" // 原因
|
||
ApprovalFieldSilenceBasis = "basis" // 依据
|
||
ApprovalFieldSilenceEvidenceKeys = "evidence_keys" // 申请依据附件
|
||
ApprovalFieldSilencePaymentMethod = "offline_payment_method" // 收款方式
|
||
ApprovalFieldSilenceTradeNo = "offline_trade_no" // 交易单号
|
||
ApprovalFieldSilenceVoucherKeys = "payment_voucher_keys" // 收款凭证
|
||
)
|
||
|
||
// 沉默期导出场景。
|
||
const (
|
||
ExportTaskSceneSilenceOrder = "package_silence_order" // 导出场景:沉默期延期订单
|
||
ExportTaskSceneSilenceUsage = "package_silence_usage" // 导出场景:即将过期 / 已过期套餐
|
||
)
|
||
|
||
// AuditResourceSilenceExtensionOrder 是财务流水中延期订单的调查引用资源类型。
|
||
const AuditResourceSilenceExtensionOrder = "package_silence_extension_order"
|