| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- // Package requests 处理请求数据和表单验证逻辑
- package requests
- import (
- "github.com/gin-gonic/gin"
- "github.com/thedevsaddam/govalidator"
- "github.com/runningwater/gohub/app/requests/validators"
- )
- type SignupPhoneExistRequest struct {
- Phone string `json:"phone,omitempty" valid:"phone"`
- }
- type SignupEmailExistRequest struct {
- Email string `json:"email,omitempty" valid:"email"`
- }
- func ValidateSignupPhoneExist(data any, c *gin.Context) map[string][]string {
- // 自定义验证规则
- rules := govalidator.MapData{
- "phone": []string{"required", "digits:11"},
- }
- // 自定义错误信息
- messages := govalidator.MapData{
- "phone": []string{
- "required:手机号不能为空",
- "digits:手机号必须是11位数字",
- },
- }
- // 执行验证
- return validate(data, rules, messages)
- }
- func ValidateSignupEmailExist(data any, c *gin.Context) map[string][]string {
- // 自定义验证规则
- rules := govalidator.MapData{
- "email": []string{"required", "min:4", "max:30", "email"},
- }
- // 自定义错误信息
- messages := govalidator.MapData{
- "email": []string{
- "required:Email 不能为空",
- "min:Email 长度需大于 4",
- "max:Email 长度需小于 30",
- "email:Email 格式不正确,请提供有效的邮箱地址",
- },
- }
- // 执行验证
- return validate(data, rules, messages)
- }
- // SignupUsingPhoneRequest 用于手机注册的请求结构体
- // 该结构体包含了手机号码、验证码、姓名、密码和确认密码等字段
- type SignupUsingPhoneRequest struct {
- Phone string `json:"phone,omitempty" valid:"phone"`
- VerifyCode string `json:"verify_code,omitempty" valid:"verify_code"`
- Name string `valid:"name" json:"name,omitempty"`
- Password string `valid:"password" json:"password,omitempty"`
- PasswordConfirm string `valid:"password_confirm" json:"password_confirm,omitempty"`
- }
- // SignupUsingPhone 验证手机号码注册表单
- func SignupUsingPhone(data any, c *gin.Context) map[string][]string {
- // 自定义验证规则
- rules := govalidator.MapData{
- "phone": []string{"required", "digits:11", "not_exists:users,phone"},
- "verify_code": []string{"required", "digits:6"},
- "name": []string{"required", "alpha_num", "between:3,20", "not_exists:users,name"},
- "password": []string{"required", "min:6"},
- "password_confirm": []string{"required"},
- }
- // 自定义错误信息
- messages := govalidator.MapData{
- "phone": []string{
- "required:手机号不能为空",
- "digits:手机号必须是 11 位数字",
- },
- "verify_code": []string{
- "required:验证码不能为空",
- "digits:验证码必须是 6 位数字",
- },
- "name": []string{
- "required:姓名不能为空",
- "alpha_num:姓名格式错误,只允许数字和英文",
- "between:姓名长度需在 3~20 之间",
- },
- "password": []string{
- "required:密码不能为空",
- "min:密码长度需大于 6",
- },
- "password_confirm": []string{
- "required:确认密码框不能为空",
- },
- }
- errs := validate(data, rules, messages)
- // 检查密码和确认密码是否匹配
- _data := data.(*SignupUsingPhoneRequest)
- errs = validators.ValidatePasswordConfirm(_data.Password, _data.PasswordConfirm, errs)
- errs = validators.ValidateVerifyCode(_data.Phone, _data.VerifyCode, errs)
- return errs
- }
- // SignupUsingEmailRequest 用于邮箱注册的请求结构体
- // !该结构体包含了邮箱、验证码、姓名、密码和确认密码等字段
- type SignupUsingEmailRequest struct {
- Email string `json:"email,omitempty" valid:"email"`
- VerifyCode string `json:"verify_code,omitempty" valid:"verify_code"`
- Name string `valid:"name" json:"name"`
- Password string `valid:"password" json:"password,omitempty"`
- PasswordConfirm string `valid:"password_confirm" json:"password_confirm,omitempty"`
- }
- // SignupUsingEmail 验证邮箱注册表单
- func SignupUsingEmail(data any, c *gin.Context) map[string][]string {
- rules := govalidator.MapData{
- "email": []string{"required", "min:4", "max:30", "email", "not_exists:users,email"}, // 邮箱验证规则
- "verify_code": []string{"required", "digits:6"}, // 验证码验证规则
- "name": []string{"required", "alpha_num", "between:3,20", "not_exists:users,name"}, // 姓名验证规则
- "password": []string{"required", "min:6"}, // 密码验证规则
- "password_confirm": []string{"required"}, // 确认密码验证规则
- }
- // 自定义错误信息
- messages := govalidator.MapData{
- "email": []string{
- "required:Email 不能为空",
- "min:Email 长度需大于 4",
- "max:Email 长度需小于 30",
- "email:Email 格式不正确,请提供有效的邮箱地址",
- "not_exists:邮箱已被注册",
- },
- "verify_code": []string{
- "required:验证码不能为空",
- "digits:验证码必须是 6 位数字",
- },
- "name": []string{
- "required:姓名不能为空",
- "alpha_num:姓名格式错误,只允许数字和英文",
- "between:姓名长度需在 3~20 之间",
- },
- "password": []string{
- "required:密码不能为空",
- "min:密码长度需大于 6",
- },
- "password_confirm": []string{
- "required:确认密码框不能为空",
- },
- }
- errs := validate(data, rules, messages)
- // 检查密码和确认密码是否匹配
- _data := data.(*SignupUsingEmailRequest)
- errs = validators.ValidatePasswordConfirm(_data.Password, _data.PasswordConfirm, errs)
- errs = validators.ValidateVerifyCode(_data.Email, _data.VerifyCode, errs)
- return errs
- }
|