package model import ( "time" "github.com/flipped-aurora/gin-vue-admin/server/global" ) // MpUser 微信公众号粉丝表 (增加用户关联字段) type MpUser 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:微信开放平台统一标识"` UserID *uint `json:"userId" gorm:"index;comment:关联系统用户ID"` Nickname *string `json:"nickname" gorm:"type:varchar(50);comment:用户昵称"` HeadImageURL *string `json:"headImageUrl" gorm:"type:varchar(1024);comment:用户头像"` SubscribeStatus int `json:"subscribeStatus" gorm:"not null;index;comment:关注状态 0未关注 1已关注"` SubscribeTime *time.Time `json:"subscribeTime" gorm:"index;comment:关注时间"` UnsubscribeTime *time.Time `json:"unsubscribeTime" gorm:"comment:取消关注时间"` Language *string `json:"language" gorm:"type:varchar(30);comment:用户语言"` 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:用户城市"` Remark *string `json:"remark" gorm:"type:varchar(255);comment:备注"` TagIDs *string `json:"tagIds" gorm:"type:varchar(255);comment:标签编号数组"` } // TableName 指定表名 func (MpUser) TableName() string { return "mp_user" } // IsSubscribed 检查是否已关注 func (m *MpUser) IsSubscribed() bool { return m.SubscribeStatus == 1 } // Subscribe 关注操作 func (m *MpUser) Subscribe() { m.SubscribeStatus = 1 now := time.Now() m.SubscribeTime = &now m.UnsubscribeTime = nil } // Unsubscribe 取消关注操作 func (m *MpUser) Unsubscribe() { m.SubscribeStatus = 0 now := time.Now() m.UnsubscribeTime = &now } // IsLinkedToSystemUser 检查是否已关联系统用户 func (m *MpUser) IsLinkedToSystemUser() bool { return m.UserID != nil && *m.UserID > 0 } // HasUnionID 检查是否有 UnionID func (m *MpUser) HasUnionID() bool { return m.UnionID != nil && *m.UnionID != "" }