29 lines
663 B
Go
29 lines
663 B
Go
|
|
package lzUtils
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"database/sql"
|
|||
|
|
"time"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// RenewMembership 延长会员有效期
|
|||
|
|
// 规则:如果旧到期时间还没过,在旧到期时间上续1年;如果已过期或为空,从当前时间起算1年
|
|||
|
|
func RenewMembership(expiry sql.NullTime) sql.NullTime {
|
|||
|
|
now := time.Now()
|
|||
|
|
var baseTime time.Time
|
|||
|
|
if expiry.Valid && expiry.Time.After(now) {
|
|||
|
|
// 未过期 → 在旧到期时间上续1年
|
|||
|
|
baseTime = expiry.Time
|
|||
|
|
} else {
|
|||
|
|
// 已过期或为空 → 从现在开始算1年
|
|||
|
|
baseTime = now
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 增加一年(自动处理闰年)
|
|||
|
|
newTime := baseTime.AddDate(1, 0, 0)
|
|||
|
|
|
|||
|
|
return sql.NullTime{
|
|||
|
|
Time: newTime,
|
|||
|
|
Valid: true,
|
|||
|
|
}
|
|||
|
|
}
|