EffectiveStatusAt 使用给定时间计算用户的实际运行时状态(不写库,仅计算)。 在同一同步周期内传入相同的 now 可保证结果确定。
(now time.Time)
| 193 | // EffectiveStatusAt 使用给定时间计算用户的实际运行时状态(不写库,仅计算)。 |
| 194 | // 在同一同步周期内传入相同的 now 可保证结果确定。 |
| 195 | func (u User) EffectiveStatusAt(now time.Time) string { |
| 196 | if u.Status == StatusDisabled { |
| 197 | return u.Status |
| 198 | } |
| 199 | if u.Status == StatusOnHold { |
| 200 | // OnHoldExpireAt 到期则自动视为 active(实际状态更新由 job 负责) |
| 201 | if u.OnHoldExpireAt != nil && !u.OnHoldExpireAt.IsZero() && now.After(*u.OnHoldExpireAt) { |
| 202 | return StatusActive |
| 203 | } |
| 204 | return u.Status |
| 205 | } |
| 206 | if u.ExpireAt != nil && !u.ExpireAt.IsZero() && now.After(*u.ExpireAt) { |
| 207 | return StatusExpired |
| 208 | } |
| 209 | if u.TrafficLimit > 0 && u.UsedBytes >= u.TrafficLimit { |
| 210 | return StatusLimited |
| 211 | } |
| 212 | return StatusActive |
| 213 | } |
| 214 | |
| 215 | // EffectiveStatus 计算用户的实际运行时状态(便捷方法,使用当前时间)。 |
| 216 | func (u User) EffectiveStatus() string { |
no outgoing calls
no test coverage detected