Documentation ¶
Index ¶
- Constants
- Variables
- type BaseModel
- type BasicResp
- type BxModel
- type Circle
- type CircleImage
- type Contact
- type ContactGroup
- type ContactLinks
- type ContactRelation
- type GenderType
- type Generator
- func (r *Generator) Encode(s string) (ret string)
- func (r *Generator) IsRandomEmail(email string) bool
- func (r *Generator) IsRandomMobile(mobile string) bool
- func (r *Generator) NewPassword() string
- func (r *Generator) NewRandomEmail() string
- func (r *Generator) NewRandomMobile() string
- func (r *Generator) NewRandomString(length int) string
- func (r *Generator) NewUniqueId(src string, length int) string
- func (r *Generator) PasswordMatched(testPwd, pwdHashInDB string) (matched bool)
- type GivenName
- type Identity
- type Language
- type Location
- type NormalUser
- type Role
- type User
- func (r *User) AfterUpdate(scope *gorm.Scope)
- func (r *User) Age() int32
- func (r *User) BeforeCreate()
- func (r *User) BeforeInsert()
- func (r *User) DisplayName() (ret string)
- func (r *User) IsAppBot() bool
- func (r *User) IsBot() bool
- func (r *User) IsFilterBot() bool
- func (r *User) IsHookBot() bool
- func (r *User) IsIoTDevice() bool
- func (r *User) IsNormal() bool
- func (r *User) IsOrgBot() bool
- func (r *User) IsPasswordMatched(testPwd string) bool
- func (r *User) IsRandomEmail() bool
- func (r *User) IsRandomLoginName() bool
- func (r *User) IsRandomMobile() bool
- func (r *User) IsSpecial() bool
- func (r *User) IsTopicBot() bool
- func (r *User) NewEncodePwd()
- func (r *User) NewUniqueId()
- type UserDevice
- type UserRole
Constants ¶
View Source
const ( SexFemale = iota SexMale SexViolate SexUnspecified = -1 StatusStandardValid = 1 StatusStandardInvalid = 0 StatusMaskValid = 1 StatusMaskBlocked = 0x00008000 RoleGuest = "guest" RoleUser = "user" RoleAdvanced = "adv" RolePowered = "power" RoleVIP = "vip" RoleAdmin = "admin" RoleDeveloper = "developer" RoleImUser = "im.c.user" RoleImAdmin = "im.admin" RoleCMSUser = "cms.user" RoleCMSPoster = "cms.poster" RoleCMSEditor = "cms.editor" RoleCMSAdmin = "cms.admin" BackendAdminModulo = 100 BackendAdminRemainder = 99 UniqueIdLength = 24 // System Robot 是一个特殊用户:系统机器人 // SR 总是任一用户的好友,它无需出现在用户的好友列表显示中,也无需被存储一条关系记录。 // SR 总是任一会话中的成员。 // SR 总是任一用户的任一联系人群组中的成员。 // 因此: // - 一个用户总是能够与一个虚拟账户进行对话交互,通过一个会话或空白的会话、通过一个群组中的群发。 SystemBotId = 25 SystemBotLoginName = "sys-robot" SystemBotUnique = "BP.RPJqFachbQzrBTK//LwVS" // Topic 中的全部 Members AllMembers = 0 // 0:normal-user, 1: iot-device, 2: robot UserTypeNormal = 0 UserTypeSpecial = 1 UserTypeSpecialMask = 1 UserTypeIoTMask = 2 UserTypeBotMask = 4 UserTypeOrgBotMask = 8 UserTypeTopicBotMask = 16 UserTypeAppBotMask = 32 UserTypeHookBotMask = 64 UserTypeFilterBotMask = 128 DefaultVersion = "β" DefaultLocale = "zh_CN" DefaultLanguage = "zh-cn" DefaultTimezone = "+0800" UTCTimezone = "+0000" DefaultChannel = "cms" DefaultNilTimeNano = -6795364578871345152 // =DefaultNilTime )
View Source
const ( CGUnsorted = "Unsorted" CGHome = "Home" CGOffice = "Office" CGWork = "Work" CGFriends = "Friends" CGMates = "Mates" )
Variables ¶
View Source
var DefaultGenerator = &Generator{}
View Source
var (
DefaultNilTime time.Time
)
Functions ¶
This section is empty.
Types ¶
type BaseModel ¶
type BaseModel struct { Id uint64 `gorm:"primary_key" xorm:"pk autoincr"` CreatedAt time.Time `gorm:"type:timestamp(6)" xorm:"created"` UpdatedAt time.Time `gorm:"type:timestamp(6)" xorm:"updated"` DeletedAt *time.Time `gorm:"type:timestamp(6)" xorm:"deleted" sql:"index" json:"-"` // `sql:"index"` Limit int `gorm:"-" xorm:"-" json:"-"` Offset int `gorm:"-" xorm:"-" json:"-"` SortBy string `gorm:"-" xorm:"-" json:"-"` }
BaseModel == gorm.Model
type BxModel ¶
type BxModel struct { Id uint64 `gorm:"primary_key" xorm:"pk autoincr"` CreatedAt time.Time `gorm:"type:timestamp(6)" xorm:"created"` UpdatedAt time.Time `gorm:"type:timestamp(6)" xorm:"updated"` }
BxModel == gorm.Model - DeletedAt
type Circle ¶
type Circle struct { gorm.Model Pid uint64 `gorm:"not null;default:0" xorm:"bigint notnull default 0"` UserId uint64 `gorm:"not null;default:0" xorm:"bigint notnull default 0"` Header string `gorm:"null;type:varchar(128)" xorm:"varchar(128) null"` Title string `gorm:"null;type:varchar(128)" xorm:"varchar(128) null"` Content string `gorm:"null;type:text" xorm:"text null"` HeadUrl string `gorm:"null;type:text" xorm:"text null"` Remarks string `gorm:"null;type:text" xorm:"text null"` }
type CircleImage ¶
type CircleImage struct { BaseModel CircleId uint64 `gorm:"not null;default:0;column:cid" xorm:"bigint notnull default 0 'cid'"` UserId uint64 `gorm:"not null;default:0;column:uid" xorm:"bigint notnull default 0 'uid'"` BaseName string `gorm:"null;type:text" xorm:"text null"` Mime string `gorm:"null;type:text" xorm:"text null"` Size int64 `gorm:"not null;default:0" xorm:"bigint notnull default 0"` LocalPath string `gorm:"null;type:text" xorm:"text null"` Url string `gorm:"null;type:text" xorm:"text null"` }
func (CircleImage) TableName ¶
func (CircleImage) TableName() string
type Contact ¶
type Contact struct { Id uint64 `gorm:"primary_key" xorm:"pk autoincr"` Uid uint64 `xorm:"bigint null index 'uid'"` // linked user id Nickname string `xorm:"varchar(64) null"` FullName string `xorm:"varchar(64) null"` Title string `xorm:"varchar(64) null 'title'"` // OrgName string `xorm:"varchar(128) null"` // Avatar string `xorm:"text null"` // Tags string `xorm:"text null"` // Signature string `xorm:"text null"` // Slogan string `xorm:"text null"` // Type int32 `xorm:"int default 0"` // 0:normal-user, 1: iot-device, 2: robot Tel string `xorm:"varchar(64) null"` TelFor string `xorm:"varchar(16) null"` Email string `xorm:"varchar(64) null"` EmailFor string `xorm:"varchar(16) null"` Tel1 string `xorm:"varchar(64) null"` Tel1For string `xorm:"varchar(16) null"` Email1 string `xorm:"varchar(64) null"` Email1For string `xorm:"varchar(16) null"` Tel2 string `xorm:"varchar(64) null"` Tel2For string `xorm:"varchar(16) null"` Email2 string `xorm:"varchar(64) null"` Email2For string `xorm:"varchar(16) null"` FromSrc string `xorm:"varchar(64) null"` // 通过手机通讯录、通过搜索方式添加的联系人 FromRemarks string `xorm:"text null"` // // Avatar string `xorm:"text"` // avatar // Gender int16 `xorm:"smallint null default -1"` // gender: 1=male, 0=female, 2=violated, -1=not specified // Birthday string `xorm:"varchar(32) null"` // valid formats: yyyy-MM-dd, yyyy, yyyy-MM // Country string `xorm:"varchar(64) null"` // // State string `xorm:"varchar(64) null"` // // City string `xorm:"varchar(64) null"` // // Lang string `xorm:"varchar(64) null default 'zh-cn'"` // user's primary language // Tz string `xorm:"varchar(64) null default '+00:00'"` // user's primary TimeZone // GivenName string `xorm:"varchar(64) null"` // Given Name // GivenMobile string `xorm:"varchar(64) null"` // Qualified Cell Number // GivenSn string `xorm:"varchar(64) null"` // social number, idcard number, after authenticated CreatedAt time.Time `xorm:"created"` // `xorm:"timestamp(6)"` // `xorm:"created"` UpdatedAt time.Time `xorm:"updated"` // `xorm:"timestamp(6)"` // `xorm:"updated"` DeletedAt time.Time `xorm:"deleted"` // `xorm:"datetime(6)"` // `xorm:"deleted"` Remarks string `xorm:"text null"` // ImportRemarks string `xorm:"text null"` // }
Contact 一个 User 的附加信息,其人的联系人属性
type ContactGroup ¶
type ContactGroup struct { Id uint64 `gorm:"primary_key" xorm:"pk autoincr"` UidOwner uint64 `xorm:"bigint not null default 0 index"` // 属于给定用户 Name string `xorm:"varchar(64) null"` // 分组名称: Unsorted/Home/Work/Office/Friends/Mates 为预置名称,注意显示时自行转换为用户语言 CreatedAt time.Time `xorm:"created"` // `xorm:"timestamp(6)"` // `xorm:"created"` UpdatedAt time.Time `xorm:"updated"` // `xorm:"timestamp(6)"` // `xorm:"updated"` DeletedAt time.Time `xorm:"deleted"` // `xorm:"datetime(6)"` // `xorm:"deleted"` }
type ContactLinks ¶
type ContactLinks struct { // Id int64 Uid uint64 `xorm:"bigint pk"` // 属于给定用户 LinkId uint64 `xorm:"bigint pk"` // 链接标识 ContactId uint64 `xorm:"bigint pk"` // 被链接的联系人 }
多个联系人可以被一个 linkId 链接在一起,相当于联系人合并效果。 用户也可以通过将两个联系人硬合并为一条联系人记录。 硬合并:如果多个联系人有多个 linkedUid 指向,则合并不应该被继续。此时交给重叠用户模块去处理。 注意:硬合并时不使用DeleteAt软删除方式。
type ContactRelation ¶
type ContactRelation struct { Gid uint64 `xorm:"bigint pk notnull"` // user's contact group id // 联系人分组 Cid uint64 `xorm:"bigint pk notnull"` // contact id // 联系人 UidOwner uint64 `xorm:"bigint not null default 0 index"` // 等同于 ContactGroup.Uid // 属于给定用户 (冗余) RelationShip int `xorm:"int default 0"` // b0: normal/xx; b1: spec; b7: blacklist; ... // 关系:0-标准, 1-特别关心,127-黑名单 RemarkName string `xorm:"varchar(64) null"` RemarkTitle string `xorm:"varchar(64) null"` RemarkOrgName string `xorm:"varchar(128) null"` RemarkMobile string `xorm:"varchar(64) null"` RemarkEmail string `xorm:"varchar(64) null"` RemarkAvatar string `xorm:"text null"` RemarkTags string `xorm:"text null"` Remarks string `xorm:"text null"` CreatedAt time.Time `xorm:"created"` // `xorm:"timestamp(6)"` // `xorm:"created"` UpdatedAt time.Time `xorm:"updated"` // `xorm:"timestamp(6)"` // `xorm:"updated"` DeletedAt time.Time `xorm:"deleted"` // `xorm:"datetime(6)"` // `xorm:"deleted"` }
type GenderType ¶
type GenderType int16
const ( GenderFemale GenderType = 0 GenderMale GenderType = 1 GenderViolated GenderType = 2 GenderUnspecified GenderType = -1 )
func (GenderType) Parse ¶
func (gt GenderType) Parse(gender string) GenderType
func (GenderType) String ¶
func (gt GenderType) String() string
type Generator ¶
type Generator struct { }
func (*Generator) IsRandomEmail ¶
func (*Generator) IsRandomMobile ¶
func (*Generator) NewPassword ¶
func (*Generator) NewRandomEmail ¶
func (*Generator) NewRandomMobile ¶
func (*Generator) NewRandomString ¶
func (*Generator) PasswordMatched ¶
type GivenName ¶
type GivenName struct { Generator `gorm:"-" xorm:"-"` BaseModel UserID uint64 NameTitle *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null 'name_title'"` // title NameFirst *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null 'name_first'"` // first-name NameMid *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null 'name_mid'"` // mid-name NameLast *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null 'name_last'"` // last-name GivenName *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // fullname: Given Name GivenMobile *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // Qualified Cell Number Description *string `gorm:"null;type:text" xorm:"text null"` Remarks *string `gorm:"null;type:text" xorm:"text null"` Identities []Identity `gorm:"many2many:given_name_identities;"` }
type Language ¶
type Language struct { BaseModel Name string `gorm:"not null;type:varchar(64);unique_index" xorm:"varchar(64) not null"` // }
db.Model(&user).Related(&languages, "Languages")
//// SELECT * FROM "languages" INNER JOIN "user_languages" ON "user_languages"."language_id" = "languages"."id" WHERE "user_languages"."user_id" = 111
type Location ¶
type Location struct { Generator `gorm:"-" xorm:"-"` BaseModel Country *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // State *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // City *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // Street *string `gorm:"null;type:varchar(128)" xorm:"varchar(128) null"` // PostCode *string `gorm:"null;type:varchar(32)" xorm:"varchar(32) null"` // Latitude float32 `gorm:"not null;default:0"` // Longitude float32 `gorm:"not null;default:0"` // TzOffset int `gorm:"not null;default:0""` TzDescription *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // Remarks *string `gorm:"null;type:text" xorm:"text null"` Title *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // Description *string `gorm:"null;type:text" xorm:"text null"` }
type NormalUser ¶
type NormalUser struct { *User Password bool `json:",omitempty"` Roles bool `json:",omitempty"` // Limit bool `json:",omitempty"` // Offset bool `json:",omitempty"` // SortBy bool `json:",omitempty"` Status bool `json:",omitempty"` Salt bool `json:",omitempty"` Ip bool `json:",omitempty"` PlatId bool `json:",omitempty"` UserId bool `json:",omitempty"` Openid bool `json:",omitempty"` Unionid bool `json:",omitempty"` Blocked bool `json:",omitempty"` Forbidden bool `json:",omitempty"` ImportRemarks bool `json:",omitempty"` Privilege bool `json:",omitempty"` JsonProfile bool `json:",omitempty"` }
type User ¶
type User struct { Generator `gorm:"-" xorm:"-"` BaseModel Roles []string `gorm:"-" xorm:"-" json:"-"` Token string `gorm:"-" xorm:"-"` LoginName string `gorm:"type:varchar(64);default:'';unique_index" xorm:"varchar(64) not null"` Cell string `gorm:"type:varchar(64);default:'';unique_index" xorm:"varchar(64) not null"` Email string `gorm:"type:varchar(64);default:'';unique_index" xorm:"varchar(64) not null"` Nickname *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` FullName *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null 'full_name'"` Avatar *string `gorm:"null;type:text" xorm:"text"` AvatarMedium *string `gorm:"null;type:text" xorm:"text"` AvatarLarge *string `gorm:"null;type:text" xorm:"text"` Gender GenderType `gorm:"not null;default:0" xorm:"smallint null default -1"` // gender: 1=male, 0=female, 2=violated, -1=not specified IdentType *string `gorm:"null;type:varchar(16)" xorm:"varchar(16) null 'name_last'"` IdentNumber *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // Birthday *string `gorm:"null;type:varchar(32)" xorm:"varchar(32) null"` // valid formats: yyyy-MM-dd, yyyy, yyyy-MM Phone *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null 'name_last'"` Nationalities *string `gorm:"null;type:varchar(16)" xorm:"varchar(16) null"` // LocationId uint64 `gorm:"not null;default:0" xorm:"bigint not null default 0"` // the exact location about this user. Country *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // country,state,city,street for fast displaying State *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` City *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` Street *string `gorm:"null;type:varchar(128)" xorm:"varchar(128) null"` Lang string `gorm:"not null;type:varchar(64);default:'zh-cn'" xorm:"varchar(64) null default 'zh-cn'"` // user's primary language Tz string `gorm:"not null;type:varchar(64);default:'+0000'" xorm:"varchar(64) null default '+0000'"` // user's primary TimeZone StatusLine *string `gorm:"null;type:varchar(32)" xorm:"varchar(64) null"` TitleLine *string `gorm:"null;type:varchar(32)" xorm:"varchar(64) null"` SloganLine *string `gorm:"null;type:varchar(80)" xorm:"varchar(64) null"` DescLine *string `gorm:"null;type:varchar(80)" xorm:"varchar(64) null"` Type int `gorm:"not null;default:0" xorm:"int not null default 0"` // OLD: 用户类型(人,设备,机器人...) // 0:normal-user, 1: iot-device, 2: robot Status int `gorm:"not null;default:1" xorm:"int not null default 1"` // // bit0: valid(1), invalid(0); bit3: forbidden; bit4: blocked/locked; bit 5: waiting invoke Password string `gorm:"not null;type:varchar(64)" xorm:"varchar(64) null"` Salt string `gorm:"not null;type:varchar(64)" xorm:"varchar(64) null"` // Ip *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // UniqueId string `gorm:"not null;type:varchar(64)" xorm:"varchar(64) null"` // internal unique id about this user Channel string `gorm:"not null;type:varchar(64)" xorm:"varchar(64) null"` // channel: cms, im, webui, android, ios, mswin, linux, macos, ... PlatId uint64 `gorm:"not null;default:0" xorm:"bigint not null default 0"` // platform-id: UserId uint64 `gorm:"not null;default:0" xorm:"bigint not null default 0"` // 3rd-party platform user id. never used. Openid *string `gorm:"null;type:varchar(128)" xorm:"varchar(128) null"` // wechat Unionid *string `gorm:"null;type:varchar(128)" xorm:"varchar(128) null"` // alipay Blocked bool `gorm:"not null;default:0" xorm:"tinyint(1) not null default 0"` // NEVER USED. blocked/locked, == status==-2 Forbidden bool `gorm:"not null;default:0" xorm:"tinyint(1) not null default 0"` // NEVER USED. forbidden, == status==-1 Remarks *string `gorm:"null;type:text" xorm:"text null"` ImportRemarks *string `gorm:"null;type:text" xorm:"text null"` InvokeStatus bool `gorm:"not null;default:0" xorm:"tinyint(1) not null default 0"` // 以下备用 // invoked grants by 3rd-party login module: yes(1) or no(0) Privilege *string `gorm:"null;type:varchar(64)" xorm:"varchar(64) null"` // 以下备用 // comma splitted roles, from 3rd-party module JsonProfile *string `gorm:"null;type:text" xorm:"text null"` // 以下备用 Languages []Language `gorm:"many2many:user_languages;"` Locations []Location `gorm:"many2many:user_locations;"` Identities []Identity `gorm:"many2many:user_identities;"` GivenName GivenName `gorm:"one2many:user_given_name;"` }
func (*User) AfterUpdate ¶
func (*User) BeforeCreate ¶
func (r *User) BeforeCreate()
func (*User) BeforeInsert ¶
func (r *User) BeforeInsert()
func (*User) DisplayName ¶
func (*User) IsFilterBot ¶
func (*User) IsIoTDevice ¶
func (*User) IsPasswordMatched ¶
func (*User) IsRandomEmail ¶
func (*User) IsRandomLoginName ¶
func (*User) IsRandomMobile ¶
func (*User) IsTopicBot ¶
func (*User) NewEncodePwd ¶
func (r *User) NewEncodePwd()
func (*User) NewUniqueId ¶
func (r *User) NewUniqueId()
type UserDevice ¶
type UserDevice struct { Id int64 Uid int64 `xorm:"bigint index"` SystemOs string `xorm:"varchar(64) null"` SystemVersion string `xorm:"varchar(64) null"` Model string `xorm:"varchar(64) null"` Nickname string `xorm:"varchar(64) null"` Unique string `xorm:"varchar(128) not null unique 'uniq'"` CreatedAt time.Time `xorm:"created"` // `xorm:"timestamp(6)"` // `xorm:"created"` UpdatedAt time.Time `xorm:"updated"` // `xorm:"timestamp(6)"` // `xorm:"updated"` DeletedAt time.Time `xorm:"deleted"` // `xorm:"datetime(6)"` // `xorm:"deleted"` Remarks string `xorm:"text null"` ImportRemarks string `xorm:"text null"` }
Click to show internal directories.
Click to hide internal directories.