diff --git a/main.go b/main.go index 0da8243c939993eba91b081129a906e743274fdb..873770eb5e3599adb09d420347bd4d7d30541545 100644 --- a/main.go +++ b/main.go @@ -309,11 +309,18 @@ func (s *server) Levelcast(ctx context.Context, in *userCenter.LevelMessage) (*u uids = append(uids, uid) } } - // 处理分区用户 - levelUserIds := userManager.GetLevelUsers(uids, in.Level) + // 处理等级用户 + levelUserIds, userIds := userManager.GetLevelUsers(uids, in.Level) if len(levelUserIds) <= 0 { return &userCenter.LevelMessageRsp{FailedUids: failed}, nil } + if in.Area > 0 { + // 处理分区用户 + levelUserIds = userManager.GetAreaUsers(userIds, int8(in.Area)) + if len(levelUserIds) <= 0 { + return &userCenter.LevelMessageRsp{FailedUids: failed}, nil + } + } m := make(map[string][]uint64, 0) for uid := range levelUserIds { ok := false diff --git a/manager/userManager.go b/manager/userManager.go index 85cd6106e3daa87eb1741e1a288ed49086c2137c..6576dd973fdc6f0956f08a5d66877ce6f1e97f82 100644 --- a/manager/userManager.go +++ b/manager/userManager.go @@ -138,8 +138,9 @@ func (m *UserManager) GetAreaUsers(userIds []uint64, area int8) map[uint64]UserT // 获取财富等级大于某等级的用户 // 开区间 -func (m *UserManager) GetLevelUsers(userIds []uint64, wealthLevel int32) map[uint64]UserTinyArea { +func (m *UserManager) GetLevelUsers(userIds []uint64, wealthLevel int32) (map[uint64]UserTinyArea, []uint64) { res := make(map[uint64]UserTinyArea) + var resIds []uint64 // 从db中读,暂时不缓存(几千个) var users []UserTinyArea if err := m.MysqlDB.Table("user").Joins("JOIN match_wealth_user_score ON match_wealth_user_score.user_id = user.id"). @@ -148,7 +149,7 @@ func (m *UserManager) GetLevelUsers(userIds []uint64, wealthLevel int32) map[uin Where("match_wealth_user_score.grade > ?", wealthLevel). Find(&users).Error; err != nil { mylogrus.MyLog.Errorf("GetLevelUsers fail:%v", err) - return res + return res, resIds } for _, u := range users { a := m.GetArea(u.Country) @@ -161,6 +162,7 @@ func (m *UserManager) GetLevelUsers(userIds []uint64, wealthLevel int32) map[uin Area: a, Avatar: u.Avatar, } + resIds = append(resIds, u.ID) } - return res + return res, resIds } diff --git a/protocol/userCenter.proto b/protocol/userCenter.proto index 207a5d2cae91b7540dd4082b6941b4a171e5e550..acb6b1ad6da69021366726fc8482245d1c5b9efe 100644 --- a/protocol/userCenter.proto +++ b/protocol/userCenter.proto @@ -136,6 +136,7 @@ message LevelMessage { int32 level = 1; uint32 msgType = 2; bytes payLoad = 3; + int32 area = 4; } message LevelMessageRsp { diff --git a/release.ini b/release.ini index 9c743c50701559201e01575f4287366bb81173a6..9f497f2171aef0e4dcb54a5107f3fe4ad72e0c40 100644 --- a/release.ini +++ b/release.ini @@ -1,17 +1,17 @@ [DATABASE] -MYSQL_HOST=ua4papc3hmgqf351pbej-rw4rm.rwlb.dubai.rds.aliyuncs.com -MYSQL_USERNAME=nextvideo -MYSQL_PASSWORD=ihlUwI4nhi9W88MI +MYSQL_HOST=172.28.16.44 +MYSQL_USERNAME=hilo_master +MYSQL_PASSWORD=o8NNd8F7e6On2RqIgOhsy1PsiSxROT3n MYSQL_DB=hilo [DATABASECODE] -MYSQL_HOST=ua4papc3hmgqf351pbej-rw4rm.rwlb.dubai.rds.aliyuncs.com -MYSQL_USERNAME=nextvideo -MYSQL_PASSWORD=ihlUwI4nhi9W88MI +MYSQL_HOST=172.28.16.44 +MYSQL_USERNAME=hilo_master +MYSQL_PASSWORD=o8NNd8F7e6On2RqIgOhsy1PsiSxROT3n MYSQL_DB=hilo_code [REDIS] -REDIS_HOST=r-eb3btxn8vfdsuwdbuf.redis.dubai.rds.aliyuncs.com:6379 +REDIS_HOST=172.28.16.31:6379 REDIS_PASSWORD= -REDIS_CLUSTER_HOST=r-eb3yt6k8zgxs62kjjs.redis.dubai.rds.aliyuncs.com:6379 +REDIS_CLUSTER_HOST=172.28.16.47:6379 REDIS_CLUSTER_PASSWORD= [JWT] SECRET=hilo1504