27 lines
1.1 KiB
Go
27 lines
1.1 KiB
Go
|
|
package logic
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|||
|
|
"github.com/gogf/gf/v2/os/gtime"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// ============================================================================
|
|||
|
|
// 约定 S10 · 等级到期时间变更的合法性(纯函数,便于单测)
|
|||
|
|
//
|
|||
|
|
// level_expire_at IS NULL/零值 = 永久有效;续费 / 手动开通**不得把永久覆写成有限期**。
|
|||
|
|
// 本函数由 AdminUserSetLevel 调用(抽离自原内联判定,行为不变)。
|
|||
|
|
// ============================================================================
|
|||
|
|
|
|||
|
|
// levelExpireTransitionErr 判定一次等级到期时间变更是否合法(约定 S10)。
|
|||
|
|
//
|
|||
|
|
// - prevPermanent:变更前是否永久有效(level_expire_at 为 NULL/零值);
|
|||
|
|
// - newExpire:变更后的到期时间(nil = 写 NULL = 永久)。
|
|||
|
|
//
|
|||
|
|
// 非法情形:变更前永久、变更后有限期 → 拒绝;其余放行。
|
|||
|
|
func levelExpireTransitionErr(prevPermanent bool, newExpire *gtime.Time) error {
|
|||
|
|
if prevPermanent && newExpire != nil {
|
|||
|
|
return gerror.New("该用户当前为永久有效,不能改为有限期")
|
|||
|
|
}
|
|||
|
|
return nil
|
|||
|
|
}
|