package dto import ( "with_you/internal/model" ) // ==================== Group 转换 ==================== // GroupToResponse 将Group转换为GroupResponse func GroupToResponse(group *model.Group) *GroupResponse { if group == nil { return nil } return &GroupResponse{ ID: group.ID, Name: group.Name, Avatar: group.Avatar, Description: group.Description, OwnerID: group.OwnerID, MemberCount: group.MemberCount, MaxMembers: group.MaxMembers, JoinType: int(group.JoinType), MuteAll: group.MuteAll, CreatedAt: FormatTime(group.CreatedAt), } } // GroupsToResponse 将Group列表转换为GroupResponse列表 func GroupsToResponse(groups []model.Group) []*GroupResponse { result := make([]*GroupResponse, 0, len(groups)) for i := range groups { result = append(result, GroupToResponse(&groups[i])) } return result } // GroupMemberToResponse 将GroupMember转换为GroupMemberResponse func GroupMemberToResponse(member *model.GroupMember) *GroupMemberResponse { if member == nil { return nil } return &GroupMemberResponse{ ID: member.ID, GroupID: member.GroupID, UserID: member.UserID, Role: member.Role, Nickname: member.Nickname, Muted: member.Muted, JoinTime: FormatTime(member.JoinTime), } } // GroupMemberToResponseWithUser 将GroupMember转换为GroupMemberResponse(包含用户信息) func GroupMemberToResponseWithUser(member *model.GroupMember, user *model.User) *GroupMemberResponse { if member == nil { return nil } resp := GroupMemberToResponse(member) if user != nil { resp.User = ConvertUserToResponse(user) } return resp } // GroupMembersToResponse 将GroupMember列表转换为GroupMemberResponse列表 func GroupMembersToResponse(members []model.GroupMember) []*GroupMemberResponse { result := make([]*GroupMemberResponse, 0, len(members)) for i := range members { result = append(result, GroupMemberToResponse(&members[i])) } return result } // GroupAnnouncementToResponse 将GroupAnnouncement转换为GroupAnnouncementResponse func GroupAnnouncementToResponse(announcement *model.GroupAnnouncement) *GroupAnnouncementResponse { if announcement == nil { return nil } return &GroupAnnouncementResponse{ ID: announcement.ID, GroupID: announcement.GroupID, Content: announcement.Content, AuthorID: announcement.AuthorID, IsPinned: announcement.IsPinned, CreatedAt: FormatTime(announcement.CreatedAt), } } // GroupAnnouncementsToResponse 将GroupAnnouncement列表转换为GroupAnnouncementResponse列表 func GroupAnnouncementsToResponse(announcements []model.GroupAnnouncement) []*GroupAnnouncementResponse { result := make([]*GroupAnnouncementResponse, 0, len(announcements)) for i := range announcements { result = append(result, GroupAnnouncementToResponse(&announcements[i])) } return result } // GroupsToResponseFromPtr 将Group指针切片转换为GroupResponse列表 func GroupsToResponseFromPtr(groups []*model.Group) []*GroupResponse { result := make([]*GroupResponse, 0, len(groups)) for _, group := range groups { result = append(result, GroupToResponse(group)) } return result } // GroupMembersToResponseFromPtr 将GroupMember指针切片转换为GroupMemberResponse列表 func GroupMembersToResponseFromPtr(members []*model.GroupMember) []*GroupMemberResponse { result := make([]*GroupMemberResponse, 0, len(members)) for _, member := range members { result = append(result, GroupMemberToResponse(member)) } return result } // GroupAnnouncementsToResponseFromPtr 将GroupAnnouncement指针切片转换为GroupAnnouncementResponse列表 func GroupAnnouncementsToResponseFromPtr(announcements []*model.GroupAnnouncement) []*GroupAnnouncementResponse { result := make([]*GroupAnnouncementResponse, 0, len(announcements)) for _, announcement := range announcements { result = append(result, GroupAnnouncementToResponse(announcement)) } return result }