## CI 修复 (P0/P1) P0 — 编译阻塞: - interfaces.go: postUseCase ISP 接口移除不用的 Create/Update/Delete P1 — 必须修复: - ST1000: 为 13 个包添加包注释 (common/config/model/service/...) - ST1005: redis_store.go 全部错误消息改为小写开头 - errcheck (19处): defer Close()→闭包忽略, notifier.Create→_=, r.Run→检查error - errorlint (9处): switch-on-error→errors.Is 链, ==→errors.Is - ST1020/ST1022: 导出符号注释以符号名开头 P2 — 安全评审: - gosec (12处): G203/G301/G304/G306 添加 nolint 注释并附理由 P3 — 清理: - unused: 移除 hasUnicode/energyStore/current/energyAdminUseCase - gofumpt + goimports 全量格式化 (35+ 文件)
62 lines
3.3 KiB
Go
62 lines
3.3 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("当前状态不允许编辑")
|
||
ErrScheduledTooSoon = errors.New("定时发布时间至少需晚于当前 30 分钟")
|
||
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 解锁投稿")
|
||
ErrInsufficientFund = errors.New("公户余额不足,无法执行操作")
|
||
|
||
// 评论相关
|
||
ErrCommentNotFound = errors.New("评论不存在")
|
||
ErrCommentEmpty = errors.New("评论内容不能为空")
|
||
)
|