diff --git a/cv/user_cv/user.go b/cv/user_cv/user.go index ca92a6edf31269fcc826c32f9f11df26f822b2eb..1d535ee2883cadf78e5651180796269c599392d7 100644 --- a/cv/user_cv/user.go +++ b/cv/user_cv/user.go @@ -227,6 +227,87 @@ func GetUserBases(userIds []mysql.ID, myUserId mysql.ID) ([]*CvUserBase, error) return cvUserBases, nil } +// 获取cp另一半基本信息 +func GetUserBaseForCpMap(userIds []mysql.ID) (map[mysql.ID]*CvUserBase, error) { + var res = make(map[mysql.ID]*CvUserBase) + users, err := GetUserBasesForCp(userIds) + if err != nil { + return nil, err + } + for i, v := range users { + if v.Id != nil { + res[*v.Id] = users[i] + } + } + return res, nil +} + +// 批量获取cp另一半基本信息 +func GetUserBasesForCp(userIds []mysql.ID) ([]*CvUserBase, error) { + if len(userIds) == 0 { + return []*CvUserBase{}, nil + } + var users []user_m.User + if err := mysql.Db.Model(&user_m.User{}).Where("id in (?)", userIds).Find(&users).Error; err != nil { + return nil, myerr.WrapErr(err) + } + vips, err := user_m.BatchGetVips(userIds) + if err != nil { + return nil, myerr.WrapErr(err) + } + svips, err := rpc.MGetUserSvip(domain.CreateModelNil(), userIds) + if err != nil { + mylogrus.MyLog.Errorf("MGetUserSvip fail:%v", err) + } + + headwearMap, err := headwear_cv.BatchGetCvHeadwears(userIds) + if err != nil { + return nil, err + } + + nobles, err := noble_m.BatchGetActiveNoble(domain.CreateModelNil(), userIds) + if err != nil { + return nil, err + } + + var cvUserBases []*CvUserBase + for i := 0; i < len(users); i++ { + user := users[i] + invisible := IfLogout(user.LogoutTime) + invisibleAvatar := "" + invisibleNick := user.Code + cvUserBase := &CvUserBase{ + Id: &user.ID, + Avatar: StrNil(IfLogoutStr(invisible, invisibleAvatar, user.Avatar)), + DefaultAvatar: &user.DefaultAvatar, + ExternalId: StrToString(&user.ExternalId), + Nick: StrNil(IfLogoutNick(invisible, invisibleNick, user.Nick)), + Description: StrNil(IfLogoutStr(invisible, "", user.Description)), + Sex: TypeToUint8(&user.Sex), + Country: StrNil(user.Country), + CountryIcon: StrNil(user.CountryIcon), + Code: StrToString(&user.Code), + IsPrettyCode: user.IsPrettyCode(), + IsVip: vips[user.ID] != nil, + Noble: noble_cv.CvNoble{ + Level: nobles[user.ID].Level, + EndTime: nobles[user.ID].EndTime.Unix(), + }, + } + if cvUserBase.Noble.Level <= 0 { + cvUserBase.Noble.EndTime = 0 + } + // + if headwear, flag := headwearMap[user.ID]; flag { + cvUserBase.Headwear = IfLogoutHeadwear(IfLogout(user.LogoutTime), nil, &headwear) + } + cvUserBase.Svip = svips[user.ID] + + cvUserBases = append(cvUserBases, cvUserBase) + } + return cvUserBases, nil +} + func getMedalInfoMap(db *gorm.DB, medals map[uint64][]uint32) (map[uint64][]uint32, map[uint64][]medal_cv.CvMedal, error) { resMedals, err := res_m.MedalGetAllMap(db) if err != nil { diff --git a/domain/service/cp_s/cp.go b/domain/service/cp_s/cp.go index 5a7d890fcbf9a311ca87ac68b36ced0ed82a0536..09a98749d6f8d3741b28a09149707c36523e6728 100644 --- a/domain/service/cp_s/cp.go +++ b/domain/service/cp_s/cp.go @@ -55,7 +55,7 @@ func (s *CpService) GetUserCp(userId uint64, lang string) (*user_cv.CvCp, error) myPrivilegeList = append(myPrivilegeList, user_cv.CvPrivilege{Type: v.Type}) } } - userBases, err := user_cv.GetUserBaseMap([]uint64{cpUserId}, userId) + userBases, err := user_cv.GetUserBaseForCpMap([]uint64{cpUserId}) if err != nil { return nil, err }