package logic import ( "time" "spark-server/internal/module/group/entity" userentity "spark-server/internal/module/user/entity" ) // View is the HTTP/TCP group card. ID is the AUTO_INCREMENT 群号. type View struct { ID int64 `json:"id"` ConversationID int64 `json:"conversation_id"` Name string `json:"name"` Avatar string `json:"avatar"` OwnerID int64 `json:"owner_id"` MutedAll bool `json:"muted_all"` MemberCount int `json:"member_count"` Role int `json:"role"` CreatedAt int64 `json:"created_at"` } type MemberView struct { UID int64 `json:"uid"` SparkID string `json:"spark_id"` Nickname string `json:"nickname"` Avatar string `json:"avatar"` Gender int `json:"gender"` Role int `json:"role"` GroupNickname string `json:"group_nickname"` SpeakMuted bool `json:"speak_muted"` JoinedAt int64 `json:"joined_at"` } type List struct { Items []*View `json:"items"` } type MemberList struct { Items []*MemberView `json:"items"` } func viewOf(g *entity.Group, role int) *View { if g == nil { return nil } return &View{ ID: g.ID, ConversationID: g.ConversationID, Name: g.Name, Avatar: g.Avatar, OwnerID: g.OwnerID, MutedAll: g.MutedAll, MemberCount: g.MemberCount, Role: role, CreatedAt: g.CreatedAtMS, } } func memberViewOf(mem *entity.Member, u *userentity.User) *MemberView { v := &MemberView{} if mem != nil { v.UID = mem.UserID v.Role = mem.Role v.GroupNickname = mem.Nickname v.SpeakMuted = mem.SpeakMuted v.JoinedAt = mem.JoinedAtMS } if u != nil { v.SparkID = u.SparkID v.Nickname = u.Nickname v.Avatar = u.Avatar v.Gender = u.Gender if v.UID == 0 { v.UID = u.ID } } return v } func nowMS() int64 { return time.Now().UnixMilli() }