package constants // 分层轮询的套餐状态匹配维度(tb_polling_config.package_state)。 const ( // PollingPackageStateActive 有生效套餐。 PollingPackageStateActive = "active" // PollingPackageStateDepleted 套餐已用完(无生效套餐,存在已用完套餐)。 PollingPackageStateDepleted = "depleted" // PollingPackageStatePending 只有待生效套餐。 PollingPackageStatePending = "pending" // PollingPackageStateNone 无套餐。 PollingPackageStateNone = "none" ) // PollingPackageStates 是套餐状态匹配维度全集。 var PollingPackageStates = []string{PollingPackageStateActive, PollingPackageStateDepleted, PollingPackageStatePending, PollingPackageStateNone} // PollingPackageStateName 返回套餐状态中文名称。 func PollingPackageStateName(state string) string { switch state { case PollingPackageStateActive: return "有生效套餐" case PollingPackageStateDepleted: return "套餐已用完" case PollingPackageStatePending: return "只有待生效套餐" case PollingPackageStateNone: return "无套餐" default: return "未知" } } const ( // PollingPreResetTailMinutes 重置日前加密时最后一次流量查询相对重置时刻的提前量(分钟)。 PollingPreResetTailMinutes = 5 // PollingTierFactsCacheSeconds 卡分层事实(套餐状态)在进程内缓存的秒数,避免同一卡短时间内重复查库。 PollingTierFactsCacheSeconds = 60 ) // TaskTypePollingRecalculateDue 轮询配置调整后"立即重算到期时间"的异步任务(使用数据清理队列)。 const TaskTypePollingRecalculateDue = "polling:recalculate_due" // 重算到期时间任务状态。 const ( // PollingRecalcStatusPending 已入队。 PollingRecalcStatusPending = "pending" // PollingRecalcStatusRunning 执行中。 PollingRecalcStatusRunning = "running" // PollingRecalcStatusCompleted 已完成。 PollingRecalcStatusCompleted = "completed" // PollingRecalcStatusFailed 失败。 PollingRecalcStatusFailed = "failed" ) // PollingRecalcProgressTTLSeconds 重算任务进度在 Redis 中的保留时长(7 天)。 const PollingRecalcProgressTTLSeconds = 7 * 24 * 3600 // RedisPollingRecalcProgressKey 返回重算到期时间任务的进度 Key(Hash)。 func RedisPollingRecalcProgressKey(taskID string) string { return "polling:recalc_due:" + taskID } // PollingPreResetStatTTLSeconds 重置日前加密效果统计在 Redis 中的保留时长(40 天,覆盖上一个重置周期)。 const PollingPreResetStatTTLSeconds = 40 * 24 * 3600 // RedisPollingPreResetCheckedKey 返回某账户某重置日窗口内已查到流量的卡集合(HyperLogLog)。 func RedisPollingPreResetCheckedKey(carrierID uint, resetDate string) string { return "polling:pre_reset:" + uintKey(carrierID) + ":" + resetDate + ":checked" } // RedisPollingPreResetOffsetKey 返回某账户某重置日窗口内每张卡最后一次查询距重置时刻的分钟数(Hash)。 func RedisPollingPreResetOffsetKey(carrierID uint, resetDate string) string { return "polling:pre_reset:" + uintKey(carrierID) + ":" + resetDate + ":offset" } func uintKey(v uint) string { const digits = "0123456789" if v == 0 { return "0" } var buf [20]byte i := len(buf) for v > 0 { i-- buf[i] = digits[v%10] v /= 10 } return string(buf[i:]) } // CardObservationScenePreActivationSettlement 激活前流量结算观测场景。 const CardObservationScenePreActivationSettlement = "pre_activation_settlement" const ( // PreActivationSettlementTotalTimeoutSeconds 一次激活前流量结算的总超时(秒);处于支付、实名回调等同步链路,超时即跳过剩余卡。 PreActivationSettlementTotalTimeoutSeconds = 8 // PreActivationSettlementStepTimeoutSeconds 单卡结算查询超时(秒)。 PreActivationSettlementStepTimeoutSeconds = 4 // PackageActivationLockSeconds 资产级激活锁 TTL(秒),须大于结算总超时与激活事务耗时之和。 PackageActivationLockSeconds = 60 )