Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hilo-user
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
chenweijian
hilo-user
Compare Revisions
master...feature/gift-queue
Source
feature/gift-queue
Select Git revision
...
Target
master
Select Git revision
Compare
Commits (2)
feat:redis send gift queue
· 98662c1d
hujiebin
authored
Aug 21, 2023
98662c1d
Update gift_event.go
· c20b2baa
hujiebin
authored
Aug 21, 2023
c20b2baa
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
263 additions
and
161 deletions
+263
-161
cron.go
cron/cron.go
+3
-2
send_gift_redis.go
cron/gift_cron/send_gift_redis.go
+79
-0
gift_event.go
domain/cache/gift_c/gift_event.go
+34
-0
cp_level.go
domain/service/event_s/cp_level.go
+146
-158
event_init.go
domain/service/event_s/event_init.go
+1
-1
No files found.
cron/cron.go
View file @
c20b2baa
...
...
@@ -12,8 +12,9 @@ func Init() {
if
!
config
.
IsMaster
()
{
return
}
gift_cron
.
SendGiftEventInit
()
// 礼物消息
gift_cron
.
GiftRemark
()
// 礼物消息补偿
//gift_cron.SendGiftEventInit() // 礼物消息
//gift_cron.GiftRemark() // 礼物消息补偿
gift_cron
.
SendGiftEvent
()
// 送礼事件
cp_cron
.
ClearCpExpire
()
// 清理过期cp
cp_cron
.
CpAnniversaryNotice
()
// cp纪念日
cp_cron
.
CpInviteCancelInit
()
// cp邀请、解除到期结算
...
...
cron/gift_cron/send_gift_redis.go
0 → 100644
View file @
c20b2baa
package
gift_cron
import
(
"git.hilo.cn/hilo-common/domain"
"github.com/jinzhu/now"
"hilo-user/_const/enum/cp_e"
"hilo-user/domain/cache/gift_c"
"hilo-user/domain/event/gift_ev"
"hilo-user/domain/model/cp_m"
"time"
)
// 送礼事件
func
SendGiftEvent
()
{
//if !config.IsMaster() {
// return
//}
go
func
()
{
for
true
{
model
:=
domain
.
CreateModelNil
()
if
sendGiftEvent
:=
gift_c
.
BLPopQueueSendGift
(
model
);
sendGiftEvent
!=
nil
{
cpGiftEvent
(
model
,
sendGiftEvent
)
// cp送礼
}
}
}()
}
// 送礼增加cp等级
// 送礼增加cp排行榜
func
cpGiftEvent
(
model
*
domain
.
Model
,
sendGiftEvent
*
gift_ev
.
SendGiftEvent
)
{
// 只处理cp礼物
if
!
sendGiftEvent
.
ResGift
.
Cp
{
return
}
for
_
,
receiverUid
:=
range
sendGiftEvent
.
ReceiveUserIds
{
diamonds
:=
sendGiftEvent
.
GiftN
*
sendGiftEvent
.
ResGift
.
DiamondNum
// 有cp关系
if
cpRelation
,
exits
:=
cp_m
.
GetCpRelationPair
(
model
,
sendGiftEvent
.
SendUserId
,
receiverUid
);
exits
{
if
err
:=
cp_m
.
AddCpLevelPoints
(
model
,
cpRelation
,
diamonds
,
sendGiftEvent
.
SceneType
,
sendGiftEvent
.
SceneUid
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"AddCpLevelPoints fail:%v"
,
err
)
}
if
err
:=
cp_m
.
AddCpDayRank
(
model
,
cpRelation
,
diamonds
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"AddCpDayRank fail:%v"
,
err
)
}
// 检查最新的等级
if
cpLevel
:=
cp_m
.
GetCpLevel
(
model
,
cpRelation
.
Id
);
cpLevel
.
CpId
>=
0
{
points
:=
cpLevel
.
Points
+
cp_e
.
CpLevelPoints
[
cpLevel
.
Level
]
if
err
:=
cp_m
.
UpdateCpAchievement
(
model
,
cpLevel
.
CpId
,
cpRelation
.
UserId1
,
cpRelation
.
UserId2
,
cp_e
.
CpAchievementLevel
,
points
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"UpdateCpAchievement fail:%v"
,
err
)
}
}
// 检查最高的分数
for
_
,
queryType
:=
range
[]
string
{
"day"
,
"week"
,
"month"
}
{
var
beginDate
,
endDate
string
var
cpAchievementType
cp_e
.
CpAchievement
switch
queryType
{
case
"day"
:
beginDate
,
endDate
=
time
.
Now
()
.
Format
(
"2006-01-02"
),
time
.
Now
()
.
Format
(
"2006-01-02"
)
cpAchievementType
=
cp_e
.
CpAchievementDayRank
case
"week"
:
beginDate
=
now
.
BeginningOfWeek
()
.
Format
(
"2006-01-02"
)
endDate
=
now
.
EndOfWeek
()
.
Format
(
"2006-01-02"
)
cpAchievementType
=
cp_e
.
CpAchievementWeekRank
case
"month"
:
beginDate
=
now
.
BeginningOfMonth
()
.
Format
(
"2006-01-02"
)
endDate
=
now
.
EndOfMonth
()
.
Format
(
"2006-01-02"
)
cpAchievementType
=
cp_e
.
CpAchievementMonthRank
}
if
data
:=
cp_m
.
GetCpDayRank
(
model
,
beginDate
,
endDate
,
cpRelation
.
Id
);
data
.
Score
>
0
{
if
err
:=
cp_m
.
UpdateCpAchievement
(
model
,
cpRelation
.
Id
,
cpRelation
.
UserId1
,
cpRelation
.
UserId2
,
cpAchievementType
,
data
.
Score
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"UpdateCpAchievement fail:%v"
,
err
)
}
}
}
// 检查最新日周月榜单
return
// 业务场景允许提前break(cp是唯一的)
}
}
}
domain/cache/gift_c/gift_event.go
0 → 100644
View file @
c20b2baa
package
gift_c
import
(
"encoding/json"
"git.hilo.cn/hilo-common/domain"
"github.com/go-redis/redis/v8"
"hilo-user/domain/event/gift_ev"
"time"
)
const
EventSendGiftHiloUserQueue
=
"send:gift:queue:hilo_user"
// redis pop event sendGift
func
BLPopQueueSendGift
(
model
*
domain
.
Model
)
*
gift_ev
.
SendGiftEvent
{
var
res
*
gift_ev
.
SendGiftEvent
queue
:=
EventSendGiftHiloUserQueue
strs
,
err
:=
model
.
Redis
.
BLPop
(
model
,
time
.
Second
,
queue
)
.
Result
()
if
err
!=
nil
{
if
err
!=
redis
.
Nil
{
model
.
Log
.
Errorf
(
"BLPopQueueSendGift fail:%v"
,
err
)
}
return
nil
}
if
len
(
strs
)
>=
2
{
content
:=
strs
[
1
]
res
=
new
(
gift_ev
.
SendGiftEvent
)
if
err
:=
json
.
Unmarshal
([]
byte
(
content
),
res
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"BLPopQueueSendGift json fail:%v"
,
err
)
return
nil
}
return
res
}
return
nil
}
domain/service/event_s/cp_level.go
View file @
c20b2baa
This diff is collapsed.
Click to expand it.
domain/service/event_s/event_init.go
View file @
c20b2baa
...
...
@@ -14,7 +14,7 @@ import (
func
EventInit
()
{
UserBagSendEvent
()
CpGiftEvent
()
//
CpGiftEvent()
CpSpaceVisitEvent
()
}
...
...