package model import ( "encoding/json" "gorm.io/gorm" ) // UserRelations 好友关系表 type UserRelations struct { gorm.Model UserID string `gorm:"column:user_id;type:varchar(32);not null;index:idx_user_friend,unique;comment:用户id"` FriendList json.RawMessage `gorm:"column:friend_list;type:json;comment:'好友列表'"` FriendCount int64 `gorm:"column:friend_count;type:int;default:0;comment:好友数量"` } type Friend struct { FriendID string `json:"friend_id"` Remark string `json:"remark"` // 好友备注 CreateTime int64 `json:"create_time"` // 创建时间 } func (u *UserRelations) TableName() string { return "user_relations" } // FriendApplicationStatus 好友申请状态 type FriendApplicationStatus int const ( ApplicationPending FriendApplicationStatus = iota // 0-待处理 ApplicationAccepted // 1-已接受 ApplicationRejected //已拒绝 RelationshipBreakdown //删除 ) // FriendApplication 好友申请表 type FriendRelationship struct { gorm.Model ApplicantID string `gorm:"column:applicant_id;type:varchar(32);not null;index:idx_applicant_target,unique;comment:申请人ID"` // 发起申请者ID TargetUserID string `gorm:"column:target_user_id;type:varchar(32);not null;index:idx_applicant_target,unique;comment:目标用户ID"` // 被申请用户ID ApplicationMessage string `gorm:"column:application_message;type:varchar(255);comment:申请留言"` // 申请留言 Status FriendApplicationStatus `gorm:"column:status;type:int;not null;default:0;comment:申请状态(0-待处理,1-已接受,2-已拒绝.3-关系破裂)"` // 申请状态 } // TableName 指定表名 func (f *FriendRelationship) TableName() string { return "friend_relationship" } // IsValid 检查状态是否有效 func (s FriendApplicationStatus) IsValid() bool { return s >= ApplicationPending && s <= RelationshipBreakdown }