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 SilenceFirstPurchaseBackfillBatchSize = 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" AuditActionAssetFirstPurchaseRecorded = "asset.first_purchase_recorded" AuditActionAssetFirstPurchaseEnded = "asset.first_purchase_ended" ) // 资产首次购买套餐记录。 const ( FirstPurchaseSourceOrder = "order" FirstPurchaseSourceBackfill = "backfill" FirstPurchaseEndReasonExchange = "exchange_return" FirstPurchaseAssetTypeIotCard = "iot_card" FirstPurchaseAssetTypeDevice = "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"