54 lines
2.1 KiB
Go
54 lines
2.1 KiB
Go
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
|
|
}
|