README.md: - 开发环境端口 8080 → 8085 - 统一响应格式添加 trace_id 字段 - 成功消息 "ok" → "success",创建 "created" frontend/auth.md(全面更新): - 注册响应:201 状态码 + message="created" + expires_in=7200 - 所有响应示例:添加 trace_id 和 time 字段 - user 对象:添加 gender 字段 - 退出登录:更新为无状态 JWT 说明(非 Redis) - 刷新 Token:添加 user 字段到响应 - profile:添加 phone + created_at 字段 - 错误码:统一使用 HTTP 状态码说明表 代码同步: - dto.UserInfo: 添加 Phone + CreatedAt 字段 - auth_service.buildUserInfo: 填充新字段 Made-with: Cursor
57 lines
2.8 KiB
Go
57 lines
2.8 KiB
Go
// Package dto 定义数据传输对象,用于 Controller 层的请求/响应参数绑定
|
||
package dto
|
||
|
||
// RegisterRequest 用户注册请求参数
|
||
type RegisterRequest struct {
|
||
Username string `json:"username" binding:"required,min=3,max=50"` // 用户名,3-50 字符
|
||
Email string `json:"email" binding:"required,email"` // 邮箱地址,必须符合邮箱格式
|
||
Password string `json:"password" binding:"required,min=6,max=50"` // 密码,6-50 字符
|
||
Nickname string `json:"nickname" binding:"max=50"` // 昵称,可选,最多 50 字符
|
||
}
|
||
|
||
// LoginRequest 用户登录请求参数
|
||
type LoginRequest struct {
|
||
Account string `json:"account" binding:"required"` // 登录账号,支持用户名或邮箱
|
||
Password string `json:"password" binding:"required"` // 登录密码
|
||
}
|
||
|
||
// LoginResponse 登录成功响应数据
|
||
type LoginResponse struct {
|
||
Token string `json:"token"` // Access Token,用于接口认证
|
||
RefreshToken string `json:"refresh_token"` // Refresh Token,用于刷新 Access Token
|
||
ExpiresIn int64 `json:"expires_in"` // Access Token 有效期(秒)
|
||
User UserInfo `json:"user"` // 当前登录用户基本信息
|
||
}
|
||
|
||
// UserInfo 用户基本信息(用于响应返回,不含敏感字段)
|
||
type UserInfo struct {
|
||
ID int64 `json:"id"` // 用户 ID
|
||
Username string `json:"username"` // 用户名
|
||
Email string `json:"email"` // 邮箱
|
||
Nickname string `json:"nickname"` // 昵称
|
||
Avatar string `json:"avatar"` // 头像 URL
|
||
Gender int `json:"gender"` // 性别:0=未知, 1=男, 2=女
|
||
Phone string `json:"phone,omitempty"` // 手机号(可能为空)
|
||
Roles []string `json:"roles"` // 角色代码列表
|
||
CreatedAt string `json:"created_at,omitempty"` // 注册时间(格式:yyyy-MM-dd HH:mm:ss)
|
||
}
|
||
|
||
// RefreshTokenRequest 刷新 Token 请求参数
|
||
type RefreshTokenRequest struct {
|
||
RefreshToken string `json:"refresh_token" binding:"required"` // 原 Refresh Token
|
||
}
|
||
|
||
// UpdateProfileRequest 更新个人资料请求参数
|
||
type UpdateProfileRequest struct {
|
||
Nickname string `json:"nickname" binding:"max=50"` // 新昵称
|
||
Avatar string `json:"avatar" binding:"max=500"` // 新头像 URL
|
||
Gender *int `json:"gender" binding:"omitempty,oneof=0 1 2"` // 新性别,指针类型区分「未传」和「传 0」
|
||
Phone string `json:"phone" binding:"max=20"` // 新手机号
|
||
}
|
||
|
||
// ChangePasswordRequest 修改密码请求参数
|
||
type ChangePasswordRequest struct {
|
||
OldPassword string `json:"old_password" binding:"required"` // 旧密码
|
||
NewPassword string `json:"new_password" binding:"required,min=6,max=50"` // 新密码,6-50 字符
|
||
}
|