Files
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

84 lines
2.4 KiB
Go

package searcher
import (
"91porn-server/app/service/walletser"
"91porn-server/common/log"
"91porn-server/models/v/usermod"
)
// UserInfo UserInfo
type UserInfo struct {
UID *uint64 `json:"uid,omitempty"`
Name *string `json:"name,omitempty"`
Age *int `json:"age,omitempty"`
Gender *string `json:"gender,omitempty"` //性别
Portrait *string `json:"portrait,omitempty"` //头像
Region *string `json:"region,omitempty"` //地区
Summary *string `json:"summary,omitempty"` //简介
VipLevel *int `json:"vipLevel,omitempty"` //vip等级
RechargeLevel *int `json:"rechargeLevel" ` //头像显示的vip等级,累计充值决定
SuperUser *bool `json:"superUser"` //大v
ActiveValue *int `json:"activeValue"` //活跃度
OfficialCert *bool `json:"officialCert"` //是否官方认证
}
// UserRes UserRes
type UserRes struct {
UserInfo `bson:",inline"`
HasFollowed *bool `json:"hasFollowed,omitempty"` //已关注
FansCount *int64 `json:"fansCount,omitempty"` //粉丝数
}
// MapToUserResList MapToUserResList
func MapToUserResList(userList []*usermod.User, uid uint64) []UserRes {
uidList := make([]uint64, len(userList))
for i, u := range userList {
uidList[i] = u.UID
}
mLevel, err := walletser.GetUidsRchgLevel(uidList)
if err != nil {
log.Error("GetUidsRchgLevel error", log.E(err))
return []UserRes{}
}
userResList := make([]UserRes, len(userList))
for i, userp := range userList {
age := userp.Age()
level := mLevel[userp.UID].Level
userInfo := UserInfo{
Age: &age,
UID: &userp.UID,
Name: &userp.Name,
Gender: &userp.Gender,
Portrait: &userp.Portrait,
Region: &userp.Region,
Summary: &userp.Summary,
VipLevel: &userp.VipLevel,
SuperUser: &userp.SuperUser,
ActiveValue: &userp.ActiveValue,
OfficialCert: &userp.OfficialCert,
RechargeLevel: &level,
}
userResList[i] = UserRes{
UserInfo: userInfo,
}
}
return userResList
}
// UserResMap UserResMap
func UserResMap(uidList []uint64, uid uint64) (map[uint64]*UserRes, error) {
userList, err := usermod.FindUsersByUID(uidList)
if err != nil {
return nil, err
}
userResList := MapToUserResList(userList, uid)
m := make(map[uint64]*UserRes, len(userList))
for _, res := range userResList {
if res.UID != nil {
_res := res
m[*res.UID] = &_res
}
}
return m, nil
}