topfans/backend/gateway/dto/social_converter.go
2026-04-07 22:29:48 +08:00

154 lines
3.8 KiB
Go

package dto
import (
pbSocial "github.com/topfans/backend/pkg/proto/social"
)
// ConvertFriendRequest 转换好友请求数据
func ConvertFriendRequest(req *pbSocial.FriendRequest) map[string]interface{} {
if req == nil {
return nil
}
result := map[string]interface{}{
"request_id": req.Id,
"from_user_id": req.FromUserId,
"to_user_id": req.ToUserId,
"star_id": req.StarId,
"status": req.Status,
"message": req.Message,
"created_at": req.CreatedAt,
}
// 添加可选字段
if req.ProcessedAt > 0 {
result["processed_at"] = req.ProcessedAt
}
if req.ExpiresAt > 0 {
result["expires_at"] = req.ExpiresAt
}
// 添加发送者信息
if req.FromUserNickname != "" {
result["from_user_nickname"] = req.FromUserNickname
}
if req.FromUserAvatar != "" {
result["from_user_avatar"] = req.FromUserAvatar
}
if req.FromUserFanLevel > 0 {
result["from_user_fan_level"] = req.FromUserFanLevel
}
// 添加接收者信息
if req.ToUserNickname != "" {
result["to_user_nickname"] = req.ToUserNickname
}
if req.ToUserAvatar != "" {
result["to_user_avatar"] = req.ToUserAvatar
}
if req.ToUserFanLevel > 0 {
result["to_user_fan_level"] = req.ToUserFanLevel
}
return result
}
// ConvertFriendship 转换好友关系数据
func ConvertFriendship(friendship *pbSocial.Friendship) map[string]interface{} {
if friendship == nil {
return nil
}
result := map[string]interface{}{
"friend_id": friendship.FriendId,
"star_id": friendship.StarId,
"created_at": friendship.CreatedAt,
}
// 添加可选字段
if friendship.Remark != "" {
result["remark"] = friendship.Remark
}
// 添加好友信息
if friendship.FriendNickname != "" {
result["friend_nickname"] = friendship.FriendNickname
}
if friendship.FriendAvatar != "" {
result["friend_avatar"] = friendship.FriendAvatar
}
if friendship.FriendFanLevel > 0 {
result["friend_fan_level"] = friendship.FriendFanLevel
}
if friendship.FriendSocial > 0 {
result["friend_social"] = friendship.FriendSocial
}
return result
}
// ToUserSearchResultDTO 转换粉丝档案搜索结果数据
func ToUserSearchResultDTO(user *pbSocial.FanProfileSearchResult) map[string]interface{} {
if user == nil {
return nil
}
result := map[string]interface{}{
"fan_profile_id": user.FanProfileId,
"user_id": user.UserId,
"nickname": user.Nickname,
"avatar": user.Avatar,
"fan_level": user.FanLevel,
"relationship_status": user.RelationshipStatus,
"can_send_request": user.CanSendRequest,
}
// 添加冷静期结束时间(仅当状态为 rejected 时)
if user.CooldownEndsAt > 0 {
result["cooldown_ends_at"] = user.CooldownEndsAt
}
return result
}
// ToPagedUsersDTO 转换分页用户列表数据
func ToPagedUsersDTO(users []*pbSocial.PagedUser) []map[string]interface{} {
if users == nil {
return []map[string]interface{}{}
}
result := make([]map[string]interface{}, 0, len(users))
for _, user := range users {
if user != nil {
result = append(result, map[string]interface{}{
"user_id": user.UserId,
"gallery_owner_id": user.GalleryOwnerId,
"nickname": user.Nickname,
"level": user.Level,
"shared_booth_slots_remaining": user.SharedBoothSlotsRemaining,
})
}
}
return result
}
// ToRandomUsersDTO 转换随机用户列表数据
func ToRandomUsersDTO(users []*pbSocial.RandomUser) []map[string]interface{} {
if users == nil {
return []map[string]interface{}{}
}
result := make([]map[string]interface{}, 0, len(users))
for _, user := range users {
if user != nil {
result = append(result, map[string]interface{}{
"user_id": user.UserId,
"nickname": user.Nickname,
})
}
}
return result
}