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,
|
||
}
|
||
}
|