From b196fca774b850d9b650438c0b932c71319bce45 Mon Sep 17 00:00:00 2001 From: hujiebin Date: Tue, 20 Jun 2023 16:45:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=AE=80=E5=8C=96cp=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cv/user_cv/user.go | 81 +++++++++++++++++++++++++++++++++++++++ domain/service/cp_s/cp.go | 2 +- 2 files changed, 82 insertions(+), 1 deletion(-) diff --git a/cv/user_cv/user.go b/cv/user_cv/user.go index ca92a6e..1d535ee 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 5a7d890..09a9874 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 } -- 2.22.0