user_request.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package requests
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/thedevsaddam/govalidator"
  5. "github.com/runningwater/gohub/pkg/auth"
  6. )
  7. type UserUpdateProfileRequest struct {
  8. Name string `valid:"name" json:"name"`
  9. City string `valid:"city" json:"city"`
  10. Introduction string `valid:"introduction" json:"introduction"`
  11. }
  12. func UserUpdateProfile(data any, c *gin.Context) map[string][]string {
  13. // 查询用户名重复时,过滤当前用户ID
  14. uid := auth.CurrentUID(c)
  15. rules := govalidator.MapData{
  16. "name": []string{"required", "alpha_num", "between:3,20", "not_exists:users,name," + uid},
  17. "city": []string{"min_cn:2", "max_cn:20"},
  18. "introduction": []string{"min_cn:4", "max_cn:240"},
  19. }
  20. messages := govalidator.MapData{
  21. "name": []string{
  22. "required:用户名不能为空",
  23. "alpha_num:用户名格式错误",
  24. "between:3,20:用户名长度需在 3-20 之间",
  25. "not_exists:用户名已存在",
  26. },
  27. "city": []string{
  28. "min_cn:城市长度需至少 2 个字符",
  29. "max_cn:城市长度不能超过 20 个字符",
  30. },
  31. "introduction": []string{
  32. "min_cn:简介长度需至少 4 个字符",
  33. "max_cn:简介长度不能超过 240 个字符",
  34. },
  35. }
  36. return validate(data, rules, messages)
  37. }