Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hilo-group
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hujiebin
hilo-group
Compare Revisions
test...master
Source
master
Select Git revision
...
Target
test
Select Git revision
Compare
Commits (7)
feature/mic_change_redis
· 6830ffe8
hujiebin
authored
Sep 02, 2023
6830ffe8
Merge branch 'feature/mic_change_redis' into 'master'
· 8013f67e
hujiebin
authored
Sep 02, 2023
feature/mic_change_redis See merge request
!81
8013f67e
Feature/group room living
· 5bbb19d9
hujiebin
authored
Sep 03, 2023
5bbb19d9
Merge branch 'feature/group_room_living' into 'master'
· 1d17d692
hujiebin
authored
Sep 03, 2023
Feature/group room living See merge request
!82
1d17d692
feat:去掉一个黑名单
· cd3386b3
hujiebin
authored
Sep 04, 2023
cd3386b3
feat:优化MGetRoomVisittCnt LRU
· 80afaac2
hujiebin
authored
Sep 05, 2023
80afaac2
feat:同步在mic上的人
· 577a8fef
hujiebin
authored
Sep 06, 2023
577a8fef
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
45 additions
and
67 deletions
+45
-67
on_mic.go
cron/mic_cron/on_mic.go
+8
-0
userRoomVisit.go
domain/cache/room_c/userRoomVisit.go
+11
-3
group_rank.go
domain/model/groupPower_m/group_rank.go
+1
-2
groupBanned.go
domain/model/group_m/groupBanned.go
+1
-2
mic.go
domain/model/group_m/mic.go
+0
-1
micData.go
domain/model/group_m/micData.go
+7
-7
room.go
domain/model/group_m/room.go
+15
-18
group_list.go
route/group_r/group_list.go
+2
-34
No files found.
cron/mic_cron/on_mic.go
View file @
577a8fef
package
mic_cron
package
mic_cron
import
(
import
(
"fmt"
"git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/domain"
"github.com/robfig/cron"
"github.com/robfig/cron"
"hilo-group/_const/redis_key/mic_k"
"hilo-group/domain/cache/mic_c"
"hilo-group/domain/cache/mic_c"
"hilo-group/domain/event/mic_ev"
"hilo-group/domain/event/mic_ev"
"hilo-group/domain/model/group_m"
"hilo-group/domain/model/group_m"
...
@@ -24,6 +26,7 @@ func OnMicCheck() {
...
@@ -24,6 +26,7 @@ func OnMicCheck() {
return
return
}
}
for
_
,
groupId
:=
range
groupIds
{
for
_
,
groupId
:=
range
groupIds
{
onGroupMicKey
:=
mic_k
.
GetGroupOnMicUser
(
groupId
)
// 同步在mic上的人
//遍历每个麦位
//遍历每个麦位
for
i
:=
1
;
i
<=
group_m
.
MaxMicNum
;
i
++
{
for
i
:=
1
;
i
<=
group_m
.
MaxMicNum
;
i
++
{
micUser
,
err
:=
group_m
.
GetMicUser
(
model
,
groupId
,
i
)
micUser
,
err
:=
group_m
.
GetMicUser
(
model
,
groupId
,
i
)
...
@@ -41,6 +44,11 @@ func OnMicCheck() {
...
@@ -41,6 +44,11 @@ func OnMicCheck() {
});
err
!=
nil
{
});
err
!=
nil
{
model
.
Log
.
Errorf
(
"QueueOnMic fail:%v"
,
err
)
model
.
Log
.
Errorf
(
"QueueOnMic fail:%v"
,
err
)
}
}
// 设置mic上的人
model
.
Redis
.
HSet
(
model
,
onGroupMicKey
,
i
,
micUser
.
UserId
)
}
else
{
// 删除mic上的人
model
.
Redis
.
HDel
(
model
,
onGroupMicKey
,
fmt
.
Sprintf
(
"%d"
,
i
))
}
}
}
}
}
}
...
...
domain/cache/room_c/userRoomVisit.go
View file @
577a8fef
...
@@ -6,6 +6,7 @@ import (
...
@@ -6,6 +6,7 @@ import (
"git.hilo.cn/hilo-common/mylogrus"
"git.hilo.cn/hilo-common/mylogrus"
"git.hilo.cn/hilo-common/resource/config"
"git.hilo.cn/hilo-common/resource/config"
"git.hilo.cn/hilo-common/resource/redisCli"
"git.hilo.cn/hilo-common/resource/redisCli"
"github.com/bluele/gcache"
redis2
"github.com/go-redis/redis/v8"
redis2
"github.com/go-redis/redis/v8"
"github.com/spf13/cast"
"github.com/spf13/cast"
"hilo-group/_const/redis_key"
"hilo-group/_const/redis_key"
...
@@ -79,19 +80,25 @@ func GetUserRoomVisit(userId uint64) (map[string]int64, error) {
...
@@ -79,19 +80,25 @@ func GetUserRoomVisit(userId uint64) (map[string]int64, error) {
// 批量获取房间访问人数
// 批量获取房间访问人数
// 带上lru
// 带上lru
var
roomVisitCountLru
=
gcache
.
New
(
100
)
.
LRU
()
.
Build
()
func
MGetRoomVisitCount
(
groupIds
[]
string
)
(
map
[
string
]
string
,
error
)
{
func
MGetRoomVisitCount
(
groupIds
[]
string
)
(
map
[
string
]
string
,
error
)
{
visit
:=
make
(
map
[
string
]
string
)
visit
:=
make
(
map
[
string
]
string
)
if
len
(
groupIds
)
<=
0
{
if
len
(
groupIds
)
<=
0
{
return
visit
,
nil
return
visit
,
nil
}
}
// 用redisCluster中的zset代替,只是取出大于100的
lKey
:=
"room:visit:count"
if
data
,
err
:=
roomVisitCountLru
.
Get
(
lKey
);
err
==
nil
{
return
data
.
(
map
[
string
]
string
),
nil
}
// 用redisCluster中的zset代替,只是取出大于10的
zKey
:=
redis_key
.
GetPrefixRoomVisitCountZset
()
zKey
:=
redis_key
.
GetPrefixRoomVisitCountZset
()
cnt
:=
10
0
cnt
:=
10
if
!
config
.
AppIsRelease
()
{
if
!
config
.
AppIsRelease
()
{
cnt
=
0
cnt
=
0
}
}
zRes
,
err
:=
redisCli
.
GetClusterRedis
()
.
ZRevRangeByScoreWithScores
(
context
.
Background
(),
zKey
,
&
redis2
.
ZRangeBy
{
zRes
,
err
:=
redisCli
.
GetClusterRedis
()
.
ZRevRangeByScoreWithScores
(
context
.
Background
(),
zKey
,
&
redis2
.
ZRangeBy
{
Min
:
fmt
.
Sprintf
(
"%d"
,
cnt
),
// 100人数以上的。
Min
:
fmt
.
Sprintf
(
"%d"
,
cnt
),
Max
:
"+inf"
,
Max
:
"+inf"
,
})
.
Result
()
})
.
Result
()
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -101,6 +108,7 @@ func MGetRoomVisitCount(groupIds []string) (map[string]string, error) {
...
@@ -101,6 +108,7 @@ func MGetRoomVisitCount(groupIds []string) (map[string]string, error) {
for
_
,
v
:=
range
zRes
{
for
_
,
v
:=
range
zRes
{
visit
[
cast
.
ToString
(
v
.
Member
)]
=
cast
.
ToString
(
v
.
Score
)
visit
[
cast
.
ToString
(
v
.
Member
)]
=
cast
.
ToString
(
v
.
Score
)
}
}
_
=
roomVisitCountLru
.
SetWithExpire
(
lKey
,
visit
,
time
.
Minute
*
15
)
return
visit
,
nil
return
visit
,
nil
}
}
...
...
domain/model/groupPower_m/group_rank.go
View file @
577a8fef
...
@@ -15,12 +15,11 @@ type GroupPowerExpRank struct {
...
@@ -15,12 +15,11 @@ type GroupPowerExpRank struct {
// 获取家族经验排行榜
// 获取家族经验排行榜
// param limit: 排行榜人数
// param limit: 排行榜人数
// 10166 线上员工,对应的势力不上榜,groupPowerId=8951
,6171(产品要移走)
// 10166 线上员工,对应的势力不上榜,groupPowerId=8951
func
GetGroupPowerExpRank
(
model
*
domain
.
Model
,
beginDate
,
endDate
string
,
limit
int
,
gpStatus
groupPower_e
.
GroupPowerStatus
,
area
int
)
([]
GroupPowerExpRank
,
error
)
{
func
GetGroupPowerExpRank
(
model
*
domain
.
Model
,
beginDate
,
endDate
string
,
limit
int
,
gpStatus
groupPower_e
.
GroupPowerStatus
,
area
int
)
([]
GroupPowerExpRank
,
error
)
{
var
res
[]
GroupPowerExpRank
var
res
[]
GroupPowerExpRank
db
:=
model
.
DB
()
.
Table
(
"group_power_day_exp gpd"
)
.
Select
(
"gpd.group_power_id,SUM(gpd.exp) as exp"
)
.
db
:=
model
.
DB
()
.
Table
(
"group_power_day_exp gpd"
)
.
Select
(
"gpd.group_power_id,SUM(gpd.exp) as exp"
)
.
Where
(
"gpd.group_power_id <> 8951"
)
.
Where
(
"gpd.group_power_id <> 8951"
)
.
Where
(
"gpd.group_power_id <> 6171"
)
.
Where
(
"gpd.date BETWEEN ? AND ?"
,
beginDate
,
endDate
)
Where
(
"gpd.date BETWEEN ? AND ?"
,
beginDate
,
endDate
)
if
gpStatus
>
0
{
if
gpStatus
>
0
{
db
=
db
.
Joins
(
"left join group_power gp on gpd.group_power_id = gp.id"
)
.
Where
(
"gp.status = ?"
,
gpStatus
)
db
=
db
.
Joins
(
"left join group_power gp on gpd.group_power_id = gp.id"
)
.
Where
(
"gp.status = ?"
,
gpStatus
)
...
...
domain/model/group_m/groupBanned.go
View file @
577a8fef
...
@@ -31,11 +31,10 @@ var bannedGroupCache = gcache.New(100).LRU().Build()
...
@@ -31,11 +31,10 @@ var bannedGroupCache = gcache.New(100).LRU().Build()
func
GetBannedGroups
(
model
*
domain
.
Model
)
([]
GroupBanned
,
error
)
{
func
GetBannedGroups
(
model
*
domain
.
Model
)
([]
GroupBanned
,
error
)
{
key
:=
"banned"
key
:=
"banned"
if
data
,
err
:=
bannedGroupCache
.
Get
(
key
);
err
==
nil
{
if
data
,
err
:=
bannedGroupCache
.
Get
(
key
);
err
==
nil
{
model
.
Log
.
Infof
(
"GetBannedGroups cache:%v"
,
len
(
data
.
([]
GroupBanned
)))
return
data
.
([]
GroupBanned
),
nil
return
data
.
([]
GroupBanned
),
nil
}
}
result
:=
make
([]
GroupBanned
,
0
)
result
:=
make
([]
GroupBanned
,
0
)
err
:=
model
.
D
b
.
Find
(
&
result
)
.
Error
err
:=
model
.
D
B
()
.
Find
(
&
result
)
.
Error
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
...
domain/model/group_m/mic.go
View file @
577a8fef
...
@@ -926,7 +926,6 @@ func GetMicHasInGroupNum(model *domain.Model) (map[string]int64, error) {
...
@@ -926,7 +926,6 @@ func GetMicHasInGroupNum(model *domain.Model) (map[string]int64, error) {
}
}
// cache 1min
// cache 1min
_
=
micGroupNumCache
.
SetWithExpire
(
micGroupNumKey
,
resultGroupUuids
,
time
.
Minute
*
15
)
_
=
micGroupNumCache
.
SetWithExpire
(
micGroupNumKey
,
resultGroupUuids
,
time
.
Minute
*
15
)
//model.Log.Infof("GetMicHasInGroupNum cache miss:%v", resultGroupUuids)
return
resultGroupUuids
,
nil
return
resultGroupUuids
,
nil
}
}
...
...
domain/model/group_m/micData.go
View file @
577a8fef
...
@@ -96,7 +96,7 @@ func MicGroupKickOutRPush(model *domain.Model, groupUid string, userExternalId s
...
@@ -96,7 +96,7 @@ func MicGroupKickOutRPush(model *domain.Model, groupUid string, userExternalId s
}
}
// socket通知被拉黑者退房
// socket通知被拉黑者退房
rpc
.
SendQuitRoom
(
beKickuserId
,
2
,
txGroupId
)
rpc
.
SendQuitRoom
(
beKickuserId
,
2
,
txGroupId
)
if
n
,
err
:=
redisCli
.
GetRedis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
if
n
,
err
:=
redisCli
.
Get
Cluster
Redis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
model
.
Log
.
Errorf
(
"MicChangeRPush MicGroupKickOutRPush err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicGroupKickOutRPush err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
return
return
}
else
{
}
else
{
...
@@ -130,7 +130,7 @@ func MicSocketMicOutRPush(model *domain.Model, groupUid string, userExternalId s
...
@@ -130,7 +130,7 @@ func MicSocketMicOutRPush(model *domain.Model, groupUid string, userExternalId s
model
.
Log
.
Errorf
(
"MicChangeRPush MicSocketMicOutRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicSocketMicOutRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
return
return
}
}
if
n
,
err
:=
redisCli
.
GetRedis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
if
n
,
err
:=
redisCli
.
Get
Cluster
Redis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
model
.
Log
.
Errorf
(
"MicChangeRPush MicSocketMicOutRPush err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicSocketMicOutRPush err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
return
return
}
else
{
}
else
{
...
@@ -165,7 +165,7 @@ func MicNumChangeRPush(model *domain.Model, groupUid string, micNumType group_e.
...
@@ -165,7 +165,7 @@ func MicNumChangeRPush(model *domain.Model, groupUid string, micNumType group_e.
model
.
Log
.
Errorf
(
"MicChangeRPush MicNumChangeRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicNumChangeRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
return
return
}
}
if
n
,
err
:=
redisCli
.
GetRedis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
if
n
,
err
:=
redisCli
.
Get
Cluster
Redis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
model
.
Log
.
Errorf
(
"MicChangeRPush MicNumChangeRPush err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicNumChangeRPush err:%+v, groupUuid:%v, micContent:%+v"
,
err
,
groupUid
,
string
(
str
))
return
return
}
else
{
}
else
{
...
@@ -206,7 +206,7 @@ func MicEmptyRPush(model *domain.Model, groupUid string, i int) {
...
@@ -206,7 +206,7 @@ func MicEmptyRPush(model *domain.Model, groupUid string, i int) {
model
.
Log
.
Errorf
(
"MicChangeRPush MicEmptyRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, i:%v, micContent:%+v"
,
err
,
groupUid
,
i
,
string
(
micContent
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicEmptyRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, i:%v, micContent:%+v"
,
err
,
groupUid
,
i
,
string
(
micContent
))
return
return
}
}
if
n
,
err
:=
redisCli
.
GetRedis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
if
n
,
err
:=
redisCli
.
Get
Cluster
Redis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
model
.
Log
.
Errorf
(
"MicChangeRPush MicEmptyRPush err:%+v, groupUuid:%v, i:%v, micContent:%+v"
,
err
,
groupUid
,
i
,
string
(
micContent
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicEmptyRPush err:%+v, groupUuid:%v, i:%v, micContent:%+v"
,
err
,
groupUid
,
i
,
string
(
micContent
))
return
return
}
else
{
}
else
{
...
@@ -243,7 +243,7 @@ func MicChangeRPush(model *domain.Model, groupUid string, i int) {
...
@@ -243,7 +243,7 @@ func MicChangeRPush(model *domain.Model, groupUid string, i int) {
model
.
Log
.
Errorf
(
"MicChangeRPush MicChangeRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, i:%v, micContent:%+v"
,
err
,
groupUid
,
i
,
string
(
micContentStr
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicChangeRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, i:%v, micContent:%+v"
,
err
,
groupUid
,
i
,
string
(
micContentStr
))
return
return
}
}
if
n
,
err
:=
redisCli
.
GetRedis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
if
n
,
err
:=
redisCli
.
Get
Cluster
Redis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
model
.
Log
.
Errorf
(
"MicChangeRPush MicChangeRPush err:%+v, groupUuid:%v, i:%v, micContent:%+v"
,
err
,
groupUid
,
i
,
string
(
micContentStr
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicChangeRPush err:%+v, groupUuid:%v, i:%v, micContent:%+v"
,
err
,
groupUid
,
i
,
string
(
micContentStr
))
return
return
}
else
{
}
else
{
...
@@ -288,7 +288,7 @@ func MicAllRPush(model *domain.Model, groupUid string, externalId string) error
...
@@ -288,7 +288,7 @@ func MicAllRPush(model *domain.Model, groupUid string, externalId string) error
model
.
Log
.
Errorf
(
"MicChangeRPush MicAllRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, externalId:%v, micContent:%+v"
,
err
,
groupUid
,
externalId
,
string
(
micContentStr
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicAllRPush Marshal MicSystemMsg err:%+v, groupUuid:%v, externalId:%v, micContent:%+v"
,
err
,
groupUid
,
externalId
,
string
(
micContentStr
))
continue
continue
}
}
if
n
,
err
:=
redisCli
.
GetRedis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
if
n
,
err
:=
redisCli
.
Get
Cluster
Redis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
model
.
Log
.
Errorf
(
"MicChangeRPush MicAllRPush err:%+v, groupUuid:%v, externalId:%v, micContent:%+v"
,
err
,
groupUid
,
externalId
,
string
(
micContentStr
))
model
.
Log
.
Errorf
(
"MicChangeRPush MicAllRPush err:%+v, groupUuid:%v, externalId:%v, micContent:%+v"
,
err
,
groupUid
,
externalId
,
string
(
micContentStr
))
continue
continue
}
else
{
}
else
{
...
@@ -312,7 +312,7 @@ func MicRPush(model *domain.Model, txGroupId string, msg GroupSystemMsg) error {
...
@@ -312,7 +312,7 @@ func MicRPush(model *domain.Model, txGroupId string, msg GroupSystemMsg) error {
model
.
Log
.
Errorf
(
"MicRPush Marshal MicSystemMsg err:%+v, txGroupId:%v, micContent:%+v"
,
err
,
txGroupId
,
string
(
str
))
model
.
Log
.
Errorf
(
"MicRPush Marshal MicSystemMsg err:%+v, txGroupId:%v, micContent:%+v"
,
err
,
txGroupId
,
string
(
str
))
return
err
return
err
}
}
if
n
,
err
:=
redisCli
.
GetRedis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
if
n
,
err
:=
redisCli
.
Get
Cluster
Redis
()
.
RPush
(
context
.
Background
(),
redis_key
.
GetMicInfoChange
(),
string
(
str
))
.
Result
();
err
!=
nil
||
n
==
0
{
model
.
Log
.
Errorf
(
"MicRPush err:%+v, txGroupId:%v, micContent:%+v"
,
err
,
txGroupId
,
string
(
str
))
model
.
Log
.
Errorf
(
"MicRPush err:%+v, txGroupId:%v, micContent:%+v"
,
err
,
txGroupId
,
string
(
str
))
return
err
return
err
}
}
...
...
domain/model/group_m/room.go
View file @
577a8fef
...
@@ -50,14 +50,14 @@ func RoomLivingExpire(model *domain.Model, groupUid string, userId uint64) {
...
@@ -50,14 +50,14 @@ func RoomLivingExpire(model *domain.Model, groupUid string, userId uint64) {
model
.
Log
.
Infof
(
"room RoomLivingExpire userId:%v, groupUid:%v"
,
userId
,
groupUid
)
model
.
Log
.
Infof
(
"room RoomLivingExpire userId:%v, groupUid:%v"
,
userId
,
groupUid
)
//
//
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
i
,
err
:=
redisCli
.
GetRedis
()
.
ZAdd
(
context
.
Background
(),
key
,
&
redis2
.
Z
{
_
,
err
:=
model
.
RedisCluster
.
ZAdd
(
context
.
Background
(),
key
,
&
redis2
.
Z
{
Score
:
float64
(
time
.
Now
()
.
Unix
()),
Score
:
float64
(
time
.
Now
()
.
Unix
()),
Member
:
getMemberStr
(
groupUid
,
userId
),
Member
:
getMemberStr
(
groupUid
,
userId
),
})
.
Result
()
})
.
Result
()
if
err
!=
nil
{
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"RoomLivingExpire ZAdd key:%v, groupUid:%v, userId:%v, err:%v"
,
key
,
groupUid
,
userId
,
err
)
model
.
Log
.
Errorf
(
"RoomLivingExpire ZAdd key:%v, groupUid:%v, userId:%v, err:%v"
,
key
,
groupUid
,
userId
,
err
)
}
else
{
}
else
{
model
.
Log
.
Infof
(
"RoomLivingExpire ZAdd key:%v, groupUid:%v, userId:%v result:%v"
,
key
,
groupUid
,
userId
,
i
)
//
model.Log.Infof("RoomLivingExpire ZAdd key:%v, groupUid:%v, userId:%v result:%v", key, groupUid, userId, i)
}
}
}
}
...
@@ -70,14 +70,14 @@ func RoomLivingIn(model *domain.Model, groupUid string, userId uint64, externalI
...
@@ -70,14 +70,14 @@ func RoomLivingIn(model *domain.Model, groupUid string, userId uint64, externalI
}
}
//
//
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
i
,
err
:=
redisCli
.
GetRedis
()
.
ZAdd
(
context
.
Background
(),
key
,
&
redis2
.
Z
{
_
,
err
:=
model
.
RedisCluster
.
ZAdd
(
context
.
Background
(),
key
,
&
redis2
.
Z
{
Score
:
float64
(
time
.
Now
()
.
Unix
()),
Score
:
float64
(
time
.
Now
()
.
Unix
()),
Member
:
getMemberStr
(
groupUid
,
userId
),
Member
:
getMemberStr
(
groupUid
,
userId
),
})
.
Result
()
})
.
Result
()
if
err
!=
nil
{
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"UpdateRoomLiving ZAdd key:%v, groupUid:%v, userId:%v, err:%v"
,
key
,
groupUid
,
userId
,
err
)
model
.
Log
.
Errorf
(
"UpdateRoomLiving ZAdd key:%v, groupUid:%v, userId:%v, err:%v"
,
key
,
groupUid
,
userId
,
err
)
}
else
{
}
else
{
model
.
Log
.
Infof
(
"UpdateRoomLiving ZAdd key:%v, groupUid:%v, userId:%v result:%v"
,
key
,
groupUid
,
userId
,
i
)
//
model.Log.Infof("UpdateRoomLiving ZAdd key:%v, groupUid:%v, userId:%v result:%v", key, groupUid, userId, i)
}
}
go
func
(
myContext
*
mycontext
.
MyContext
,
groupId
string
)
{
go
func
(
myContext
*
mycontext
.
MyContext
,
groupId
string
)
{
...
@@ -112,11 +112,11 @@ func roomLivingLeave(model *domain.Model, userId uint64, groupId string) ([]stri
...
@@ -112,11 +112,11 @@ func roomLivingLeave(model *domain.Model, userId uint64, groupId string) ([]stri
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
//if err := redisCli.ClearExpired(key, expireMinute); err != nil {
//if err := redisCli.ClearExpired(key, expireMinute); err != nil {
if
err
:=
model
.
Redis
.
ZRemRangeByScore
(
model
,
key
,
"0"
,
strconv
.
FormatInt
(
time
.
Now
()
.
Unix
()
-
expireMinute
,
10
))
.
Err
();
err
!=
nil
{
if
err
:=
model
.
Redis
Cluster
.
ZRemRangeByScore
(
model
,
key
,
"0"
,
strconv
.
FormatInt
(
time
.
Now
()
.
Unix
()
-
expireMinute
,
10
))
.
Err
();
err
!=
nil
{
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
}
data
,
err
:=
redisCli
.
GetRedis
()
.
ZRange
(
context
.
Background
(),
key
,
0
,
-
1
)
.
Result
()
data
,
err
:=
model
.
RedisCluster
.
ZRange
(
context
.
Background
(),
key
,
0
,
-
1
)
.
Result
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
}
...
@@ -125,12 +125,12 @@ func roomLivingLeave(model *domain.Model, userId uint64, groupId string) ([]stri
...
@@ -125,12 +125,12 @@ func roomLivingLeave(model *domain.Model, userId uint64, groupId string) ([]stri
for
i
,
_
:=
range
data
{
for
i
,
_
:=
range
data
{
gid
,
uid
:=
analysisMemberStr
(
data
[
i
])
gid
,
uid
:=
analysisMemberStr
(
data
[
i
])
if
uid
==
userId
&&
(
groupId
==
""
||
gid
==
groupId
)
{
if
uid
==
userId
&&
(
groupId
==
""
||
gid
==
groupId
)
{
if
_
,
err
:=
redisCli
.
GetRedis
()
.
ZRem
(
context
.
Background
(),
key
,
getMemberStr
(
gid
,
uid
))
.
Result
();
err
!=
nil
{
if
_
,
err
:=
model
.
RedisCluster
.
ZRem
(
context
.
Background
(),
key
,
getMemberStr
(
gid
,
uid
))
.
Result
();
err
!=
nil
{
model
.
Log
.
Errorf
(
"RoomLivingLeave ZRem key:%s, groupId:%s, userId:%d, err:%v"
,
key
,
gid
,
uid
,
err
)
model
.
Log
.
Errorf
(
"RoomLivingLeave ZRem key:%s, groupId:%s, userId:%d, err:%v"
,
key
,
gid
,
uid
,
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
else
{
}
else
{
groupIds
=
append
(
groupIds
,
gid
)
groupIds
=
append
(
groupIds
,
gid
)
model
.
Log
.
Infof
(
"RoomLivingLeave ZRem success key:%s, groupId:%s, userId:%d"
,
key
,
gid
,
uid
)
//
model.Log.Infof("RoomLivingLeave ZRem success key:%s, groupId:%s, userId:%d", key, gid, uid)
}
}
// 发信令,让前端重新拉取,接受容错,
// 发信令,让前端重新拉取,接受容错,
...
@@ -272,11 +272,11 @@ func RoomLivingExistsUserId(groupUid string) ([]uint64, error) {
...
@@ -272,11 +272,11 @@ func RoomLivingExistsUserId(groupUid string) ([]uint64, error) {
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
//if err := redisCli.ClearExpired(key, expireMinute); err != nil {
//if err := redisCli.ClearExpired(key, expireMinute); err != nil {
var
model
=
domain
.
CreateModelNil
()
var
model
=
domain
.
CreateModelNil
()
if
err
:=
model
.
Redis
.
ZRemRangeByScore
(
model
,
key
,
"0"
,
strconv
.
FormatInt
(
time
.
Now
()
.
Unix
()
-
expireMinute
,
10
))
.
Err
();
err
!=
nil
{
if
err
:=
model
.
Redis
Cluster
.
ZRemRangeByScore
(
model
,
key
,
"0"
,
strconv
.
FormatInt
(
time
.
Now
()
.
Unix
()
-
expireMinute
,
10
))
.
Err
();
err
!=
nil
{
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
}
groupUserIdstrs
,
err
:=
redisCli
.
GetRedis
()
.
ZRevRange
(
context
.
Background
(),
key
,
0
,
-
1
)
.
Result
()
groupUserIdstrs
,
err
:=
model
.
RedisCluster
.
ZRevRange
(
context
.
Background
(),
key
,
0
,
-
1
)
.
Result
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
}
...
@@ -300,11 +300,11 @@ func RoomLivingUserIdFilter(userIds []mysql.ID) (map[mysql.ID]string, error) {
...
@@ -300,11 +300,11 @@ func RoomLivingUserIdFilter(userIds []mysql.ID) (map[mysql.ID]string, error) {
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
//if err := redisCli.ClearExpired(key, expireMinute); err != nil {
//if err := redisCli.ClearExpired(key, expireMinute); err != nil {
model
:=
domain
.
CreateModelNil
()
model
:=
domain
.
CreateModelNil
()
if
err
:=
model
.
Redis
.
ZRemRangeByScore
(
model
,
key
,
"0"
,
strconv
.
FormatInt
(
time
.
Now
()
.
Unix
()
-
expireMinute
,
10
))
.
Err
();
err
!=
nil
{
if
err
:=
model
.
Redis
Cluster
.
ZRemRangeByScore
(
model
,
key
,
"0"
,
strconv
.
FormatInt
(
time
.
Now
()
.
Unix
()
-
expireMinute
,
10
))
.
Err
();
err
!=
nil
{
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
}
groupUserIdstrs
,
err
:=
redisCli
.
GetRedis
()
.
ZRange
(
context
.
Background
(),
key
,
0
,
-
1
)
.
Result
()
groupUserIdstrs
,
err
:=
model
.
RedisCluster
.
ZRange
(
context
.
Background
(),
key
,
0
,
-
1
)
.
Result
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
}
...
@@ -325,12 +325,12 @@ func RoomLivingUserIdFilter(userIds []mysql.ID) (map[mysql.ID]string, error) {
...
@@ -325,12 +325,12 @@ func RoomLivingUserIdFilter(userIds []mysql.ID) (map[mysql.ID]string, error) {
func
RoomLivingExistsGroup
(
model
*
domain
.
Model
)
(
map
[
string
]
map
[
uint64
]
struct
{},
error
)
{
func
RoomLivingExistsGroup
(
model
*
domain
.
Model
)
(
map
[
string
]
map
[
uint64
]
struct
{},
error
)
{
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
key
:=
redis_key
.
GetPrefixGroupRoomLiving
()
//if err := redisCli.ClearExpired(key, expireMinute); err != nil {
//if err := redisCli.ClearExpired(key, expireMinute); err != nil {
if
err
:=
model
.
Redis
.
ZRemRangeByScore
(
model
,
key
,
"0"
,
strconv
.
FormatInt
(
time
.
Now
()
.
Unix
()
-
expireMinute
,
10
))
.
Err
();
err
!=
nil
{
if
err
:=
model
.
Redis
Cluster
.
ZRemRangeByScore
(
model
,
key
,
"0"
,
strconv
.
FormatInt
(
time
.
Now
()
.
Unix
()
-
expireMinute
,
10
))
.
Err
();
err
!=
nil
{
model
.
Log
.
Infof
(
"RoomLivingExistsGroup: err:%v"
,
err
)
model
.
Log
.
Infof
(
"RoomLivingExistsGroup: err:%v"
,
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
}
groupUserIdstrs
,
err
:=
redisCli
.
GetRedis
()
.
ZRange
(
context
.
Background
(),
key
,
0
,
-
1
)
.
Result
()
groupUserIdstrs
,
err
:=
model
.
RedisCluster
.
ZRange
(
context
.
Background
(),
key
,
0
,
-
1
)
.
Result
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
myerr
.
WrapErr
(
err
)
return
nil
,
myerr
.
WrapErr
(
err
)
}
}
...
@@ -344,7 +344,7 @@ func RoomLivingExistsGroup(model *domain.Model) (map[string]map[uint64]struct{},
...
@@ -344,7 +344,7 @@ func RoomLivingExistsGroup(model *domain.Model) (map[string]map[uint64]struct{},
groupGroup
[
tempGroupUid
]
=
map
[
uint64
]
struct
{}{
userId
:
{}}
groupGroup
[
tempGroupUid
]
=
map
[
uint64
]
struct
{}{
userId
:
{}}
}
}
}
}
model
.
Log
.
Infof
(
"RoomLivingExistsGroup size = %d"
,
len
(
groupGroup
))
//
model.Log.Infof("RoomLivingExistsGroup size = %d", len(groupGroup))
return
groupGroup
,
nil
return
groupGroup
,
nil
}
}
...
@@ -420,15 +420,12 @@ func BatchGetRoomVisitCount(logE *logrus.Entry, groupIds []string) (map[string]i
...
@@ -420,15 +420,12 @@ func BatchGetRoomVisitCount(logE *logrus.Entry, groupIds []string) (map[string]i
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
//logE.Infof("MGetRoomVisitCount:%v", roomVisitCount)
visitCount
:=
make
(
map
[
string
]
int64
)
visitCount
:=
make
(
map
[
string
]
int64
)
for
_
,
groupId
:=
range
groupIds
{
for
_
,
groupId
:=
range
groupIds
{
// 先从二级缓存中找
// 先从二级缓存中找
if
c
,
ok
:=
roomVisitCount
[
groupId
];
ok
{
if
c
,
ok
:=
roomVisitCount
[
groupId
];
ok
{
if
vc
,
err
:=
strconv
.
ParseInt
(
c
,
10
,
64
);
err
==
nil
&&
vc
>
0
{
if
vc
,
err
:=
strconv
.
ParseInt
(
c
,
10
,
64
);
err
==
nil
&&
vc
>
0
{
logE
.
Debugf
(
"GetRoomVisitCount, from roomVisitCount %s - %d"
,
groupId
,
vc
)
visitCount
[
groupId
]
=
vc
visitCount
[
groupId
]
=
vc
}
}
}
else
{
}
else
{
...
...
route/group_r/group_list.go
View file @
577a8fef
...
@@ -81,14 +81,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
...
@@ -81,14 +81,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
model
.
Log
.
Errorf
(
"GetUserCountryArea 获取国家资源错误 userId:%d, err:%v"
,
myUserId
,
err
)
model
.
Log
.
Errorf
(
"GetUserCountryArea 获取国家资源错误 userId:%d, err:%v"
,
myUserId
,
err
)
return
myContext
,
err
return
myContext
,
err
}
}
/* 2022-06-30 老板说先不分区
regions, err := res_m.GetAllLangRegion(model)
if err != nil {
return myContext, err
}
myRegion := regions[myCountry]
model.Log.Infof("GetPopularGroups: user %d, name = %s, country = %s, region = %s", myUserId, myNick, myCountry, myRegion)
*/
bannedGroups
,
err
:=
group_m
.
GetBannedGroupsMap
(
model
)
bannedGroups
,
err
:=
group_m
.
GetBannedGroupsMap
(
model
)
if
err
!=
nil
{
if
err
!=
nil
{
return
myContext
,
err
return
myContext
,
err
...
@@ -100,7 +92,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
...
@@ -100,7 +92,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
return
myContext
,
err
return
myContext
,
err
}
}
gameGroups
:=
group_m
.
GetGameGroupsMap
(
model
)
gameGroups
:=
group_m
.
GetGameGroupsMap
(
model
)
//model.Log.Infof("GetPopularGroups: page size = %d, page index = %d, banMap %v, hidenMap %v,cost:%v", pageSize, pageIndex, bannedGroups, hiddenGroups, time.Now().Sub(start))
hotGroupList
:=
make
([]
group_m
.
GroupInfo
,
0
)
hotGroupList
:=
make
([]
group_m
.
GroupInfo
,
0
)
...
@@ -109,7 +100,7 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
...
@@ -109,7 +100,7 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
myContext
,
err
return
myContext
,
err
}
}
model
.
Log
.
Infof
(
"GetMicHasInGroupNum: cost %v"
,
time
.
Now
()
.
Sub
(
start
))
model
.
Log
.
Infof
(
"GetMicHasInGroupNum: cost %v"
,
time
.
Now
()
.
Sub
(
start
))
// 正服高峰期耗时也很短的。
banCount
:=
0
banCount
:=
0
hiddenCount
:=
0
hiddenCount
:=
0
...
@@ -131,7 +122,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
...
@@ -131,7 +122,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
}
}
groupIds
=
append
(
groupIds
,
i
)
groupIds
=
append
(
groupIds
,
i
)
}
}
//model.Log.Infof("GetPopularGroups, micGroupNum: %v, banned %d, hidden %d,cost:%v", micGroupNum, banCount, hiddenCount, time.Now().Sub(start))
// 3. 处理置顶群
// 3. 处理置顶群
topGroupIds
,
err
:=
getTopGroups
(
model
,
bannedGroups
,
hiddenGroups
,
area
)
topGroupIds
,
err
:=
getTopGroups
(
model
,
bannedGroups
,
hiddenGroups
,
area
)
...
@@ -161,24 +151,10 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
...
@@ -161,24 +151,10 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
}
}
for
_
,
i
:=
range
topGroupIds
{
for
_
,
i
:=
range
topGroupIds
{
/* 2022-06-30 老板说先不分区 // 置顶只对同语言区的生效
if myRegion != regions[topGroupInfo[i].Country] {
continue
}
*/
// 已经置顶的,直接进队列,不再参与排序
// 已经置顶的,直接进队列,不再参与排序
hotGroupList
=
append
(
hotGroupList
,
groups
[
i
])
hotGroupList
=
append
(
hotGroupList
,
groups
[
i
])
//delete(groupIds, i)
}
}
// for pretty log
//logstr := ""
//for _, i := range hotGroupList {
//logstr += " " + i.ImGroupId
//}
//logstr += " |"
myArea
:=
fmt
.
Sprintf
(
"%d"
,
area
)
myArea
:=
fmt
.
Sprintf
(
"%d"
,
area
)
// 国家区域信息
// 国家区域信息
resAreaMap
,
err
:=
res_c
.
GetCountryAreaMap
(
model
)
resAreaMap
,
err
:=
res_c
.
GetCountryAreaMap
(
model
)
...
@@ -204,16 +180,14 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
...
@@ -204,16 +180,14 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
}
}
}
}
}
}
//model.Log.Infof("GetPopularGroups, countryScore[*]: %v,cost:%v", countryScore, time.Now().Sub(start))
now
:=
time
.
Now
()
now
:=
time
.
Now
()
bTime
:=
now
.
Add
(
-
time
.
Minute
*
30
)
bTime
:=
now
.
Add
(
-
time
.
Minute
*
30
)
g
:=
gift_cv
.
GiftOperate
{
SceneType
:
gift_e
.
GroupSceneType
}
g
:=
gift_cv
.
GiftOperate
{
SceneType
:
gift_e
.
GroupSceneType
}
diamonds
,
err
:=
g
.
GetRangeConsumeSummaryV2
(
bTime
,
now
,
groupIds
)
diamonds
,
err
:=
g
.
GetRangeConsumeSummaryV2
(
bTime
,
now
,
groupIds
)
// 获取1小时内的送礼榜
if
err
!=
nil
{
if
err
!=
nil
{
return
myContext
,
err
return
myContext
,
err
}
}
//model.Log.Infof("GetPopularGroups, diamonds in 30 mins: %v,cost:%v", diamonds, time.Now().Sub(start))
visitCount
,
err
:=
group_m
.
BatchGetRoomVisitCount
(
model
.
Log
,
groupIds
)
visitCount
,
err
:=
group_m
.
BatchGetRoomVisitCount
(
model
.
Log
,
groupIds
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -269,12 +243,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
...
@@ -269,12 +243,6 @@ func GetPopularGroups(c *gin.Context) (*mycontext.MyContext, error) {
// * 同国家 ^ 麦上有人 + 开放群 - 需要等级的群
// * 同国家 ^ 麦上有人 + 开放群 - 需要等级的群
for
_
,
g
:=
range
sortedGroupIds
{
for
_
,
g
:=
range
sortedGroupIds
{
hotGroupList
=
append
(
hotGroupList
,
groups
[
g
])
hotGroupList
=
append
(
hotGroupList
,
groups
[
g
])
//prefix := " "
//if countryScore[g] == 0 {
//prefix += "*"
//}
//logstr += prefix + g + ":" + groups[g].Code + ":" + strconv.Itoa(int(micGroupNum[g])) +
// ":" + strconv.FormatUint(diamonds[g], 10) + ":" + strconv.Itoa(int(visitCount[g]))
}
}
total
:=
len
(
hotGroupList
)
total
:=
len
(
hotGroupList
)
//model.Log.Infof("GetPopularGroups: hotGroupList size = %d,cost:%v", total, time.Now().Sub(start))
//model.Log.Infof("GetPopularGroups: hotGroupList size = %d,cost:%v", total, time.Now().Sub(start))
...
...