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
Commits
c05a7be6
Commit
c05a7be6
authored
Jul 26, 2023
by
hujiebin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into feature/bodySize
parents
00681986
155b631d
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
146 additions
and
10 deletions
+146
-10
enter_room.go
_const/redis_key/group_k/enter_room.go
+21
-0
enter_room.go
domain/cache/group_c/enter_room.go
+71
-0
groupBanned.go
domain/model/group_m/groupBanned.go
+10
-0
vip.go
domain/model/user_m/vip.go
+25
-4
event_init.go
domain/service/event_s/event_init.go
+8
-4
group_op.go
domain/service/group_s/group_op.go
+1
-1
release.ini
release.ini
+1
-1
user_test.go
test/user_test.go
+9
-0
No files found.
_const/redis_key/group_k/enter_room.go
0 → 100644
View file @
c05a7be6
package
group_k
import
(
"fmt"
"hilo-group/_const/redis_key"
)
// 用户进房的key
const
(
UserEnterRoomPrefix
=
"uer:"
UserEnterRoomUserKey
=
UserEnterRoomPrefix
+
"u:${user_id}"
UserEnterRoomGroupKey
=
UserEnterRoomPrefix
+
"g:${user_id}"
)
func
GetUserEnterRoomUserKey
(
userId
uint64
)
string
{
return
redis_key
.
ReplaceKey
(
UserEnterRoomUserKey
,
fmt
.
Sprintf
(
"%d"
,
userId
))
}
func
GetUserEnterRoomGroupKey
(
groupId
string
)
string
{
return
redis_key
.
ReplaceKey
(
UserEnterRoomGroupKey
,
groupId
)
}
domain/cache/group_c/enter_room.go
0 → 100644
View file @
c05a7be6
package
group_c
import
(
"fmt"
"git.hilo.cn/hilo-common/domain"
"github.com/go-redis/redis/v8"
"hilo-group/_const/redis_key/group_k"
"strconv"
"time"
)
// 用户进房
func
ZAddUserEnterRoom
(
model
*
domain
.
Model
,
userId
uint64
,
imGroupId
string
)
{
userKey
:=
group_k
.
GetUserEnterRoomUserKey
(
userId
)
groupKey
:=
group_k
.
GetUserEnterRoomGroupKey
(
imGroupId
)
if
err
:=
model
.
Redis
.
ZAdd
(
model
,
userKey
,
&
redis
.
Z
{
Score
:
float64
(
time
.
Now
()
.
Unix
()),
Member
:
imGroupId
,
})
.
Err
();
err
!=
nil
{
model
.
Log
.
Errorf
(
"ZAddUserEnterRoom user fail:%v"
,
err
)
}
if
err
:=
model
.
Redis
.
ZAdd
(
model
,
groupKey
,
&
redis
.
Z
{
Score
:
float64
(
time
.
Now
()
.
Unix
()),
Member
:
userId
,
})
.
Err
();
err
!=
nil
{
model
.
Log
.
Errorf
(
"ZAddUserEnterRoom room fail:%v"
,
err
)
}
}
// 获取最近房间访客
func
GetLastRoomVisitors
(
model
*
domain
.
Model
,
imGroupId
string
)
(
userIds
[]
uint64
)
{
groupKey
:=
group_k
.
GetUserEnterRoomGroupKey
(
imGroupId
)
res
,
err
:=
model
.
Redis
.
ZRangeByScore
(
model
,
groupKey
,
&
redis
.
ZRangeBy
{
Min
:
fmt
.
Sprintf
(
"%d"
,
time
.
Now
()
.
AddDate
(
0
,
0
,
-
15
)
.
Unix
()),
Max
:
"+inf"
,
})
.
Result
()
if
err
!=
nil
{
return
}
for
_
,
u
:=
range
res
{
uid
,
_
:=
strconv
.
ParseUint
(
u
,
10
,
64
)
if
uid
>
0
{
userIds
=
append
(
userIds
,
uid
)
}
}
return
}
// 获取最近进入的房间
func
GetUserRecentRooms
(
model
*
domain
.
Model
,
userId
uint64
)
(
imGroupIds
[]
string
)
{
userKey
:=
group_k
.
GetUserEnterRoomUserKey
(
userId
)
var
err
error
imGroupIds
,
err
=
model
.
Redis
.
ZRangeByScore
(
model
,
userKey
,
&
redis
.
ZRangeBy
{
Min
:
fmt
.
Sprintf
(
"%d"
,
time
.
Now
()
.
AddDate
(
0
,
0
,
-
15
)
.
Unix
()),
Max
:
"+inf"
,
})
.
Result
()
if
err
!=
nil
{
return
}
return
}
// 清理房间访客
// 15天前访问的
func
RemoveRoomVisitors
(
model
*
domain
.
Model
,
imGroupId
string
)
{
groupKey
:=
group_k
.
GetUserEnterRoomGroupKey
(
imGroupId
)
err
:=
model
.
Redis
.
ZRemRangeByScore
(
model
,
groupKey
,
"-inf"
,
fmt
.
Sprintf
(
"%d"
,
time
.
Now
()
.
AddDate
(
0
,
0
,
-
15
)
.
Unix
()))
.
Err
()
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"RemoveRoomVisitors fail:%v"
,
err
)
}
}
domain/model/group_m/groupBanned.go
View file @
c05a7be6
...
...
@@ -3,6 +3,8 @@ package group_m
import
(
"git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/resource/mysql"
"github.com/bluele/gcache"
"time"
)
type
GroupBanned
struct
{
...
...
@@ -24,12 +26,20 @@ func (banned *GroupBanned) Delete(model *domain.Model) error {
return
model
.
Db
.
Where
(
banned
)
.
Delete
(
&
GroupBanned
{})
.
Error
}
var
bannedGroupCache
=
gcache
.
New
(
100
)
.
LRU
()
.
Build
()
func
GetBannedGroups
(
model
*
domain
.
Model
)
([]
GroupBanned
,
error
)
{
key
:=
"banned"
if
data
,
err
:=
bannedGroupCache
.
Get
(
key
);
err
==
nil
{
model
.
Log
.
Infof
(
"GetBannedGroups cache:%v"
,
len
(
data
.
([]
GroupBanned
)))
return
data
.
([]
GroupBanned
),
nil
}
result
:=
make
([]
GroupBanned
,
0
)
err
:=
model
.
Db
.
Find
(
&
result
)
.
Error
if
err
!=
nil
{
return
nil
,
err
}
bannedGroupCache
.
SetWithExpire
(
key
,
result
,
time
.
Minute
*
5
)
return
result
,
nil
}
...
...
domain/model/user_m/vip.go
View file @
c05a7be6
...
...
@@ -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
[
start
:
end
])
.
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
}
...
...
domain/service/event_s/event_init.go
View file @
c05a7be6
...
...
@@ -10,6 +10,7 @@ import (
"hilo-group/_const/enum/group_e"
"hilo-group/_const/enum/msg_e"
"hilo-group/_const/enum/task_e"
"hilo-group/domain/cache/group_c"
"hilo-group/domain/event/gift_ev"
"hilo-group/domain/event/group_ev"
"hilo-group/domain/event/group_power_ev"
...
...
@@ -247,6 +248,7 @@ func GroupEvents() {
}
err
:=
uer
.
Save
(
model
.
Db
)
model
.
Log
.
Infof
(
"AddGroupInAsync, UserEnterRoom err: %v"
,
err
)
group_c
.
ZAddUserEnterRoom
(
model
,
event
.
UserId
,
event
.
GroupId
)
// redis存储
return
err
})
...
...
@@ -469,7 +471,7 @@ func FlushHiloInfo(extId string, isVip bool, isPrettyCode bool, medals []uint32,
func
SendGift
()
{
// 送礼事件-势力经验
gift_ev
.
AddSendGiftEvent
S
ync
(
func
(
model
*
domain
.
Model
,
event
interface
{})
error
{
gift_ev
.
AddSendGiftEvent
As
ync
(
func
(
model
*
domain
.
Model
,
event
interface
{})
error
{
sendGiftEvent
,
ok
:=
event
.
(
*
gift_ev
.
SendGiftEvent
)
if
!
ok
{
model
.
Log
.
Errorf
(
"AddSendGiftEventAsync event type err"
)
...
...
@@ -486,7 +488,9 @@ func SendGift() {
}
if
exist
{
exp
:=
sendGiftEvent
.
GiftN
*
mysql
.
Num
(
len
(
sendGiftEvent
.
ReceiveUserIds
))
*
sendGiftEvent
.
ResGift
.
DiamondNum
return
groupPower_m
.
IncrGroupPowerExp
(
model
,
groupPowerId
,
exp
,
sendGiftEvent
.
SendUserId
,
"送礼"
)
return
model
.
Transaction
(
func
(
model
*
domain
.
Model
)
error
{
return
groupPower_m
.
IncrGroupPowerExp
(
model
,
groupPowerId
,
exp
,
sendGiftEvent
.
SendUserId
,
"送礼"
)
})
}
return
nil
})
...
...
@@ -560,8 +564,8 @@ func OnMic() {
}
else
{
model
.
Log
.
Infof
(
"cron micIn IncrUserOnMic success,userId:%v"
,
event
.
UserId
)
}
// 处理活动数据
go
rpc
.
AddActPoint
(
model
,
event
.
UserId
,
1
,
0
)
// 处理活动数据
活动已经结束
//
go rpc.AddActPoint(model, event.UserId, 1, 0)
return
nil
})
}
domain/service/group_s/group_op.go
View file @
c05a7be6
...
...
@@ -321,7 +321,7 @@ func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid strin
if
err
!=
nil
{
return
""
,
""
,
err
}
else
{
go
dealActDataAfterEnterRoom
(
s
.
svc
.
MyContext
,
userId
,
rideId
,
roomId
)
//
go dealActDataAfterEnterRoom(s.svc.MyContext, userId, rideId, roomId)
return
channelId
,
token
,
nil
}
}
...
...
release.ini
View file @
c05a7be6
[DATABASE]
MYSQL_HOST
=
ua4papc3hmgqf351pbej-rw4rm.rwlb.dubai.rds.aliyuncs.com
MYSQL_USERNAME
=
nextvideo
MYSQL_USERNAME
=
hilo_group
MYSQL_PASSWORD
=
ihlUwI4nhi9W88MI
MYSQL_DB
=
hilo
[DATABASECODE]
...
...
test/user_test.go
View file @
c05a7be6
...
...
@@ -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
<
1500
;
i
++
{
userIds
=
append
(
userIds
,
7642
)
}
res
,
err
:=
user_m
.
BatchGetVips
(
userIds
)
t
.
Logf
(
"%v-%v"
,
res
,
err
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment