Documentation
¶
Index ¶
- func BoundPageSize(pageSize int) int
- func BoundPageSizeWithRange[T cmp.Ordered](pageSize T, minN, maxN T) T
- func BuildCanonicalHref(c *gin.Context) string
- func CheckUserPermission(userEntity *users.EntityComplete, action string) (error, int)
- func GetBaseUri(c *gin.Context) string
- func GetHost(c *gin.Context) string
- func GetLoginUser(c *gin.Context) *vo.UserInfoShow
- func GetUserShowByUserId(userId uint64) *vo.UserInfoShow
- func LoginUserId(c *gin.Context) uint64
- func NewMessageError(code MessageCode, fallback string, params MessageParams) error
- func SendAEmail4User(userEntity *users.EntityComplete) error
- func ValidateEmailDomain(email string) error
- func ValidatePassword(password string, minLength int) error
- func ValidateUsername(username string) bool
- type BetterRequest
- type DataMap
- type MessageCode
- type MessageError
- type MessageParams
- type Null
- type NullRequest
- type Page
- type Response
- func BuildResponse(code int, data ResultStruct) Response
- func FailResponse() Response
- func FailResponseCode(messageCode MessageCode, params MessageParams) Response
- func FailResponseError(err error) Response
- func SuccessPage[T any](list []T, page, size int, total int64) Response
- func SuccessResponse(data any) Response
- func SuccessResponseCode(data any, messageCode MessageCode, params MessageParams) Response
- type ResultStruct
- type Status
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BoundPageSize ¶ added in v0.0.9
func BoundPageSizeWithRange ¶ added in v0.0.9
func BuildCanonicalHref ¶ added in v0.0.9
func CheckUserPermission ¶ added in v0.1.1
func CheckUserPermission(userEntity *users.EntityComplete, action string) (error, int)
CheckUserPermission 统一检查用户操作权限(封禁状态、邮箱验证等)
func GetBaseUri ¶ added in v0.0.9
func GetLoginUser ¶ added in v0.0.9
func GetLoginUser(c *gin.Context) *vo.UserInfoShow
func GetUserShowByUserId ¶ added in v0.0.9
func GetUserShowByUserId(userId uint64) *vo.UserInfoShow
func LoginUserId ¶ added in v0.0.9
func NewMessageError ¶ added in v0.2.10
func NewMessageError(code MessageCode, fallback string, params MessageParams) error
func SendAEmail4User ¶ added in v0.0.9
func SendAEmail4User(userEntity *users.EntityComplete) error
func ValidateEmailDomain ¶ added in v0.1.1
ValidateEmailDomain 验证邮箱域名是否符合白名单限制
func ValidatePassword ¶ added in v0.0.9
ValidatePassword 验证密码复杂度
func ValidateUsername ¶ added in v0.0.9
Types ¶
type BetterRequest ¶
type BetterRequest[T any] struct { Params T UserId uint64 GinContext *gin.Context // contains filtered or unexported fields }
func (*BetterRequest[T]) GetParams ¶
func (r *BetterRequest[T]) GetParams() T
func (*BetterRequest[T]) GetUser ¶
func (r *BetterRequest[T]) GetUser() (users.EntityComplete, error)
type MessageCode ¶ added in v0.2.10
type MessageCode string
MessageCode is a stable, frontend-facing identifier for i18n messages. Backend responses expose messageCode and params only; clients translate them locally.
const ( MessageRequestInvalidFormat MessageCode = "common.request.invalidFormat" // 请求体或参数格式无法解析。 MessageRequestInvalidParams MessageCode = "common.request.invalidParams" // 请求参数未通过业务校验。 MessageRequestParseFailed MessageCode = "common.request.parseFailed" // 参数绑定失败,params.error 可带原始错误。 MessageOperationSuccess MessageCode = "common.operation.success" // 通用操作成功。 MessageOperationFailed MessageCode = "common.operation.failed" // 通用操作失败。 MessageUserFetchFailed MessageCode = "user.fetchFailed" // 当前用户信息读取失败。 MessageUserNotFound MessageCode = "user.notFound" // 用户不存在。 MessageUserUpdateFailed MessageCode = "user.updateFailed" // 用户信息保存失败。 MessageUserUpdateSuccess MessageCode = "user.updateSuccess" // 用户信息保存成功。 )
const ( MessageAuthRequired MessageCode = "auth.required" // 需要登录后才能继续操作。 MessageAuthSignupDisabled MessageCode = "auth.signupDisabled" // 当前站点关闭了注册。 MessageAuthEmailDomainInvalid MessageCode = "auth.emailDomain.invalid" // 邮箱格式不正确或无法提取域名。 MessageAuthEmailDomainNotAllowed MessageCode = "auth.emailDomain.notAllowed" // 邮箱域名不在注册白名单。 MessageAuthUsernameInvalid MessageCode = "auth.username.invalid" // 用户名格式不符合规则。 MessageAuthUsernameExists MessageCode = "auth.username.exists" // 用户名已存在。 MessageAuthEmailExists MessageCode = "auth.email.exists" // 邮箱已被使用。 MessageAuthPasswordTooShort MessageCode = "auth.password.tooShort" // 密码过短,params.minLength 表示最小长度。 MessageAuthPasswordTooLong MessageCode = "auth.password.tooLong" // 密码过长。 MessageAuthPasswordNeedsLetterNumber MessageCode = "auth.password.needsLetterNumber" // 密码必须包含字母和数字。 MessageAuthCaptchaInvalid MessageCode = "auth.captcha.invalid" // 验证码错误或已过期。 MessageAuthRegisterFailed MessageCode = "auth.register.failed" // 注册失败。 MessageAuthRegisterRetryLogin MessageCode = "auth.register.retryLogin" // 注册成功但自动登录失败,建议手动登录。 MessageAuthRegisterEmailVerify MessageCode = "auth.register.emailVerify" // 注册成功,需要邮箱验证。 MessageAuthLoginSuccess MessageCode = "auth.login.success" // 登录成功。 MessageAuthLoginInvalidRequest MessageCode = "auth.login.invalidRequest" // 登录请求无效,通常需要刷新页面重试。 MessageAuthPasswordInvalidFormat MessageCode = "auth.password.invalidFormat" // 登录密码格式不正确。 MessageAuthInvalidCredentials MessageCode = "auth.credentials.invalid" // 用户名、邮箱或密码错误。 MessageAuthAccountFrozen MessageCode = "auth.account.frozen" // 账号被冻结。 MessageAuthEmailUnverified MessageCode = "auth.email.unverified" // 邮箱未验证。 MessageAuthLoginFailed MessageCode = "auth.login.failed" // 登录异常。 MessageAuthOldPasswordInvalid MessageCode = "auth.password.oldInvalid" // 原密码错误。 MessageAuthPasswordUpdateFailed MessageCode = "auth.password.updateFailed" // 修改密码失败。 MessageAuthPasswordUpdateSuccess MessageCode = "auth.password.updateSuccess" // 修改密码成功。 MessageAuthResetMailQueued MessageCode = "auth.passwordReset.mailQueued" // 如邮箱存在,将收到密码重置邮件。 MessageAuthResetTokenCreateFailed MessageCode = "auth.passwordReset.tokenFailed" // 生成重置令牌失败。 MessageAuthResetMailSendFailed MessageCode = "auth.passwordReset.mailFailed" // 发送重置邮件失败。 MessageAuthResetTokenInvalid MessageCode = "auth.passwordReset.tokenInvalid" // 重置链接过期或无效。 MessageAuthResetFailed MessageCode = "auth.passwordReset.failed" // 重置密码失败。 MessageAuthResetSuccess MessageCode = "auth.passwordReset.success" // 重置密码成功。 )
const ( MessagePermissionResolveFailed MessageCode = "permission.resolveFailed" // 权限信息读取失败。 MessagePermissionDenied MessageCode = "permission.denied" // 当前用户没有执行该操作的权限。 MessagePermissionUserFrozen MessageCode = "permission.userFrozen" // 用户已被冻结,params.action 表示操作名称。 MessagePermissionEmailRequired MessageCode = "permission.emailRequired" // 需要先完成邮箱验证,params.action 表示操作名称。 )
const ( MessageUploadAttachmentDisabled MessageCode = "upload.attachment.disabled" // 站点关闭了附件上传。 MessageUploadCooldown MessageCode = "upload.cooldown" // 新用户上传冷却中,params.minutes/availableAt。 MessageUploadDailyLimit MessageCode = "upload.dailyLimit" // 达到每日上传限制,params.count。 MessageUploadDailyLimitAvatar MessageCode = "upload.dailyLimit.avatar" // 头像上传将超过每日限制,params.count/fileCount。 MessageUploadFileMissing MessageCode = "upload.file.missing" // 未获取到上传文件。 MessageUploadFilenameRequired MessageCode = "upload.filename.required" // 文件名为空。 MessageUploadFileTooLarge MessageCode = "upload.file.tooLarge" // 文件超过大小限制,params.maxSizeKb。 MessageUploadUnsupportedExt MessageCode = "upload.extension.unsupported" // 文件扩展名不允许,params.extensions。 MessageUploadUnsupportedImage MessageCode = "upload.image.unsupported" // 图片格式不支持。 MessageUploadReadFailed MessageCode = "upload.readFailed" // 文件读取失败。 MessageUploadOpenFailed MessageCode = "upload.openFailed" // 文件打开失败。 MessageUploadInvalidImage MessageCode = "upload.image.invalidContent" // 文件内容不是有效图片。 MessageUploadContentReadFailed MessageCode = "upload.contentReadFailed" // 文件内容读取失败。 MessageUploadSaveFailed MessageCode = "upload.saveFailed" // 文件保存失败,params.error 可带原始错误。 MessageUploadSuccess MessageCode = "upload.success" // 上传成功。 )
const ( MessageArticleNotFound MessageCode = "article.notFound" // 文章不存在。 MessageArticleOwnerMismatch MessageCode = "article.ownerMismatch" // 不能修改或删除他人的文章。 MessageArticleOperationDenied MessageCode = "article.operationDenied" // 当前文章不可操作。 MessageArticleSaveFailed MessageCode = "article.saveFailed" // 文章保存失败。 MessageArticleDailyLimit MessageCode = "article.dailyLimit" // 当天发布过多。 MessageArticleTitleTooShort MessageCode = "article.title.tooShort" // 标题过短,params.minLength。 MessageArticleTitleTooLong MessageCode = "article.title.tooLong" // 标题过长,params.maxLength。 MessageArticleContentTooShort MessageCode = "article.content.tooShort" // 正文过短,params.minLength。 MessageArticleContentTooLong MessageCode = "article.content.tooLong" // 正文过长,params.maxLength。 MessageArticlePostCooldown MessageCode = "article.post.cooldown" // 新用户发帖冷却中,params.minutes/availableAt。 MessageCommentContentTooShort MessageCode = "comment.content.tooShort" // 评论过短,params.minLength。 MessageCommentContentTooLong MessageCode = "comment.content.tooLong" // 评论过长,params.maxLength。 MessageCommentPostCooldown MessageCode = "comment.post.cooldown" // 新用户评论冷却中,params.minutes/availableAt。 MessageCommentReplyTargetMissed MessageCode = "comment.replyTargetMissed" // 被回复的评论不存在。 MessageCommentCreateFailed MessageCode = "comment.createFailed" // 评论创建失败,params.error 可带原始错误。 MessageReplyNotFound MessageCode = "reply.notFound" // 回复不存在。 MessageReplyUpdateFailed MessageCode = "reply.updateFailed" // 回复更新失败,params.error 可带原始错误。 )
const ( MessageNotificationMarkReadFailed MessageCode = "notification.markRead.failed" // 标记单条通知已读失败。 MessageNotificationMarkReadSuccess MessageCode = "notification.markRead.success" // 标记单条通知已读成功。 MessageNotificationMarkAllFailed MessageCode = "notification.markAllRead.failed" // 标记全部通知已读失败。 MessageNotificationMarkAllSuccess MessageCode = "notification.markAllRead.success" // 标记全部通知已读成功。 MessageOAuthUnbindFailed MessageCode = "oauth.unbind.failed" // 解绑第三方账号失败,params.error 可带原始错误。 MessageOAuthUnbindSuccess MessageCode = "oauth.unbind.success" // 解绑第三方账号成功。 MessageOAuthCallbackFailed MessageCode = "oauth.callback.failed" // OAuth 认证回调失败。 MessageOAuthProcessFailed MessageCode = "oauth.process.failed" // OAuth 登录处理失败。 MessageOAuthAccountFrozen MessageCode = "oauth.account.frozen" // OAuth 登录账号被冻结。 MessageOAuthActivationUpdateFailed MessageCode = "oauth.activation.updateFailed" // OAuth 用户激活状态更新失败。 MessageOAuthTokenFailed MessageCode = "oauth.token.failed" // OAuth 登录 token 生成失败。 MessageChatSendFailed MessageCode = "chat.send.failed" // 私信发送失败,params.error 可带原始错误。 MessageChatGetMessagesFailed MessageCode = "chat.messages.failed" // 获取私信列表失败。 MessageChatMarkReadFailed MessageCode = "chat.markRead.failed" // 标记私信已读失败。 )
const ( MessageAdminStatsFetchFailed MessageCode = "admin.stats.fetchFailed" // 管理后台统计数据读取失败。 MessageAdminBadgeNameRequired MessageCode = "admin.badge.nameRequired" // 徽章名称不能为空。 MessageAdminBadgeTypeInvalid MessageCode = "admin.badge.typeInvalid" // 徽章类型不合法。 MessageAdminBadgeCodeRequired MessageCode = "admin.badge.codeRequired" // 徽章编码不能为空。 MessageAdminBadgeGrantModeInvalid MessageCode = "admin.badge.grantModeInvalid" // 徽章授予方式不合法。 MessageAdminBadgeSystemNotFound MessageCode = "admin.badge.systemNotFound" // 系统徽章不存在。 MessageAdminBadgeSaveFailed MessageCode = "admin.badge.saveFailed" // 保存徽章失败。 MessageAdminBadgeSystemDeleteBlock MessageCode = "admin.badge.systemDeleteBlocked" // 系统默认徽章不可删除。 MessageAdminBadgeDeleteFailed MessageCode = "admin.badge.deleteFailed" // 删除徽章失败。 MessageAdminTargetUserFetchFailed MessageCode = "admin.user.targetFetchFailed" // 目标用户查询失败。 MessageAdminCategoryRequired MessageCode = "admin.category.nameRequired" // 分类名称不能为空。 MessageAdminCategoryNotFound MessageCode = "admin.category.notFound" // 分类不存在。 MessageAdminCategoryDataNotFound MessageCode = "admin.category.dataNotFound" // 分类数据不存在。 MessageAdminCategoryKeepOne MessageCode = "admin.category.keepOne" // 至少保留一个分类。 MessageAdminCategoryHasArticles MessageCode = "admin.category.hasArticles" // 分类下存在有效文章。 MessageAdminCategorySelectRequired MessageCode = "admin.article.categoryRequired" // 文章至少需要一个分类。 MessageAdminCategorySelectTooMany MessageCode = "admin.article.categoryTooMany" // 文章最多选择三个分类。 MessageAdminRoleNotFound MessageCode = "admin.role.notFound" // 角色不存在。 MessageAdminTestEmailRequired MessageCode = "admin.mail.testEmailRequired" // 测试邮箱不能为空。 MessageAdminTestEmailFailed MessageCode = "admin.mail.testFailed" // 邮件配置测试失败,params.error 可带原始错误。 MessageAdminTestEmailSuccess MessageCode = "admin.mail.testSuccess" // 邮件配置测试成功,params.email 表示测试邮箱。 )
type MessageError ¶ added in v0.2.10
type MessageError struct {
Code MessageCode
Fallback string
Params MessageParams
}
MessageError carries a stable code plus fallback text through service helpers.
func (MessageError) Error ¶ added in v0.2.10
func (err MessageError) Error() string
type MessageParams ¶ added in v0.2.10
MessageParams contains dynamic values used by frontend translations.
type NullRequest ¶
type NullRequest BetterRequest[Null]
type Response ¶
type Response struct {
Code int
Data ResultStruct
}
func BuildResponse ¶
func BuildResponse(code int, data ResultStruct) Response
func FailResponse ¶
func FailResponse() Response
func FailResponseCode ¶ added in v0.2.10
func FailResponseCode(messageCode MessageCode, params MessageParams) Response
func FailResponseError ¶ added in v0.2.10
func SuccessResponse ¶
func SuccessResponseCode ¶ added in v0.2.10
func SuccessResponseCode(data any, messageCode MessageCode, params MessageParams) Response
type ResultStruct ¶
type ResultStruct struct {
Result any `json:"result"`
Code Status `json:"code"`
MessageCode MessageCode `json:"messageCode,omitempty"`
Params MessageParams `json:"params,omitempty"`
}
func FailData ¶
func FailData() ResultStruct
func FailDataCode ¶ added in v0.2.10
func FailDataCode(messageCode MessageCode, params MessageParams) ResultStruct
FailDataCode returns a failed response with a stable message code.
func FailDataError ¶ added in v0.2.10
func FailDataError(err error) ResultStruct
func SuccessData ¶
func SuccessData(data any) ResultStruct
func SuccessDataCode ¶ added in v0.2.10
func SuccessDataCode(data any, messageCode MessageCode, params MessageParams) ResultStruct
SuccessDataCode returns a successful response with a stable message code.
Click to show internal directories.
Click to hide internal directories.