Files
qitongxue-api/internal/logic/admin_level_s10.go
2026-09-29 10:57:01 +08:00

27 lines
1.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}