Files
IUQT/acquaintances/biz/model/user_relations.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
}