user.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package model
  2. import (
  3. "regexp"
  4. "strings"
  5. )
  6. const (
  7. //UserTypeUp up主
  8. UserTypeUp = int8(1)
  9. //UserTypeBili b站用户
  10. UserTypeBili = int8(2)
  11. //UserTypeNew 新注册用户
  12. UserTypeNew = int8(3)
  13. //DegreeUncomp 未完成状态
  14. DegreeUncomp = int8(0)
  15. //DegreeComp 完成状态
  16. DegreeComp = int8(1)
  17. //SexMan 男
  18. SexMan = int8(1)
  19. //SexWoman 女
  20. SexWoman = int8(2)
  21. //SexAnimal 不明生物
  22. SexAnimal = int8(0)
  23. )
  24. // UserListType 用于指定列表类型
  25. type UserListType int8
  26. // UserListType的列表类型
  27. const (
  28. FollowListType UserListType = 1
  29. FanListType UserListType = 2
  30. BlackListType UserListType = 4
  31. //ForbiddenStatus .
  32. ForbiddenStatus = 1
  33. //NormalStatus .
  34. NormalStatus = 0
  35. )
  36. const (
  37. // SpaceListLen 空间长度
  38. SpaceListLen = 20
  39. // BatchUserLen 批量请求用户信息时最大数量
  40. BatchUserLen = 50
  41. // MaxBlacklistLen 黑名单最大长度
  42. MaxBlacklistLen = 200
  43. // MaxFollowListLen 关注最大数
  44. MaxFollowListLen = 1000
  45. )
  46. // UserCard 主站返回的用户信息
  47. type UserCard struct {
  48. MID int64 `json:"mid"`
  49. Name string `json:"name"`
  50. Uname string `json:"uname"` // TODO: to delete
  51. Sex string `json:"sex"`
  52. Rank int32 `json:"rank"`
  53. Face string `json:"face"`
  54. Sign string `json:"sign"`
  55. Level int32 `json:"level"`
  56. VIPInfo VIPInfo `json:"vip_info"`
  57. }
  58. // UserInfoConfig 用于请求UserInfo的时候携带的参数
  59. type UserInfoConfig struct {
  60. //needBase bool // 必须基于UserBase信息
  61. NeedDesc bool // 注意:desc和region_name一起,可能被降级,因为用户统计信息被认为是不重要信息
  62. NeedStatistic bool // 注意:可能被降级,因为用户统计信息被认为是不重要信息
  63. NeedFollowState bool // 注意:可能被降级,因为关注关系信息被认为是不重要信息
  64. }
  65. //UpUserInfoRes account服务返回信息
  66. type UpUserInfoRes struct {
  67. MID int64 `json:"mid"`
  68. Name string `json:"name"`
  69. Sex string `json:"sex"`
  70. Face string `json:"face"`
  71. Sign string `json:"sign"`
  72. Rank int64 `json:"rank"`
  73. }
  74. //VIPInfo .
  75. type VIPInfo struct {
  76. Type int32 `json:"type"`
  77. Status int32 `json:"status"`
  78. DueDate int64 `json:"due_date"`
  79. }
  80. // CheckUnameSpecial 验证是否含有特殊字符
  81. func CheckUnameSpecial(uname string) (matched bool) {
  82. matched, _ = regexp.MatchString("^[A-Za-z0-9\uAC00-\uD788\u3041-\u309E\u30A1-\u30FE\u3131-\u3163\u4E00-\u9FA5\uF92C-\uFA29_-]{1,}$", uname)
  83. return
  84. }
  85. //CheckUnameLength 验证长度
  86. func CheckUnameLength(uname string) (matched bool) {
  87. lu := strings.Count(uname, "") - 1
  88. if lu < 3 || lu > 16 {
  89. return false
  90. }
  91. bt := []byte(uname)
  92. if len(bt) < 3 || len(bt) > 30 {
  93. return false
  94. }
  95. return true
  96. }