fix: correctly parse VPS expiry from PublicNote and enhance domain date parsing

This commit is contained in:
Bot
2026-07-01 23:05:34 +08:00
parent f3dded3186
commit cabbfff858
2 changed files with 31 additions and 10 deletions
+3
View File
@@ -140,5 +140,8 @@ func SyncDomainWHOIS(c *gin.Context) (any, error) {
func SyncAllDomains(c *gin.Context) (any, error) { func SyncAllDomains(c *gin.Context) (any, error) {
singleton.SyncAllDomains() singleton.SyncAllDomains()
// 手动触发到期检查,方便调试
singleton.CronJobForDomainStatus()
singleton.CronJobForServerStatus()
return nil, nil return nil, nil
} }
+28 -10
View File
@@ -399,7 +399,16 @@ func CronJobForDomainStatus() {
continue continue
} }
endDate, err := time.Parse(time.RFC3339, billing.EndDate) // 处理类似 2026-10-10 甚至其他不带时区的格式
endDateStr := billing.EndDate
var endDate time.Time
var err error
if len(endDateStr) == 10 { // YYYY-MM-DD
endDate, err = time.Parse("2006-01-02", endDateStr)
} else {
endDate, err = time.Parse(time.RFC3339, endDateStr)
}
if err != nil { if err != nil {
log.Printf("NEZHA>> Cron::Error parsing end date for domain %s: %v", d.Domain, err) log.Printf("NEZHA>> Cron::Error parsing end date for domain %s: %v", d.Domain, err)
continue continue
@@ -466,21 +475,30 @@ func CronJobForServerStatus() {
for i := range servers { for i := range servers {
s := servers[i] s := servers[i]
if s.BillingData == nil { var pn struct {
BillingDataMod struct {
EndDate string `json:"endDate"`
} `json:"billingDataMod"`
}
if s.PublicNote != "" {
_ = json.Unmarshal([]byte(s.PublicNote), &pn)
}
if pn.BillingDataMod.EndDate == "" {
continue continue
} }
var billing model.BillingDataMod // 处理类似 2026-10-10 甚至其他不带时区的格式
if err := json.Unmarshal(s.BillingData, &billing); err != nil { endDateStr := pn.BillingDataMod.EndDate
continue var endDate time.Time
var err error
if len(endDateStr) == 10 { // YYYY-MM-DD
endDate, err = time.Parse("2006-01-02", endDateStr)
} else {
endDate, err = time.Parse(time.RFC3339, endDateStr)
} }
if billing.EndDate == "" {
continue
}
endDate, err := time.Parse(time.RFC3339, billing.EndDate)
if err != nil { if err != nil {
log.Printf("NEZHA>> Cron::Error parsing end date for VPS %s: %v", s.Name, err)
continue continue
} }