package command import ( "fmt" "reflect" "strings" "github.com/beego/beego/v2/core/validation" ) type ResetPasswordCommand struct { // 手机号码 Phone string `cname:"手机号码" json:"phone"` // 密码 Password string `cname:"密码" json:"newPassword"` // 密码 RepeatNewPassword string `cname:"密码" json:"repeatNewPassword" valid:"Required"` // 密码 SmsCodeIdentity string `cname:"密码" json:"smsCodeIdentity"` // 1:smsCodeIdentity 验证码凭证 2:smsCode 验证 SmsCode string `cname:"密码" json:"smsCode"` } func (resetPasswordCommand *ResetPasswordCommand) Valid(validation *validation.Validation) { if len(resetPasswordCommand.Password) == 0 { validation.Error("登录密码不能为空") return } if resetPasswordCommand.Password != resetPasswordCommand.RepeatNewPassword { validation.Error("两次密码输入不一致") return } } func (resetPasswordCommand *ResetPasswordCommand) ValidateCommand() error { valid := validation.Validation{} b, err := valid.Valid(resetPasswordCommand) if err != nil { return err } if !b { elem := reflect.TypeOf(resetPasswordCommand).Elem() for _, validErr := range valid.Errors { field, isExist := elem.FieldByName(validErr.Field) if isExist { return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) } else { return fmt.Errorf(validErr.Message) } } } return nil }