128 lines
3.0 KiB
Go
128 lines
3.0 KiB
Go
package model
|
||
|
||
import (
|
||
"time"
|
||
|
||
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
||
"github.com/google/uuid"
|
||
)
|
||
|
||
// MiniUser 微信小程序用户表
|
||
type MiniUser struct {
|
||
global.GVA_MODEL
|
||
OpenID string `json:"openid" gorm:"type:varchar(100);not null;uniqueIndex;comment:用户openid"`
|
||
UnionID *string `json:"unionid" gorm:"type:varchar(64);index;comment:微信开放平台统一标识"`
|
||
SessionKey *string `json:"sessionKey" gorm:"type:varchar(255);comment:会话密钥"`
|
||
Nickname *string `json:"nickname" gorm:"type:varchar(50);comment:用户昵称"`
|
||
AvatarURL *string `json:"avatarUrl" gorm:"type:varchar(1024);comment:用户头像"`
|
||
Gender *int `json:"gender" gorm:"comment:用户性别 0未知 1男 2女"`
|
||
Country *string `json:"country" gorm:"type:varchar(30);comment:用户国家"`
|
||
Province *string `json:"province" gorm:"type:varchar(30);comment:用户省份"`
|
||
City *string `json:"city" gorm:"type:varchar(30);comment:用户城市"`
|
||
Language *string `json:"language" gorm:"type:varchar(30);comment:用户语言"`
|
||
Phone *string `json:"phone" gorm:"type:varchar(20);index;comment:手机号"`
|
||
LastLoginTime *time.Time `json:"lastLoginTime" gorm:"comment:最后登录时间"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (MiniUser) TableName() string {
|
||
return "mini_users"
|
||
}
|
||
|
||
// 实现AppUserLogin接口
|
||
func (u *MiniUser) GetUUID() uuid.UUID {
|
||
// 将uint ID转换为UUID,这里使用一个简单的方法
|
||
// 在实际项目中,你可能需要为用户添加一个专门的UUID字段
|
||
return uuid.New()
|
||
}
|
||
|
||
func (u *MiniUser) GetUserId() uint {
|
||
return u.ID
|
||
}
|
||
|
||
func (u *MiniUser) GetOpenID() string {
|
||
return u.OpenID
|
||
}
|
||
|
||
func (u *MiniUser) GetUnionID() string {
|
||
if u.UnionID != nil {
|
||
return *u.UnionID
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (u *MiniUser) GetNickname() string {
|
||
if u.Nickname != nil {
|
||
return *u.Nickname
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (u *MiniUser) GetAvatar() string {
|
||
if u.AvatarURL != nil {
|
||
return *u.AvatarURL
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (u *MiniUser) GetPhone() string {
|
||
if u.Phone != nil {
|
||
return *u.Phone
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (u *MiniUser) GetGender() int {
|
||
if u.Gender != nil {
|
||
return *u.Gender
|
||
}
|
||
return 0
|
||
}
|
||
|
||
func (u *MiniUser) GetCity() string {
|
||
if u.City != nil {
|
||
return *u.City
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (u *MiniUser) GetProvince() string {
|
||
if u.Province != nil {
|
||
return *u.Province
|
||
}
|
||
return ""
|
||
}
|
||
|
||
func (u *MiniUser) GetCountry() string {
|
||
if u.Country != nil {
|
||
return *u.Country
|
||
}
|
||
return ""
|
||
}
|
||
|
||
// HasUnionID 检查是否有 UnionID
|
||
func (w *MiniUser) HasUnionID() bool {
|
||
return w.UnionID != nil && *w.UnionID != ""
|
||
}
|
||
|
||
// HasPhone 检查是否已绑定手机号
|
||
func (w *MiniUser) HasPhone() bool {
|
||
return w.Phone != nil && *w.Phone != ""
|
||
}
|
||
|
||
// GetDisplayName 获取显示名称
|
||
func (w *MiniUser) GetDisplayName() string {
|
||
if w.Nickname != nil && *w.Nickname != "" {
|
||
return *w.Nickname
|
||
}
|
||
return "微信用户"
|
||
}
|
||
|
||
// GetAvatarURL 获取头像URL
|
||
func (w *MiniUser) GetAvatarURL() string {
|
||
if w.AvatarURL != nil {
|
||
return *w.AvatarURL
|
||
}
|
||
return ""
|
||
}
|