Commit dec0f08d authored by iamhujiebin's avatar iamhujiebin

分批获取

parent 512aa032
...@@ -2,6 +2,7 @@ package user_m ...@@ -2,6 +2,7 @@ package user_m
import ( import (
"git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/mylogrus"
"git.hilo.cn/hilo-common/resource/mysql" "git.hilo.cn/hilo-common/resource/mysql"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/clause" "gorm.io/gorm/clause"
...@@ -59,14 +60,34 @@ func GetVip(db *gorm.DB, userId uint64) (*UserVip, error) { ...@@ -59,14 +60,34 @@ func GetVip(db *gorm.DB, userId uint64) (*UserVip, error) {
return nil, nil return nil, nil
} }
// 分批获取
func BatchGetVips(userIds []uint64) (map[uint64]*int64, error) { func BatchGetVips(userIds []uint64) (map[uint64]*int64, error) {
result := make(map[uint64]*int64, 0)
rows := make([]UserVip, 0) rows := make([]UserVip, 0)
err := mysql.Db.Where("user_id IN ?", userIds).Find(&rows).Error 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 { if err != nil {
return nil, err 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 { for _, i := range userIds {
result[i] = nil result[i] = nil
} }
......
...@@ -14,3 +14,12 @@ func TestGetUserMap(t *testing.T) { ...@@ -14,3 +14,12 @@ func TestGetUserMap(t *testing.T) {
res, err := user_m.GetUserMapByIds(domain.CreateModelNil(), userIds) res, err := user_m.GetUserMapByIds(domain.CreateModelNil(), userIds)
t.Logf("%v-%v", res, err) 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)
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment