diff --git a/domain/model/user_m/vip.go b/domain/model/user_m/vip.go index 2b06dd7d952ae9db9a4c6121afa902a18bf37c19..9e231d575f268c4a58f54252243a406bd68a5bb9 100644 --- a/domain/model/user_m/vip.go +++ b/domain/model/user_m/vip.go @@ -2,6 +2,7 @@ package user_m import ( "git.hilo.cn/hilo-common/domain" + "git.hilo.cn/hilo-common/mylogrus" "git.hilo.cn/hilo-common/resource/mysql" "gorm.io/gorm" "gorm.io/gorm/clause" @@ -59,14 +60,34 @@ func GetVip(db *gorm.DB, userId uint64) (*UserVip, error) { return nil, nil } +// εˆ†ζ‰ΉθŽ·ε– func BatchGetVips(userIds []uint64) (map[uint64]*int64, error) { + result := make(map[uint64]*int64, 0) rows := make([]UserVip, 0) - err := mysql.Db.Where("user_id IN ?", userIds).Find(&rows).Error - if err != nil { - return nil, err + end := 500 + if end > len(userIds) { + end = len(userIds) + } + start := 0 + for end <= len(userIds) { + if end > len(userIds) { + end = len(userIds) + } + tmp := make([]UserVip, 0) + err := mysql.Db.Where("user_id IN ?", userIds).Find(&tmp).Error + if err != nil { + return nil, err + } + if err != nil { + return result, err + } else { + rows = append(rows, tmp...) + } + start += 500 + end += 500 + mylogrus.MyLog.Infof("BatchGetVips start:%v-end:%v", start, end) } - result := make(map[uint64]*int64, 0) for _, i := range userIds { result[i] = nil } diff --git a/test/user_test.go b/test/user_test.go index 2c55f542eddc4da4cb5ea6ecf17f4ce841ad9882..b4b8e577c9f444ad06ffc82881f1061307b69048 100644 --- a/test/user_test.go +++ b/test/user_test.go @@ -14,3 +14,12 @@ func TestGetUserMap(t *testing.T) { res, err := user_m.GetUserMapByIds(domain.CreateModelNil(), userIds) t.Logf("%v-%v", res, err) } + +func TestGetUserVipMap(t *testing.T) { + var userIds []uint64 + for i := 0; i < 15000; i++ { + userIds = append(userIds, 7642) + } + res, err := user_m.BatchGetVips(userIds) + t.Logf("%v-%v", res, err) +}