- 新增 Comment/CommentMention 模型,Post 新增 CommentsCount 冗余计数器 - 新增 CommentRepo(CRUD + @搜索 LV3+ + 回复统计 + 文章作者查询) - 新增 CommentService(发表/回复/删除/@解析/通知 NotifyComment/NotifyCommentReply) - 新增 CommentController(6 个 API 端点),commentUseCase ISP 接口 - 新增评论路由(公开读取 + 需登录写入),依赖注入,错误哨兵,数据库迁移 - 前端评论区 HTML/CSS/JS:分页加载、回复折叠展开、内联回复表单、@提及自动补全
60 lines
3.2 KiB
Go
60 lines
3.2 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 解锁投稿")
|
||
|
||
// 评论相关
|
||
ErrCommentNotFound = errors.New("评论不存在")
|
||
ErrCommentEmpty = errors.New("评论内容不能为空")
|
||
)
|