109 lines
2.6 KiB
Go
109 lines
2.6 KiB
Go
package model
|
||
|
||
import (
|
||
"regexp"
|
||
"strings"
|
||
)
|
||
|
||
const (
|
||
//UserTypeUp up主
|
||
UserTypeUp = int8(1)
|
||
//UserTypeBili b站用户
|
||
UserTypeBili = int8(2)
|
||
//UserTypeNew 新注册用户
|
||
UserTypeNew = int8(3)
|
||
//DegreeUncomp 未完成状态
|
||
DegreeUncomp = int8(0)
|
||
//DegreeComp 完成状态
|
||
DegreeComp = int8(1)
|
||
//SexMan 男
|
||
SexMan = int8(1)
|
||
//SexWoman 女
|
||
SexWoman = int8(2)
|
||
//SexAnimal 不明生物
|
||
SexAnimal = int8(0)
|
||
)
|
||
|
||
// UserListType 用于指定列表类型
|
||
type UserListType int8
|
||
|
||
// UserListType的列表类型
|
||
const (
|
||
FollowListType UserListType = 1
|
||
FanListType UserListType = 2
|
||
BlackListType UserListType = 4
|
||
|
||
//ForbiddenStatus .
|
||
ForbiddenStatus = 1
|
||
//NormalStatus .
|
||
NormalStatus = 0
|
||
)
|
||
|
||
const (
|
||
// SpaceListLen 空间长度
|
||
SpaceListLen = 20
|
||
// BatchUserLen 批量请求用户信息时最大数量
|
||
BatchUserLen = 50
|
||
// MaxBlacklistLen 黑名单最大长度
|
||
MaxBlacklistLen = 200
|
||
// MaxFollowListLen 关注最大数
|
||
MaxFollowListLen = 1000
|
||
)
|
||
|
||
// UserCard 主站返回的用户信息
|
||
type UserCard struct {
|
||
MID int64 `json:"mid"`
|
||
Name string `json:"name"`
|
||
Uname string `json:"uname"` // TODO: to delete
|
||
Sex string `json:"sex"`
|
||
Rank int32 `json:"rank"`
|
||
Face string `json:"face"`
|
||
Sign string `json:"sign"`
|
||
Level int32 `json:"level"`
|
||
VIPInfo VIPInfo `json:"vip_info"`
|
||
}
|
||
|
||
// UserInfoConfig 用于请求UserInfo的时候携带的参数
|
||
type UserInfoConfig struct {
|
||
//needBase bool // 必须基于UserBase信息
|
||
NeedDesc bool // 注意:desc和region_name一起,可能被降级,因为用户统计信息被认为是不重要信息
|
||
NeedStatistic bool // 注意:可能被降级,因为用户统计信息被认为是不重要信息
|
||
NeedFollowState bool // 注意:可能被降级,因为关注关系信息被认为是不重要信息
|
||
}
|
||
|
||
//UpUserInfoRes account服务返回信息
|
||
type UpUserInfoRes struct {
|
||
MID int64 `json:"mid"`
|
||
Name string `json:"name"`
|
||
Sex string `json:"sex"`
|
||
Face string `json:"face"`
|
||
Sign string `json:"sign"`
|
||
Rank int64 `json:"rank"`
|
||
}
|
||
|
||
//VIPInfo .
|
||
type VIPInfo struct {
|
||
Type int32 `json:"type"`
|
||
Status int32 `json:"status"`
|
||
DueDate int64 `json:"due_date"`
|
||
}
|
||
|
||
// CheckUnameSpecial 验证是否含有特殊字符
|
||
func CheckUnameSpecial(uname string) (matched bool) {
|
||
matched, _ = regexp.MatchString("^[A-Za-z0-9\uAC00-\uD788\u3041-\u309E\u30A1-\u30FE\u3131-\u3163\u4E00-\u9FA5\uF92C-\uFA29_-]{1,}$", uname)
|
||
return
|
||
}
|
||
|
||
//CheckUnameLength 验证长度
|
||
func CheckUnameLength(uname string) (matched bool) {
|
||
lu := strings.Count(uname, "") - 1
|
||
if lu < 3 || lu > 16 {
|
||
return false
|
||
}
|
||
bt := []byte(uname)
|
||
if len(bt) < 3 || len(bt) > 30 {
|
||
return false
|
||
}
|
||
return true
|
||
}
|