From 9b476f77be9485d29e25d10b8305a0d9e5fb6f89 Mon Sep 17 00:00:00 2001 From: hujiebin Date: Fri, 17 Feb 2023 17:02:22 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=85=88=E5=88=A0=E6=8E=89?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E6=B2=A1=E7=94=A8=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _const/enum/diamond_e/diamond.go | 100 --------------------- _const/enum/game_e/game.go | 45 ---------- _const/enum/groupPower_e/enum.go | 58 ------------ _const/enum/group_e/enum.go | 90 ------------------- _const/enum/msg_e/msg.go | 21 ----- domain/event/base.go | 2 +- domain/event/game_ev/game_edit.go | 53 ----------- domain/event/game_ev/report_game_info.go | 107 ----------------------- domain/event/group_ev/group_in.go | 54 ------------ domain/event/group_ev/group_leave.go | 49 ----------- route/redis_r/scan.go | 105 ---------------------- route/router.go | 11 --- 12 files changed, 1 insertion(+), 694 deletions(-) delete mode 100755 _const/enum/diamond_e/diamond.go delete mode 100644 _const/enum/game_e/game.go delete mode 100755 _const/enum/groupPower_e/enum.go delete mode 100755 _const/enum/group_e/enum.go delete mode 100755 _const/enum/msg_e/msg.go delete mode 100755 domain/event/game_ev/game_edit.go delete mode 100755 domain/event/game_ev/report_game_info.go delete mode 100755 domain/event/group_ev/group_in.go delete mode 100755 domain/event/group_ev/group_leave.go delete mode 100755 route/redis_r/scan.go diff --git a/_const/enum/diamond_e/diamond.go b/_const/enum/diamond_e/diamond.go deleted file mode 100755 index e6ed50a..0000000 --- a/_const/enum/diamond_e/diamond.go +++ /dev/null @@ -1,100 +0,0 @@ -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 -) diff --git a/_const/enum/game_e/game.go b/_const/enum/game_e/game.go deleted file mode 100644 index 3fefed7..0000000 --- a/_const/enum/game_e/game.go +++ /dev/null @@ -1,45 +0,0 @@ -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" -) diff --git a/_const/enum/groupPower_e/enum.go b/_const/enum/groupPower_e/enum.go deleted file mode 100755 index 2d596fa..0000000 --- a/_const/enum/groupPower_e/enum.go +++ /dev/null @@ -1,58 +0,0 @@ -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 // 待领取 -) diff --git a/_const/enum/group_e/enum.go b/_const/enum/group_e/enum.go deleted file mode 100755 index f3417c3..0000000 --- a/_const/enum/group_e/enum.go +++ /dev/null @@ -1,90 +0,0 @@ -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游戏公屏 -) diff --git a/_const/enum/msg_e/msg.go b/_const/enum/msg_e/msg.go deleted file mode 100755 index 7f849cf..0000000 --- a/_const/enum/msg_e/msg.go +++ /dev/null @@ -1,21 +0,0 @@ -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 // 用户进入房间 -) diff --git a/domain/event/base.go b/domain/event/base.go index 407414d..63cfeee 100755 --- a/domain/event/base.go +++ b/domain/event/base.go @@ -1,6 +1,6 @@ package event -import "hilo-user/domain" +import "git.hilo.cn/hilo-common/domain" // 程序内部事件 type Base struct { diff --git a/domain/event/game_ev/game_edit.go b/domain/event/game_ev/game_edit.go deleted file mode 100755 index 1fc924d..0000000 --- a/domain/event/game_ev/game_edit.go +++ /dev/null @@ -1,53 +0,0 @@ -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 -} diff --git a/domain/event/game_ev/report_game_info.go b/domain/event/game_ev/report_game_info.go deleted file mode 100755 index c2287ae..0000000 --- a/domain/event/game_ev/report_game_info.go +++ /dev/null @@ -1,107 +0,0 @@ -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 -} diff --git a/domain/event/group_ev/group_in.go b/domain/event/group_ev/group_in.go deleted file mode 100755 index f769545..0000000 --- a/domain/event/group_ev/group_in.go +++ /dev/null @@ -1,54 +0,0 @@ -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 -} diff --git a/domain/event/group_ev/group_leave.go b/domain/event/group_ev/group_leave.go deleted file mode 100755 index 4f5e694..0000000 --- a/domain/event/group_ev/group_leave.go +++ /dev/null @@ -1,49 +0,0 @@ -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 -} diff --git a/route/redis_r/scan.go b/route/redis_r/scan.go deleted file mode 100755 index be2c417..0000000 --- a/route/redis_r/scan.go +++ /dev/null @@ -1,105 +0,0 @@ -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 -} diff --git a/route/router.go b/route/router.go index 09feb67..549d39c 100755 --- a/route/router.go +++ b/route/router.go @@ -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 } -- 2.22.0