- 新增域能完整分层:EnergyLog/PostEnergizeLog/DailyExpSummary 模型、EnergyRepo、EnergyService、EnergyController/AdminEnergyController - 支持签到获取域能(+1)、帖子赋能(-1/-2)/被赋能(+1/+2)、改名扣能(-6)/退款(+6)、删帖扣能(-2) - 赋能单人单帖上限20域能,每日赋能获得经验上限50 - 管理员支持批量调整域能(owner)和查询域能日志(admin) - LV0用户(exp<1)禁止签到和发帖,余额为负可签到/被赋能/删帖但不能赋能/改名 - 首次改名免费(通过HasCompletedTask判重),改名扣能在提交审核时执行 - 移除导航栏手动签到按钮,签到融入域能系统(自动签到) - 新增个人中心域能TAB展示余额和流水日志(近7天) - 新增帖子详情页赋能按钮(轻赋/重赋) - 管理后台新增域能管理和域能日志页面
56 lines
3.0 KiB
Go
56 lines
3.0 KiB
Go
package common
|
||
|
||
import "errors"
|
||
|
||
// 认证相关错误哨兵(统一存放,避免 service 和 middleware 交叉引用)
|
||
var (
|
||
ErrEmailExists = errors.New("该邮箱已注册")
|
||
ErrUsernameTaken = errors.New("该用户名已被占用")
|
||
ErrUsernameInvalid = errors.New("用户名格式无效(支持中英文、数字、下划线、连字符,1-16个字符)")
|
||
ErrBioTooLong = errors.New("个性签名不能超过 128 个字符")
|
||
ErrInvalidCred = errors.New("邮箱或密码错误")
|
||
ErrUserNotFound = errors.New("用户不存在")
|
||
ErrUserBanned = errors.New("该账号已被封禁")
|
||
ErrUserDeleted = errors.New("该账号正在注销中,登录即撤销注销")
|
||
// 统一返回,避免泄露用户存在性、软删除状态等内部信息
|
||
ErrUserLocked = errors.New("邮箱或密码错误")
|
||
ErrWeakPassword = errors.New("密码需至少 8 位,且包含字母和数字")
|
||
ErrTokenExpired = errors.New("登录已过期,请重新登录")
|
||
ErrTokenInvalid = errors.New("无效的认证凭据")
|
||
ErrTokenRevoked = errors.New("登录凭证已失效,请重新登录")
|
||
ErrRateLimitAccount = errors.New("该账号登录尝试过于频繁")
|
||
ErrRateLimitIP = errors.New("请求过于频繁,请稍后重试")
|
||
ErrRateLimitRegisterIP = errors.New("注册请求过于频繁,请稍后重试")
|
||
ErrPermissionDenied = errors.New("权限不足")
|
||
|
||
// 审核相关
|
||
ErrAuditNotFound = errors.New("审核记录不存在")
|
||
ErrAuditNotPending = errors.New("该审核记录已处理")
|
||
ErrAuditDisabled = errors.New("审核功能未开启")
|
||
ErrAuditTypeOff = errors.New("该类型审核未开启")
|
||
|
||
// 密码 & 注销相关
|
||
ErrIncorrectPassword = errors.New("当前密码错误")
|
||
ErrLoginBeforeDelete = errors.New("请先登录再注销")
|
||
ErrNeedsConfirmRestore = errors.New("需要二次确认撤销注销")
|
||
ErrOwnerCannotDelete = errors.New("站长不可自主注销,请先转让站长权限")
|
||
ErrRegistrationDisabled = errors.New("注册功能已关闭")
|
||
ErrMaintenanceMode = errors.New("社区正在维护中,仅站长可登录")
|
||
|
||
// 帖子相关
|
||
ErrPostNotFound = errors.New("帖子不存在")
|
||
ErrPostCannotEdit = errors.New("当前状态不允许编辑")
|
||
ErrPostCannotSubmit = errors.New("仅草稿和已退回帖子可提交审核")
|
||
ErrPostCannotApprove = errors.New("仅待审核帖子可通过")
|
||
ErrPostCannotReject = errors.New("仅待审核和已发布帖子可退回")
|
||
ErrPostCannotLock = errors.New("待审核帖子不允许锁定")
|
||
ErrPostCannotUnlock = errors.New("仅锁定状态可解锁")
|
||
|
||
// 域能相关
|
||
ErrInvalidEnergyAmount = errors.New("无效的赋能数量")
|
||
ErrCannotEnergizeSelf = errors.New("不能给自己的文章赋能")
|
||
ErrInsufficientEnergy = errors.New("域能不足,可通过每日签到或创作被赋能获取")
|
||
ErrEnergizeLimitReached = errors.New("对该文章赋能已达上限")
|
||
ErrCreatePostNoExp = errors.New("经验不足,Lv1 解锁投稿")
|
||
)
|