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
Commits
9b476f77
Commit
9b476f77
authored
Feb 17, 2023
by
hujiebin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:先删掉一些没用的
parent
3f0ae61c
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1 addition
and
694 deletions
+1
-694
diamond.go
_const/enum/diamond_e/diamond.go
+0
-100
game.go
_const/enum/game_e/game.go
+0
-45
enum.go
_const/enum/groupPower_e/enum.go
+0
-58
enum.go
_const/enum/group_e/enum.go
+0
-90
msg.go
_const/enum/msg_e/msg.go
+0
-21
base.go
domain/event/base.go
+1
-1
game_edit.go
domain/event/game_ev/game_edit.go
+0
-53
report_game_info.go
domain/event/game_ev/report_game_info.go
+0
-107
group_in.go
domain/event/group_ev/group_in.go
+0
-54
group_leave.go
domain/event/group_ev/group_leave.go
+0
-49
scan.go
route/redis_r/scan.go
+0
-105
router.go
route/router.go
+0
-11
No files found.
_const/enum/diamond_e/diamond.go
deleted
100755 → 0
View file @
3f0ae61c
package
diamond_e
import
"hilo-user/resource/mysql"
type
StatusAccount
=
mysql
.
Type
const
(
Normal
StatusAccount
=
1
//冻结,只是限制减少,不限制增加
Frozen
StatusAccount
=
2
)
type
OperateType
=
mysql
.
Type
const
(
//注册
/* REGISTER OperateType = 1
//建立融云会话
SessionPay OperateType = 2
//购买钻石
BuyDiamond OperateType = 3
//发送礼物
SendGift OperateType = 4
//接受礼物
ReceiveGift OperateType = 5
//匹配条件
MatchCondition OperateType = 6*/
SendGift
OperateType
=
1
//发送礼物
MatchCondition
OperateType
=
2
//匹配条件
SessionPay
OperateType
=
3
//建立融云会话
BuyDiamond
OperateType
=
4
//购买钻石
ReceiveGift
OperateType
=
5
//接受礼物
REGISTER
OperateType
=
6
//注册
MgrSend
OperateType
=
8
//平台赠送
VideoCost
OperateType
=
9
//1对1视频花费
MgrReduce
OperateType
=
10
//平台扣除
ActivityBillboard
OperateType
=
11
//活动榜单奖励
ExchangeBean
OperateType
=
12
//钻石兑换豆子
ActivityGroupBillboard
OperateType
=
13
//活动榜单奖励
DailyInAppVip
OperateType
=
14
//每日登陆领取钻石(VIP)
GroupIMMass
OperateType
=
15
//群中IM群发
DailyInAppCommon
OperateType
=
16
//每日登陆领取钻石(普通用户)
GroupSupportAdmin
OperateType
=
17
//群组支持(利益分配者)
GroupSupportMgr
OperateType
=
18
//群主支持(助手)
MgrBillDiamond
OperateType
=
19
//管理人单据送钻石
Headwear
OperateType
=
20
//送头饰扣费
Property
OperateType
=
21
//送坐骑扣费
LuckyWheelJoin
OperateType
=
22
//参与转盘扣费
LuckyWheelCancel
OperateType
=
23
//转盘取消
LuckyWheelWin
OperateType
=
24
//转盘奖励
LuckWheelGroupOwer
OperateType
=
25
//转盘群主抽成
DealerTransfer
OperateType
=
26
//币商转账
GroupCustomTheme
OperateType
=
27
//购买群组自定义主题
RocketAward
OperateType
=
28
//火箭奖励
LuckyboxBuy
OperateType
=
29
//幸运盒子购买
LuckyboxAward
OperateType
=
30
//幸运盒子奖励
PrivateGift
OperateType
=
31
// 私聊送礼物
PrivateGiftReturn
OperateType
=
32
// 私聊送礼物退款
ActivityTriggerAward
OperateType
=
33
//活动触发奖励
VideoTradeUnionGift
OperateType
=
34
// 视频送礼物
VideoTradeUnionGiftReturn
OperateType
=
35
// 视频送礼物退款
GlobalBroadcast
OperateType
=
36
//全球发布消息
TaskAward
OperateType
=
37
//任务奖励
FruitMachineAward
OperateType
=
38
// 水果机奖励
FruitMachineBet
OperateType
=
39
// 水果机投注
Noble
OperateType
=
40
//购买/赠送贵族
FruitTycoonAward
OperateType
=
41
// 水果大亨奖励
Checkout
OperateType
=
42
//checkout购买
LuckyboxCycle
OperateType
=
43
//幸运盒子回收奖励
ActivityRechargeFirst
OperateType
=
44
//首次充值奖励
NewUserInvite
OperateType
=
45
// 新用户奖励活动
GeneralActivity
OperateType
=
46
// 一般性活动奖励
PowerSupportOwner
OperateType
=
47
// 势力支持(势力主)
PowerSupportAssistant
OperateType
=
48
// 势力支持(助手)
VideoMinute
OperateType
=
49
//1对1视频(分钟扣费)
MatchMinute
OperateType
=
50
//匹配视频(第一分钟扣费)
VideoMinuteBack
OperateType
=
51
//1对1视频(分钟扣费,返回)
VideoMinuteTotal
OperateType
=
52
//1对1视频(分钟扣费,返回)
GroupActivity
OperateType
=
53
//创建群组活动
GroupActivityReward
OperateType
=
54
//群组活动奖励
PayerMax
OperateType
=
55
//payerMax/茄子支付购买
BuyPinkDiamond
OperateType
=
56
//购买粉钻
VideoCostPink
OperateType
=
57
//1对1视频送礼(粉钻)
MatchMinutePink
OperateType
=
58
//匹配视频(第一分钟扣费)(粉钻)
VideoMinuteTotalPink
OperateType
=
59
//1对1视频(分钟扣费,返回)(粉钻)
SendPinkGift
OperateType
=
60
//送粉钻礼物 ---占位---暂不开放 数据库配置表中暂未配置
MatchMinuteGiftPink
OperateType
=
61
//匹配视频送礼(粉钻)
MatchMinuteGiftPinkTime
OperateType
=
62
//匹配视频加时送礼(粉钻)
JoinGroupCost
OperateType
=
63
//加入群组扣费
JoinGroupAdd
OperateType
=
64
//加入群组,群主得黄钻
GameJoin
OperateType
=
65
//加入游戏扣费
GameAward
OperateType
=
66
//游戏结算奖励
GameRefund
OperateType
=
67
//游戏退费
)
const
(
DiamondYellow
mysql
.
Type
=
1
DiamondPink
mysql
.
Type
=
2
)
_const/enum/game_e/game.go
deleted
100644 → 0
View file @
3f0ae61c
package
user_e
type
ReportType
string
type
GameType
int
type
GameOpt
int
type
GameStatus
uint8
type
GamerStatus
uint8
type
GamerPlayerStatus
uint8
type
GameMode
=
int
const
(
ReportTypeGameStart
ReportType
=
"user_start"
// 战斗开始通知
ReportTypeGameSettle
ReportType
=
"user_settle"
// 战斗结算通知
GameAutoMatchYes
=
1
// 游戏自动匹配
GameAutoMatchNo
=
0
// 游戏非自动匹配
GameTypeLudo
GameType
=
1
// ludo
GameTypeUno
GameType
=
2
// uno
GameModeQuick
GameMode
=
0
GameModeClassic
GameMode
=
1
GameOptCreate
GameOpt
=
0
// 创建游戏
GameOptJoin
GameOpt
=
1
// 加入游戏,自动准备
GameOptExit
GameOpt
=
2
// 退出游戏
GameOptClose
GameOpt
=
3
// 创建者关闭游戏
//GameOptReady GameOpt = 2 // 准备游戏
//GameOptCancelReady GameOpt = 3 // 取消准备游戏
GameStatusNoStart
GameStatus
=
0
// 未开始
GameStatusGaming
GameStatus
=
1
// 游戏中
GameStatusEnd
GameStatus
=
2
// 游戏结束
GamerStatusUnready
GamerStatus
=
0
// 未开始
GamerStatusGaming
GamerStatus
=
1
// 游戏中
GamerStatusEnd
GamerStatus
=
2
// 游戏结束
GamerExit
GamerStatus
=
3
// 自己退出游戏
GamerClose
GamerStatus
=
4
// 创建者关闭游戏
//GamerStatusReady GamerStatus = 1 // 准备
//GamerExit GamerStatus = 4 // 自己退出游戏
MgIdLudo
=
"1468180338417074177"
MgIdUno
=
"1472142559912517633"
)
_const/enum/groupPower_e/enum.go
deleted
100755 → 0
View file @
3f0ae61c
package
groupPower_e
import
"hilo-user/resource/mysql"
// 国家势力状态
type
GroupPowerStatus
=
mysql
.
Type
const
(
//上架
GroupPowerUserHas
GroupPowerStatus
=
1
//未上架
GroupPowerUserNo
GroupPowerStatus
=
2
//解散
GroupPowerDissolve
GroupPowerStatus
=
3
)
// 国家势力用户角色
type
GroupPowerUserRole
=
mysql
.
Type
const
(
//普通用户
GroupPowerUserRoleUser
GroupPowerUserRole
=
1
//势力主
GroupPowerUserRoleMgr
GroupPowerUserRole
=
2
)
// 国家势力日志操作类型
type
GroupPowerUserLogType
=
mysql
.
Type
const
(
//加入
GroupPowerUserLogTypeUserJoin
GroupPowerUserLogType
=
1
//用户自己离开
GroupPowerUserLogTypeUserLeave
GroupPowerUserLogType
=
2
//运营平台赋予管理者
GroupPowerUserLogTypeOwerJoin
GroupPowerUserLogType
=
3
//管理人让用户离开
GroupPowerUserLogTypeMgrLeave
GroupPowerUserLogType
=
4
//管理人解散
GroupPowerUserLogDissolve
GroupPowerUserLogType
=
5
)
type
GroupPowerDiamondLogType
=
mysql
.
Type
const
(
//群组原因加入
GroupPowerDiamondLogTypeByGroup
GroupPowerDiamondLogType
=
1
//群主原因加入
GroupPowerDiamondLogTypeByGroupOwer
GroupPowerDiamondLogType
=
2
)
type
PowerSupportAwardState
=
uint
const
(
PowerSuppportNo
PowerSupportAwardState
=
0
// 未达到要求
PowerSuppportAwarded
PowerSupportAwardState
=
1
// 已经领取
PowerSuppportWaiting
PowerSupportAwardState
=
2
// 待领取
)
_const/enum/group_e/enum.go
deleted
100755 → 0
View file @
3f0ae61c
package
group_e
import
"hilo-user/resource/mysql"
// 信令消息(不显示公屏工,不记入消息历史,不影响未读数)
type
TypeSignalMsg
=
mysql
.
Type
const
(
GroupEditProfileSignal
TypeSignalMsg
=
1
GroupRoleChangeSignal
TypeSignalMsg
=
2
GroupMicChangeSignal
TypeSignalMsg
=
3
//保留
GroupMsgBannedSignal
TypeSignalMsg
=
4
GroupMemberRemoveSignal
TypeSignalMsg
=
5
GroupGiftSignal
TypeSignalMsg
=
6
//礼物
GroupMicInSignal
TypeSignalMsg
=
7
GroupMicOutSignal
TypeSignalMsg
=
8
GroupMicLockSignal
TypeSignalMsg
=
9
GroupMicUnLockSignal
TypeSignalMsg
=
10
GroupMicSpeechOpenSignal
TypeSignalMsg
=
11
GroupMicSpeechCloseSignal
TypeSignalMsg
=
12
GroupKickOut
TypeSignalMsg
=
13
//保留
GroupSocketMicOutSignal
TypeSignalMsg
=
14
//保留
GroupInviteMicInSignal
TypeSignalMsg
=
15
//邀请上麦保留
GroupInSignal
TypeSignalMsg
=
16
//进入房间
GroupMicEmoji
TypeSignalMsg
=
17
//麦上表情
GroupLuckyWheel
TypeSignalMsg
=
18
//转盘的通知信令
GroupOutSignal
TypeSignalMsg
=
19
//离开房间
GroupRocketState
TypeSignalMsg
=
20
//火箭状态变化
GroupOnlineUser
TypeSignalMsg
=
21
//房间在线用户信息
GroupMicChange
TypeSignalMsg
=
22
//房间麦位上的变量
GroupMemberInvite
TypeSignalMsg
=
23
//房间-邀请用户成为会员
GroupRoleChange
TypeSignalMsg
=
24
//房间-用户群组身份变化
GroupGameInfoLudo
TypeSignalMsg
=
200
// 房间-游戏信息-ludo
GroupGameSettleLudo
TypeSignalMsg
=
201
// 房间-游戏结算信息-ludo
GroupGameInfoUno
TypeSignalMsg
=
202
// 房间-游戏信息-uno
GroupGameSettleUno
TypeSignalMsg
=
203
// 房间-游戏结算信息-uno
)
// 群组麦位数量类型
type
GroupMicNumType
=
mysql
.
Type
const
(
OneMicNumType
GroupMicNumType
=
5
TwoMicNumType
GroupMicNumType
=
10
ThreeMicNumType
GroupMicNumType
=
3
FourMicNumType
GroupMicNumType
=
4
SixMicNumType
GroupMicNumType
=
6
SevenMicNumType
GroupMicNumType
=
7
EightMicNumType
GroupMicNumType
=
8
NineMicNumType
GroupMicNumType
=
9
ElevenMicNumType
GroupMicNumType
=
11
TwelveMicNumType
GroupMicNumType
=
12
ThirteenMicNumType
GroupMicNumType
=
13
FourteenMicNumType
GroupMicNumType
=
14
FifteenMicNumType
GroupMicNumType
=
15
SixteenMicNumType
GroupMicNumType
=
16
SeventeenMicNumType
GroupMicNumType
=
17
EighteenMicNumType
GroupMicNumType
=
18
NineteenMicNumType
GroupMicNumType
=
19
TwentyMicNumType
GroupMicNumType
=
20
//5个麦位
FiveMicNumType
GroupMicNumType
=
1
//10个麦位
TenMicNumType
GroupMicNumType
=
2
//
)
// 公屏消息
type
TypePublicScreenMsg
=
mysql
.
Type
const
(
UserJoinPublicScreenMsg
TypePublicScreenMsg
=
1
// 加入群组
UserKickPublicScreenMsg
TypePublicScreenMsg
=
2
// 踢出房间
UserBannedPublicScreenMsg
TypePublicScreenMsg
=
3
// 拉黑用户
RoleAssignedPublicScreenMsg
TypePublicScreenMsg
=
4
// 添加角色
RoleRemovedPublicScreenMsg
TypePublicScreenMsg
=
5
// 移除角色
ClientSendMsgLocal
TypePublicScreenMsg
=
6
// 客户端占用
RollDiceMsg
TypePublicScreenMsg
=
7
// 掷骰子结果
GroupGiftMsg
TypePublicScreenMsg
=
8
//全服礼物
GroupSupportH5
TypePublicScreenMsg
=
9
//群组支持H5
JumpMessage
TypePublicScreenMsg
=
10
// 可跳转的公屏消息
RocketAwardMsg
TypePublicScreenMsg
=
11
// 火箭获奖消息
LockyboxAwardMsg
TypePublicScreenMsg
=
12
// 幸运盒子公屏中奖
FruitMachineAwardMsg
TypePublicScreenMsg
=
13
// 水果机中奖
EnterRoomMsg
TypePublicScreenMsg
=
14
// 用户进入房间
GameLudoPubMsg
TypePublicScreenMsg
=
101
// Ludo游戏公屏
GameUnoPubMsg
TypePublicScreenMsg
=
102
// uno游戏公屏
)
_const/enum/msg_e/msg.go
deleted
100755 → 0
View file @
3f0ae61c
package
msg_e
// 公屏消息
type
TypePublicScreenMsg
uint8
const
(
UserJoinPublicScreenMsg
TypePublicScreenMsg
=
1
// 加入群组
UserKickPublicScreenMsg
TypePublicScreenMsg
=
2
// 踢出房间
UserBannedPublicScreenMsg
TypePublicScreenMsg
=
3
// 拉黑用户
RoleAssignedPublicScreenMsg
TypePublicScreenMsg
=
4
// 添加角色
RoleRemovedPublicScreenMsg
TypePublicScreenMsg
=
5
// 移除角色
ClientSendMsgLocal
TypePublicScreenMsg
=
6
// 客户端占用
RollDiceMsg
TypePublicScreenMsg
=
7
// 掷骰子结果
GroupGiftMsg
TypePublicScreenMsg
=
8
//全服礼物
GroupSupportH5
TypePublicScreenMsg
=
9
//群组支持H5
JumpMessage
TypePublicScreenMsg
=
10
// 可跳转的公屏消息
RocketAwardMsg
TypePublicScreenMsg
=
11
// 火箭获奖消息
LockyboxAwardMsg
TypePublicScreenMsg
=
12
// 幸运盒子公屏中奖
FruitMachineAwardMsg
TypePublicScreenMsg
=
13
// 水果机中奖
EnterRoomMsg
TypePublicScreenMsg
=
14
// 用户进入房间
)
domain/event/base.go
View file @
9b476f77
package
event
import
"
hilo-user
/domain"
import
"
git.hilo.cn/hilo-common
/domain"
// 程序内部事件
type
Base
struct
{
...
...
domain/event/game_ev/game_edit.go
deleted
100755 → 0
View file @
3f0ae61c
package
user_ev
import
(
"hilo-user/_const"
"hilo-user/domain"
"hilo-user/domain/event"
"hilo-user/resource/mysql"
)
//注册监听
var
userEditEvent
=
new
(
event
.
Base
)
/**
注册事件
*/
type
GameEditEvent
struct
{
GameId
mysql
.
ID
`json:"userId"`
// 游戏id
TxGroupId
mysql
.
Str
`json:"txGroupId"`
// 群组id
}
//添加领域事件,在每个领域模型中init中添加,因为这是静态业务,非动态的。
func
AddGameEditEventSync
(
callback
func
(
model
*
domain
.
Model
,
event
interface
{})
error
)
{
userEditEvent
.
SyncList
=
append
(
userEditEvent
.
SyncList
,
callback
)
}
//加入到异步操作中
func
AddGameEditEventAsync
(
callback
func
(
model
*
domain
.
Model
,
event
interface
{})
error
)
{
userEditEvent
.
AsyncList
=
append
(
userEditEvent
.
AsyncList
,
callback
)
}
//领域事件发布
func
PublishGameEditEvent
(
model
*
domain
.
Model
,
event
interface
{})
error
{
//执行同步的领域事件
for
_
,
callback
:=
range
userEditEvent
.
SyncList
{
if
err
:=
callback
(
model
,
event
);
err
!=
nil
{
return
err
}
}
// 执行异步的领域事件
if
len
(
userEditEvent
.
AsyncList
)
>
0
{
go
func
()
{
defer
_const
.
CheckGoPanic
()
for
_
,
callback
:=
range
userEditEvent
.
AsyncList
{
// 异步事件需要用新model,主要是db
var
newModel
=
domain
.
CreateModelContext
(
model
.
MyContext
)
if
err
:=
callback
(
newModel
,
event
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"userEditEvent aysnc fail:%v"
,
err
)
}
}
}()
}
return
nil
}
domain/event/game_ev/report_game_info.go
deleted
100755 → 0
View file @
3f0ae61c
package
user_ev
import
(
"hilo-user/_const"
"hilo-user/_const/enum/user_e"
"hilo-user/domain"
"hilo-user/domain/event"
"hilo-user/resource/mysql"
)
//注册监听
var
reportGameInfoEvent
=
new
(
event
.
Base
)
/**
注册事件
*/
type
ReportGameInfoEvent
struct
{
UserId
mysql
.
ID
`json:"uid"`
// 用户id,请求get_user_info 接口返回uid参数
ReportType
user_e
.
ReportType
`json:"report_type"`
// 上报类型 user_start|user_settle
GameStartObject
*
GameStartObject
`json:"user_start_object"`
// user_start对应结构体
GameSettleObject
*
GameSettleObject
`json:"user_settle_object"`
// user_settle对应结构体
}
type
GameStartObject
struct
{
MgId
uint64
`json:"mg_id"`
// 游戏id
MgIdStr
string
`json:"mg_id_str"`
// 小游戏id数值型兼容字段(nodejs服务请使用当前字段)
RoomId
string
`json:"room_id"`
// 接入方房间id
GameMode
int32
`json:"user_mode"`
// 游戏模式,设定游戏的一些功能(参与游戏的人数,出手时间,特定的玩法)
GameRoundId
string
`json:"user_round_id"`
// 本局游戏的id (重复上报,使用该字段去重)
BattleStartAt
int32
`json:"battle_start_at"`
// 战斗开始时间(秒)
Players
[]
PlayerObject
`json:"players"`
// player_object 数组
ReportGameInfoExtras
string
`json:"report_user_info_extras"`
// 游戏上报信息扩展参数(透传),取值范围:长度不超过1024字节,超过则截断
ReportGameInfoKey
string
`json:"report_user_info_key"`
// 游戏上报信息扩展参数(透传),取值范围:长度不超过64字节,超过则截断。接入方服务端可以根据这个字段来查询一局游戏的数据
}
type
PlayerObject
struct
{
Uid
string
`json:"uid"`
// 接入方uid,机器人为空字符
IsAi
int32
`json:"is_ai"`
// 0:普通用户,1:机器人
}
type
GameSettleObject
struct
{
MgId
uint64
`json:"mg_id"`
// 游戏id
MgIdStr
string
`json:"mg_id_str"`
// 小游戏id数值型兼容字段(nodejs服务请使用当前字段)
RoomId
string
`json:"room_id"`
// 接入方房间id
GameMode
int32
`json:"user_mode"`
// 游戏模式
GameRoundId
string
`json:"user_round_id"`
// 本局游戏的id (重复上报,使用该字段去重)
BattleStartAt
uint32
`json:"battle_start_at"`
// 战斗开始时间(秒)
BattleEndAt
uint32
`json:"battle_end_at"`
// 战斗结束时间(秒)
BattleDuration
int32
`json:"battle_duration"`
// 战斗总时间(秒)
Results
[]
PlayerResultObject
`json:"results"`
// player_result_object 数组
ReportGameInfoExtras
string
`json:"report_user_info_extras"`
// 游戏上报信息扩展参数(透传),取值范围:长度不超过1024字节,超过则截断
ReportGameInfoKey
string
`json:"report_user_info_key"`
// 游戏上报信息扩展参数(透传),取值范围:长度不超过64字节,超过则截断。接入方服务端可以根据这个字段来查询一局游戏的数据
}
type
PlayerResultObject
struct
{
Uid
string
`json:"uid"`
// 接入方uid,机器人为空字符
Rank
int32
`json:"rank"`
// 排名从1开始,平局排名相同
IsEscaped
int32
`json:"is_escaped"`
// 0:正常,1:逃跑
IsAi
int32
`json:"is_ai"`
// 0:普通用户,1:机器人
Role
int32
`json:"role"`
// 0:表示没有角色信息,玩家在游戏中的角色 游戏role 说明
Score
int32
`json:"score"`
// 玩家当前局得到的分数
IsWin
int32
`json:"is_win"`
// 结果 0:表示没有信息,1:输,2:赢,3:平局
Award
int32
`json:"award"`
// 奖励
Extras
string
`json:"extras"`
// 扩展参数扩展说明
IsManaged
int32
`json:"is_managed"`
// 是否托管 0:未托管 1:托管
Diamond
int64
`json:"diamond"`
// 钻石收益,有可能负数,后期计算
LudoExtras
*
LudoExtras
}
type
LudoExtras
struct
{
Color
int
`json:"color"`
Steps
int
`json:"steps"`
}
//添加领域事件,在每个领域模型中init中添加,因为这是静态业务,非动态的。
func
AddReportGameInfoEventSync
(
callback
func
(
model
*
domain
.
Model
,
event
interface
{})
error
)
{
reportGameInfoEvent
.
SyncList
=
append
(
reportGameInfoEvent
.
SyncList
,
callback
)
}
//加入到异步操作中
func
AddReportGameInfoEventAsync
(
callback
func
(
model
*
domain
.
Model
,
event
interface
{})
error
)
{
reportGameInfoEvent
.
AsyncList
=
append
(
reportGameInfoEvent
.
AsyncList
,
callback
)
}
//领域事件发布
func
PublishReportGameInfoEvent
(
model
*
domain
.
Model
,
event
interface
{})
error
{
//执行同步的领域事件
for
_
,
callback
:=
range
reportGameInfoEvent
.
SyncList
{
if
err
:=
callback
(
model
,
event
);
err
!=
nil
{
return
err
}
}
// 执行异步的领域事件
if
len
(
reportGameInfoEvent
.
AsyncList
)
>
0
{
go
func
()
{
defer
_const
.
CheckGoPanic
()
for
_
,
callback
:=
range
reportGameInfoEvent
.
AsyncList
{
// 异步事件需要用新model,主要是db
var
newModel
=
domain
.
CreateModelContext
(
model
.
MyContext
)
if
err
:=
callback
(
newModel
,
event
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"ReportGameInfoEvent aysnc fail:%v"
,
err
)
}
}
}()
}
return
nil
}
domain/event/group_ev/group_in.go
deleted
100755 → 0
View file @
3f0ae61c
package
group_ev
import
(
"hilo-user/_const"
"hilo-user/domain"
"hilo-user/domain/event"
"hilo-user/myerr"
"hilo-user/resource/mysql"
)
var
groupInListen
=
new
(
event
.
Base
)
// 进房事件
type
GroupInEvent
struct
{
GroupId
string
// imGroupId
UserId
mysql
.
ID
ExternalId
string
Nick
string
Avatar
string
IsMember
bool
//是否永久成员
IsVip
bool
NobleLevel
uint16
}
func
AddGroupInEventSync
(
callback
func
(
model
*
domain
.
Model
,
event
interface
{})
error
)
{
groupInListen
.
SyncList
=
append
(
groupInListen
.
SyncList
,
callback
)
}
func
AddGroupInEventAsync
(
callback
func
(
model
*
domain
.
Model
,
event
interface
{})
error
)
{
groupInListen
.
AsyncList
=
append
(
groupInListen
.
AsyncList
,
callback
)
}
func
PublishGroupInEvent
(
model
*
domain
.
Model
,
event
interface
{})
error
{
// 执行同步的领域事件
for
_
,
callback
:=
range
groupInListen
.
SyncList
{
if
err
:=
callback
(
model
,
event
);
err
!=
nil
{
return
myerr
.
WrapErr
(
err
)
}
}
// 执行异步的领域事件
if
len
(
groupInListen
.
AsyncList
)
>
0
{
go
func
()
{
defer
_const
.
CheckGoPanic
()
for
_
,
callback
:=
range
groupInListen
.
AsyncList
{
// 异步事件需要用新model,主要是db
var
newModel
=
domain
.
CreateModelContext
(
model
.
MyContext
)
if
err
:=
callback
(
newModel
,
event
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"GroupInEvent aysnc fail:%v"
,
err
)
}
}
}()
}
return
nil
}
domain/event/group_ev/group_leave.go
deleted
100755 → 0
View file @
3f0ae61c
package
group_ev
import
(
"hilo-user/_const"
"hilo-user/domain"
"hilo-user/domain/event"
"hilo-user/myerr"
"hilo-user/resource/mysql"
)
var
groupLeaveListen
=
new
(
event
.
Base
)
// 离房事件
type
GroupLeaveEvent
struct
{
GroupId
string
UserId
mysql
.
ID
ExternalId
string
}
func
AddGroupLeaveEventSync
(
callback
func
(
model
*
domain
.
Model
,
event
interface
{})
error
)
{
groupLeaveListen
.
SyncList
=
append
(
groupLeaveListen
.
SyncList
,
callback
)
}
func
AddGroupLeaveEventAsync
(
callback
func
(
model
*
domain
.
Model
,
event
interface
{})
error
)
{
groupLeaveListen
.
AsyncList
=
append
(
groupLeaveListen
.
AsyncList
,
callback
)
}
func
PublishGroupLeaveEvent
(
model
*
domain
.
Model
,
event
interface
{})
error
{
// 执行同步的领域事件
for
_
,
callback
:=
range
groupLeaveListen
.
SyncList
{
if
err
:=
callback
(
model
,
event
);
err
!=
nil
{
return
myerr
.
WrapErr
(
err
)
}
}
// 执行异步的领域事件
if
len
(
groupLeaveListen
.
AsyncList
)
>
0
{
go
func
()
{
defer
_const
.
CheckGoPanic
()
for
_
,
callback
:=
range
groupLeaveListen
.
AsyncList
{
// 异步事件需要用新model,主要是db
var
newModel
=
domain
.
CreateModelContext
(
model
.
MyContext
)
if
err
:=
callback
(
newModel
,
event
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"GroupInEvent aysnc fail:%v"
,
err
)
}
}
}()
}
return
nil
}
route/redis_r/scan.go
deleted
100755 → 0
View file @
3f0ae61c
package
redis_r
import
(
"context"
"fmt"
"git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/mycontext"
"git.hilo.cn/hilo-common/mylogrus"
"git.hilo.cn/hilo-common/resource/config"
"github.com/gin-gonic/gin"
"github.com/go-redis/redis/v8"
"strconv"
"strings"
"time"
)
var
stop
=
make
(
chan
struct
{})
var
match
=
"match_relation_*"
func
Scan
(
c
*
gin
.
Context
)
(
*
mycontext
.
MyContext
,
error
)
{
go
func
()
{
return
myCtx
:=
mycontext
.
CreateMyContext
(
c
.
Keys
)
var
model
=
domain
.
CreateModelContext
(
myCtx
)
cursor
:=
uint64
(
0
)
first
:=
true
var
err
error
var
keys
[]
string
for
first
||
cursor
!=
0
{
first
=
false
select
{
case
<-
stop
:
return
default
:
keys
,
cursor
,
err
=
model
.
Redis
.
Scan
(
model
,
cursor
,
match
,
1000
)
.
Result
()
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"SCAN fail:%v"
,
err
)
return
}
var
delKeys
[]
string
for
_
,
key
:=
range
keys
{
arr
:=
strings
.
Split
(
key
,
"_"
)
if
len
(
arr
)
==
4
{
cycle
,
_
:=
strconv
.
ParseInt
(
arr
[
2
],
10
,
64
)
if
cycle
>
0
&&
cycle
<
208933198
{
// 2022-12-20号
delKeys
=
append
(
delKeys
,
key
)
}
}
}
if
len
(
delKeys
)
>
0
{
cnt
,
err
:=
model
.
Redis
.
Del
(
model
,
keys
...
)
.
Result
()
model
.
Log
.
Infof
(
"del redis keys:%v,cnt:%v,err:%v"
,
delKeys
,
cnt
,
err
)
}
time
.
Sleep
(
time
.
Second
)
}
}
}()
return
mycontext
.
CreateMyContext
(
nil
),
nil
}
func
ScanStop
(
c
*
gin
.
Context
)
(
*
mycontext
.
MyContext
,
error
)
{
return
nil
,
nil
myCtx
:=
mycontext
.
CreateMyContext
(
c
.
Keys
)
stop
<-
struct
{}{}
return
myCtx
,
nil
}
func
Hscan
(
c
*
gin
.
Context
)
(
*
mycontext
.
MyContext
,
error
)
{
RedisClient
:=
redis
.
NewClient
(
&
redis
.
Options
{
Addr
:
config
.
GetConfigRedis
()
.
REDIS_HOST
,
Password
:
config
.
GetConfigRedis
()
.
REDIS_PASSWORD
,
// no password set
DB
:
1
,
// use default DB
PoolSize
:
20
,
MinIdleConns
:
20
,
})
cursor
:=
uint64
(
0
)
first
:=
true
var
err
error
var
keys
[]
string
for
first
||
cursor
!=
0
{
first
=
false
select
{
case
<-
stop
:
return
nil
,
nil
default
:
keys
,
cursor
,
err
=
RedisClient
.
HScan
(
context
.
Background
(),
"user"
,
cursor
,
"*"
,
1000
)
.
Result
()
if
err
!=
nil
{
return
nil
,
err
}
l
:=
len
(
keys
)
if
l
%
2
!=
0
{
mylogrus
.
MyLog
.
Errorf
(
"Hscan keys err:%v"
,
keys
)
continue
}
for
i
:=
0
;
i
<
len
(
keys
);
i
+=
2
{
if
!
strings
.
Contains
(
keys
[
i
+
1
],
"172.26.95.48:50050"
)
&&
!
strings
.
Contains
(
keys
[
i
+
1
],
"172.26.95.24:50050"
)
{
res
,
err
:=
RedisClient
.
HDel
(
context
.
Background
(),
"user"
,
keys
[
i
])
.
Result
()
msg
:=
fmt
.
Sprintf
(
"hdel user %v,value:%v,res:%v,err:%v"
,
keys
[
i
],
keys
[
i
+
1
],
res
,
err
)
mylogrus
.
MyLog
.
Infof
(
"%v"
,
msg
)
}
}
}
}
return
nil
,
nil
}
route/router.go
View file @
9b476f77
...
...
@@ -5,7 +5,6 @@ import (
ginSwagger
"github.com/swaggo/gin-swagger"
"github.com/swaggo/gin-swagger/swaggerFiles"
_
"hilo-user/docs"
"hilo-user/route/redis_r"
"hilo-user/route/user_r"
)
...
...
@@ -21,15 +20,5 @@ func InitRouter() *gin.Engine {
{
user
.
GET
(
"/nameplate"
,
wrapper
(
user_r
.
UserNameplate
))
}
inner
:=
r
.
Group
(
"/inner"
)
inner
.
Use
(
ExceptionHandle
,
LoggerHandle
)
//}
test
:=
r
.
Group
(
"/test"
)
{
//test.GET("/user", wrapper(user_r.Test))
test
.
GET
(
"/scan/redis"
,
wrapper
(
redis_r
.
Scan
))
test
.
GET
(
"/hscan/redis"
,
wrapper
(
redis_r
.
Hscan
))
test
.
GET
(
"/scan/redis/stop"
,
wrapper
(
redis_r
.
ScanStop
))
}
return
r
}
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