package service import ( "github.com/topfans/backend/pkg/models" pb "github.com/topfans/backend/pkg/proto/user" ) // ModelToProtoUser 转换 User Model 到 Proto func ModelToProtoUser(user *models.User) *pb.User { if user == nil { return nil } pbUser := &pb.User{ Id: user.ID, Mobile: user.Mobile, IsActive: user.IsActive, CreatedAt: user.CreatedAt, } if user.AvatarURL != nil { pbUser.AvatarUrl = *user.AvatarURL } if user.GlobalWalletAddr != nil { pbUser.GlobalWalletAddress = *user.GlobalWalletAddr } return pbUser } // ModelToProtoFanProfile 转换 FanProfile Model 到 Proto func ModelToProtoFanProfile(profile *models.FanProfile) *pb.FanProfile { if profile == nil { return nil } pbProfile := &pb.FanProfile{ Id: profile.ID, UserId: profile.UserID, StarId: profile.StarID, Nickname: profile.Nickname, Level: profile.Level, Times: profile.Times, Social: profile.Social, CoinBalance: profile.CoinBalance, CrystalBalance: profile.CrystalBalance, Tags: []string(profile.Tags), CreatedAt: profile.CreatedAt, // 新增字段 StarbookLimit: profile.StarbookLimit, SlotLimit: profile.SlotLimit, AssetsCount: profile.AssetsCount, } // 头像 if profile.AvatarURL != nil { pbProfile.AvatarUrl = *profile.AvatarURL } // 链地址 if profile.ChainAddress != nil { pbProfile.ChainAddress = *profile.ChainAddress } return pbProfile } // ModelToProtoStar 转换 Star Model 到 Proto func ModelToProtoStar(star *models.Star) *pb.Star { if star == nil { return nil } pbStar := &pb.Star{ StarId: star.StarID, Name: star.Name, IdentityId: star.IdentityID, IsActive: star.IsActive, CreatedAt: star.CreatedAt, } if star.NameEn != nil { pbStar.NameEn = *star.NameEn } if star.PicURL != nil { pbStar.PicUrl = *star.PicURL } if star.Description != nil { pbStar.Description = *star.Description } // 新增 tag 字段 if star.Tag != nil { pbStar.Tag = *star.Tag } return pbStar } // getStringValue 安全获取字符串指针的值 func getStringValue(ptr *string) string { if ptr == nil { return "" } return *ptr }