fix: Rock Token 超时按满 2/3 天判定并统一显示口径
This commit is contained in:
@@ -121,6 +121,39 @@ func rockOverdueCutoff(now time.Time, days int) time.Time {
|
||||
return now.AddDate(0, 0, -days)
|
||||
}
|
||||
|
||||
// applyRockTokenOverdueFlags 用与筛选、统计完全相同的 now 和阈值,
|
||||
// 为列表补充超时标记与实际天数,避免前端用本地时间算出「显示 2.0 天但未超时」。
|
||||
func applyRockTokenOverdueFlags(tokens []model.RockToken, now time.Time, warnDays, dangerDays, boundWarnDays int) {
|
||||
usingCutoff := rockOverdueCutoff(now, warnDays)
|
||||
dangerCutoff := rockOverdueCutoff(now, dangerDays)
|
||||
boundCutoff := rockOverdueCutoff(now, boundWarnDays)
|
||||
for i := range tokens {
|
||||
switch tokens[i].Status {
|
||||
case model.RockStatusUsing:
|
||||
if tokens[i].UsingAt == nil {
|
||||
continue
|
||||
}
|
||||
days := now.Sub(*tokens[i].UsingAt).Hours() / 24
|
||||
if days < 0 {
|
||||
days = 0
|
||||
}
|
||||
tokens[i].UsingDays = days
|
||||
tokens[i].UsingOverdue = !tokens[i].UsingAt.After(usingCutoff)
|
||||
tokens[i].UsingDanger = !tokens[i].UsingAt.After(dangerCutoff)
|
||||
case model.RockStatusBound:
|
||||
if tokens[i].BoundAt == nil {
|
||||
continue
|
||||
}
|
||||
days := now.Sub(*tokens[i].BoundAt).Hours() / 24
|
||||
if days < 0 {
|
||||
days = 0
|
||||
}
|
||||
tokens[i].BoundDays = days
|
||||
tokens[i].BoundOverdue = !tokens[i].BoundAt.After(boundCutoff)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// applyRockTokenListFilters 与 Token 列表使用同一套筛选条件,避免“看到多少、删多少”不一致。
|
||||
// 列表、删除预览、全部删除、回收站共用;now 由调用方传入以便同一请求内阈值一致。
|
||||
func applyRockTokenListFilters(db *gorm.DB, status, search string, now time.Time, warnDays, boundWarnDays int) *gorm.DB {
|
||||
|
||||
Reference in New Issue
Block a user