package dto import ( "time" "tyapi-server/internal/domains/user/entities" ) // SendCodeRequest 发送验证码请求 type SendCodeRequest struct { Phone string `json:"phone" binding:"required,len=11" example:"13800138000"` Scene entities.SMSScene `json:"scene" binding:"required,oneof=register login change_password reset_password bind unbind" example:"register"` } // SendCodeResponse 发送验证码响应 type SendCodeResponse struct { Message string `json:"message" example:"验证码发送成功"` ExpiresAt time.Time `json:"expires_at" example:"2024-01-01T00:05:00Z"` } // VerifyCodeRequest 验证验证码请求 type VerifyCodeRequest struct { Phone string `json:"phone" binding:"required,len=11" example:"13800138000"` Code string `json:"code" binding:"required,len=6" example:"123456"` Scene entities.SMSScene `json:"scene" binding:"required,oneof=register login change_password reset_password bind unbind" example:"register"` } // SMSCodeResponse SMS验证码记录响应 type SMSCodeResponse struct { ID string `json:"id" example:"123e4567-e89b-12d3-a456-426614174000"` Phone string `json:"phone" example:"13800138000"` Scene entities.SMSScene `json:"scene" example:"register"` Used bool `json:"used" example:"false"` ExpiresAt time.Time `json:"expires_at" example:"2024-01-01T00:05:00Z"` CreatedAt time.Time `json:"created_at" example:"2024-01-01T00:00:00Z"` } // SMSCodeListRequest SMS验证码列表请求 type SMSCodeListRequest struct { Phone string `form:"phone" binding:"omitempty,len=11" example:"13800138000"` Scene entities.SMSScene `form:"scene" binding:"omitempty,oneof=register login change_password reset_password bind unbind" example:"register"` Page int `form:"page" binding:"omitempty,min=1" example:"1"` PageSize int `form:"page_size" binding:"omitempty,min=1,max=100" example:"20"` } // 转换方法 func FromSMSCodeEntity(smsCode *entities.SMSCode) *SMSCodeResponse { if smsCode == nil { return nil } return &SMSCodeResponse{ ID: smsCode.ID, Phone: smsCode.Phone, Scene: smsCode.Scene, Used: smsCode.Used, ExpiresAt: smsCode.ExpiresAt, CreatedAt: smsCode.CreatedAt, } } func FromSMSCodeEntities(smsCodes []*entities.SMSCode) []*SMSCodeResponse { if smsCodes == nil { return []*SMSCodeResponse{} } responses := make([]*SMSCodeResponse, len(smsCodes)) for i, smsCode := range smsCodes { responses[i] = FromSMSCodeEntity(smsCode) } return responses }