From 23a60155c05190ba702e0289bf63604456b7052b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 24 Jun 2025 11:24:53 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/AliyunOpenApi.go | 9 +++++---- src/server/MergeConst/ErrorCode.go | 23 ++++++++++++----------- src/server/game/GameLogic.go | 6 +++--- src/server/msg/Gameapi.pb.go | 13 +++++++++++-- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/server/GoUtil/AliyunOpenApi.go b/src/server/GoUtil/AliyunOpenApi.go index 4df41753..faf5080f 100644 --- a/src/server/GoUtil/AliyunOpenApi.go +++ b/src/server/GoUtil/AliyunOpenApi.go @@ -29,8 +29,9 @@ func IdVerify(UserName, Num string) (_err error) { // 自动路由服务。 response, _err := Id2MetaVerifyAutoRoute(request) ret := util.ToJSONString(util.ToMap(response)) - console.Log(tea.String("最终结果(若此处为空,则所有服务点均异常,请逐步调试):" + tea.StringValue(ret))) - + if _err != nil { + console.Log(tea.String("最终结果(若此处为空,则所有服务点均异常,请逐步调试):" + tea.StringValue(ret))) + } return _err } @@ -54,8 +55,8 @@ func Id2MetaVerifyAutoRoute(request *sdk.Id2MetaVerifyRequest) (_result *sdk.Id2 return // 如果调用失败,继续下一个服务点。 } // 节点调用结果 - ret := util.ToJSONString(util.ToMap(response)) - console.Log(tea.String("节点 " + tea.StringValue(endpoint) + " 结果:" + tea.StringValue(ret) + " ")) + //ret := util.ToJSONString(util.ToMap(response)) + //console.Log(tea.String("节点 " + tea.StringValue(endpoint) + " 结果:" + tea.StringValue(ret) + " ")) // 有一个服务调用成功即返回。 lastResponse = response if !tea.BoolValue(util.IsUnset(response)) && tea.BoolValue(util.EqualNumber(tea.ToInt(response.StatusCode), tea.Int(200))) { diff --git a/src/server/MergeConst/ErrorCode.go b/src/server/MergeConst/ErrorCode.go index c994579e..b43e4ace 100644 --- a/src/server/MergeConst/ErrorCode.go +++ b/src/server/MergeConst/ErrorCode.go @@ -3,17 +3,18 @@ package MergeConst type ProtocolType int32 const ( - Protocol_Error_Account_Exist int32 = 100 - Protocol_Error_Account_OR_PWD_ERROR int32 = 101 - Protocol_Error_Account_OR_PWD_Short int32 = 102 - Protocol_Error_Account_Fail int32 = 103 - Protocol_Error_Account_NoExsit int32 = 104 - Protocol_Error_Account_Code_Error int32 = 105 - Protocol_Error_Account_Device_Error int32 = 106 - Protocol_Error_Id_Not_Verify int32 = 107 - Protocol_Error_Id_Verify_Error int32 = 108 - Protocol_Res_Buy_Cnt_Limit int32 = 110 - Protocol_Res_Buy_CD int32 = 111 + Protocol_Error_Account_Exist int32 = 100 + Protocol_Error_Account_OR_PWD_ERROR int32 = 101 + Protocol_Error_Account_OR_PWD_Short int32 = 102 + Protocol_Error_Account_Fail int32 = 103 + Protocol_Error_Account_NoExsit int32 = 104 + Protocol_Error_Account_Code_Error int32 = 105 + Protocol_Error_Account_Device_Error int32 = 106 + Protocol_Error_Id_Not_Verify int32 = 107 + Protocol_Error_Id_Verify_Error int32 = 108 + Protocol_Res_Buy_Cnt_Limit int32 = 110 + Protocol_Res_Buy_CD int32 = 111 + Protocol_Email_Find_Fail int32 = 120 Protocol_Active_No_Exsit int32 = 130 Protocol_Active_7Day_Rewarded int32 = 131 diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 2aae940a..95e82051 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -930,7 +930,7 @@ func GeneratedCode(Phone string) (string, error) { if value != "" { //return fmt.Errorf("验证码已发送,请稍后再试") } - db.RedisSetKey(key, Code, time.Minute) + db.RedisSetKey(key, Code, 5*time.Minute) err := GoUtil.SmsCode(Phone, Code) if err != nil { log.Error("发送验证码失败: %v", err) @@ -943,11 +943,11 @@ func VerifyCode(Phone, Code string) error { key := "Code_" + Phone value, err := db.RedisGetKey(key) if err != nil { - return fmt.Errorf("获取验证码失败: %v", err) + return fmt.Errorf("验证码已失效") } if value == Code { db.RedisDelKey(key) return nil } - return fmt.Errorf("获取验证码失败: 不一致") + return fmt.Errorf("验证码错误") } diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 5a2258f3..a6fb7d05 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -2095,6 +2095,7 @@ type ResLogin struct { DwUin int64 `protobuf:"varint,2,opt,name=dwUin,proto3" json:"dwUin,omitempty"` UserName string `protobuf:"bytes,3,opt,name=UserName,proto3" json:"UserName,omitempty"` FaceBookId string `protobuf:"bytes,4,opt,name=FaceBookId,proto3" json:"FaceBookId,omitempty"` + Msg string `protobuf:"bytes,5,opt,name=Msg,proto3" json:"Msg,omitempty"` // 错误信息 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2157,6 +2158,13 @@ func (x *ResLogin) GetFaceBookId() string { return "" } +func (x *ResLogin) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + type ReqChangePassword struct { state protoimpl.MessageState `protogen:"open.v1"` UserName string `protobuf:"bytes,1,opt,name=UserName,proto3" json:"UserName,omitempty"` @@ -23432,7 +23440,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\n" + "ResultCode\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\n" + "ResultCode\x12\x10\n" + - "\x03Msg\x18\x02 \x01(\tR\x03Msg\"|\n" + + "\x03Msg\x18\x02 \x01(\tR\x03Msg\"\x8e\x01\n" + "\bResLogin\x12\x1e\n" + "\n" + "ResultCode\x18\x01 \x01(\x05R\n" + @@ -23441,7 +23449,8 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\bUserName\x18\x03 \x01(\tR\bUserName\x12\x1e\n" + "\n" + "FaceBookId\x18\x04 \x01(\tR\n" + - "FaceBookId\"_\n" + + "FaceBookId\x12\x10\n" + + "\x03Msg\x18\x05 \x01(\tR\x03Msg\"_\n" + "\x11ReqChangePassword\x12\x1a\n" + "\bUserName\x18\x01 \x01(\tR\bUserName\x12\x16\n" + "\x06OldPwd\x18\x02 \x01(\tR\x06OldPwd\x12\x16\n" + From e0ea39d02c337524da1f3699bc262db4a916ed97 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 24 Jun 2025 15:36:57 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Trigger.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index 57cdc93d..b17258e7 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -321,7 +321,15 @@ func TriggerSeedOrder(player *Player) *order.Order { if E > MaxQ { return nil } - + // 生成订单 + ProduceChessList := []int{} + for _, v := range AllChess { + Type := mergeDataCfg.GetTypeById(v) + if Type != "Product" { + continue + } + ProduceChessList = append(ProduceChessList, v) + } if E == MaxQ { for _, Order := range OrderMod.OrderPool { if Order.Q == MaxQ { @@ -336,7 +344,7 @@ func TriggerSeedOrder(player *Player) *order.Order { EmitTypeList = append(EmitTypeList, EmitType) } ChessList := []int{} - for _, v := range AllChess { + for _, v := range ProduceChessList { Color := mergeDataCfg.GetColorById(v) EmitType := mergeDataCfg.GetEmitTypeByColor(Color) Lv := mergeDataCfg.GetLvById(v) @@ -370,7 +378,7 @@ func TriggerSeedOrder(player *Player) *order.Order { for _, Order := range OrderMod.OrderPool { if Order.Q == MinQ { ChessList := []int{} - for _, v := range AllChess { + for _, v := range ProduceChessList { Lv := mergeDataCfg.GetLvById(v) if Lv < 5 { ChessList = append(ChessList, v) @@ -409,7 +417,7 @@ func TriggerSeedOrder(player *Player) *order.Order { for _, Order := range OrderMod.OrderPool { if Order.Q == MinQ { ChessList := []int{} - for _, v := range AllChess { + for _, v := range ProduceChessList { Lv := mergeDataCfg.GetLvById(v) if Lv < 5 { ChessList = append(ChessList, v) From acf3a5851564fd6d20da9d891415929a070edd2d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 24 Jun 2025 17:20:46 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RegisterNetworkFunc.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index f07a1e45..c72b5419 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -105,7 +105,6 @@ func ReqUnBindFacebook(player *Player, buf []byte) error { } func ReqOnlyBindFacebook(player *Player, buf []byte) error { - player.PlayerBaseMod.ReqOnlyBindFacebook(player, buf) return nil } @@ -119,7 +118,9 @@ func RegSetEneryFunc(player *Player, buf []byte) error { req := &msg.ReqSetEnergyMul{} proto.Unmarshal(buf, req) MaxEnergyMul := player.GetPlayerBaseMod().GetMaxEnergyMul(player) - if int(req.EnergyMul) > MaxEnergyMul { + BaseMod := player.PlayMod.getBaseMod() + EnergyMul := BaseMod.GetEnergyMul() + if int(req.EnergyMul) > EnergyMul && int(req.EnergyMul) > MaxEnergyMul { player.SendErrClienRes(&msg.ResSetEnergyMul{ ResultCode: msg.RES_CODE_FAIL, Msg: "能量倍数超过最大值", @@ -127,7 +128,7 @@ func RegSetEneryFunc(player *Player, buf []byte) error { return errors.New("能量倍数超过最大值") } player.TeLog("mutil_merge_change", map[string]interface{}{ - "change_from": math.Pow(2, float64(MaxEnergyMul)), + "change_from": math.Pow(2, float64(BaseMod.GetEnergyMul())), "change_to": math.Pow(2, float64(req.EnergyMul)), "is_auto": false, }) From cc3c693dc80aaf2c4daaeff1331d3e7f14d68ceb Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 24 Jun 2025 18:39:33 +0800 Subject: [PATCH 4/8] =?UTF-8?q?playroom=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/playroom/playroom.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/server/game/mod/playroom/playroom.go b/src/server/game/mod/playroom/playroom.go index 3f0ff397..279ab285 100644 --- a/src/server/game/mod/playroom/playroom.go +++ b/src/server/game/mod/playroom/playroom.go @@ -173,6 +173,14 @@ func (p *PlayroomMod) InitData() { InitPetAir := playroomCfg.GetInitAirList() p.PetAir = append(p.PetAir, InitPetAir...) } + if len(p.Dress) == 0 { + p.Dress = make(map[int][]int) + InitDressList := playroomCfg.GetInitDressList() + for _, v := range InitDressList { + Part := playroomCfg.GetDressPart(v) + p.Dress[Part] = append(p.Dress[Part], v) + } + } } func (p *PlayroomMod) ZeroUpdate() { @@ -733,14 +741,6 @@ func (p *PlayroomMod) UnLock(Lv int) bool { p.MoodInfo[k] = &Mood{Id: k, Num: 100} } } - if len(p.Dress) == 0 { - p.Dress = make(map[int][]int) - InitDressList := playroomCfg.GetInitDressList() - for _, v := range InitDressList { - Part := playroomCfg.GetDressPart(v) - p.Dress[Part] = append(p.Dress[Part], v) - } - } return true } From 7b086e99d2de0833e5e4a8a0e9cca1040132b20a Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 27 Jun 2025 12:10:29 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E9=80=80=E5=BD=B9=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/chess/Chess.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/mod/chess/Chess.go b/src/server/game/mod/chess/Chess.go index 3bbcd1af..237af194 100644 --- a/src/server/game/mod/chess/Chess.go +++ b/src/server/game/mod/chess/Chess.go @@ -262,7 +262,7 @@ func (cb *ChessBorad) GetEmitList() []int { if EmitID == "" { continue } - if cb.Retire[EmitID] == EMIT_RETIRE_END { + if cb.Retire[EmitID] == EMIT_RETIRE_START { continue } EmitType := mergeDataCfg.GetEmitType(k) From 2fe1c75c4ecda79a198a8a32bce8f33f369da51a Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 27 Jun 2025 15:39:12 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E6=AF=8F=E6=97=A5=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/server.json | 2 +- src/server/game/Player.go | 3 +- src/server/game/mod/dailyTask/DailyTask.go | 4 +-- src/server/middleware/kafka/kafka.go | 35 ---------------------- 4 files changed, 4 insertions(+), 40 deletions(-) diff --git a/src/server/conf/server.json b/src/server/conf/server.json index 4a6b04f3..4e2d8c8e 100644 --- a/src/server/conf/server.json +++ b/src/server/conf/server.json @@ -35,5 +35,5 @@ "KafkaHost":"kafka-server", "KafkaPort":"9092", "Version":"1.0.0", - "IdVerify":true + "IdVerify":false } diff --git a/src/server/game/Player.go b/src/server/game/Player.go index d0891a46..f1eb9a53 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -152,11 +152,10 @@ func (p *Player) ProcessTrigger() { DailyTaskMod := p.PlayMod.getDailyTaskMod() MailMod := p.PlayMod.getMailMod() PlayroomMod := p.PlayMod.getPlayroomMod() - GuideMod := p.PlayMod.getGuideMod() IsPlayroomBack := false IsMailBack := false for _, tr := range p.Trigger { - if DailyTaskMod.Trigger(tr, GuideMod.CheckFinishFirstTask()) { + if DailyTaskMod.Trigger(tr) { IsDailyBack = true } if p.MailTrigger(tr) { diff --git a/src/server/game/mod/dailyTask/DailyTask.go b/src/server/game/mod/dailyTask/DailyTask.go index 431fdf29..3d3695fa 100644 --- a/src/server/game/mod/dailyTask/DailyTask.go +++ b/src/server/game/mod/dailyTask/DailyTask.go @@ -107,8 +107,8 @@ func (dt *DailyTaskMod) WeekUpdate() { dt.WeekReward = weekReward } -func (dt *DailyTaskMod) Trigger(Tr *quest.Trigger, Unlock bool) bool { - if !Unlock { +func (dt *DailyTaskMod) Trigger(Tr *quest.Trigger) bool { + if !dt.Lock { return false } update := false diff --git a/src/server/middleware/kafka/kafka.go b/src/server/middleware/kafka/kafka.go index b4a8fdef..d0f995e1 100644 --- a/src/server/middleware/kafka/kafka.go +++ b/src/server/middleware/kafka/kafka.go @@ -10,46 +10,11 @@ import ( ) var KafkaMod *kafka.Writer -var topic string func init() { if conf.Server.GameName == "pet_home_local" { return } - topic = conf.Server.GameName - - // Create a Kafka connection to the broker - conn, err := kafka.Dial("tcp", fmt.Sprintf("%s:%s", conf.Server.KafkaHost, conf.Server.KafkaPort)) - if err != nil { - log.Debug("Failed to connect to Kafka broker: %v", err) - return - } - defer conn.Close() - - // Check if topic exists, create if not - partitions, err := conn.ReadPartitions() - if err != nil { - log.Debug("Failed to read partitions: %v", err) - return - } - exists := false - for _, p := range partitions { - if p.Topic == topic { - exists = true - break - } - } - if !exists { - err = conn.CreateTopics(kafka.TopicConfig{ - Topic: topic, - NumPartitions: 1, - ReplicationFactor: 1, - }) - if err != nil { - log.Debug("Failed to create topic: %v", err) - return - } - } KafkaMod = newKafkaWriter(fmt.Sprintf("%s:%s", conf.Server.KafkaHost, conf.Server.KafkaPort), conf.Server.GameName) log.Debug("KafkaMod init") } From 0fb9c56de990eb28c6ddfc7f12b65a7039f0550b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 27 Jun 2025 17:10:37 +0800 Subject: [PATCH 7/8] =?UTF-8?q?playroom=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerFunc.go | 9 ++++++--- src/server/game/RegisterNetworkFunc.go | 6 ++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index a334d136..cf920e89 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -207,11 +207,14 @@ func handle(p *Player, m *msg.Msg) error { SyncMailMsg(p) case msg.HANDLE_TYPE_PLAYROOM_LOSE: // # 玩家输了 PlayroomMod := p.PlayMod.getPlayroomMod() - Items := make([]*item.Item, 0) + Items := m.Item + IsChip := false if m.Extra != nil { - Items = m.Extra.([]*item.Item) + IsChip = m.Extra.(bool) + } + if IsChip { + PlayroomMod.AddChip(m.From, m.SendT) } - PlayroomMod.AddChip(m.From, m.SendT) PlayroomMod.AddMood(playroom.MOOD_TYPE_FOOD, -50) PlayroomMod.AddMood(playroom.MOOD_TYPE_CLEAN, -50) PlayroomMod.AddVisitor(m.From, m.SendT) diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index c72b5419..05576199 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -3288,7 +3288,8 @@ func ReqPlayroomSelectReward(player *Player, buf []byte) error { To: Target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE, SendT: GoUtil.Now(), - Extra: Items, + Item: Items, + Extra: true, }) G_GameLogicPtr.SetUserData(Target, VAR_OP_CHIP, 1) PlayroomMod.ResetGame() @@ -3478,7 +3479,8 @@ func ReqPlayroomFlipReward(player *Player, buf []byte) error { To: Target, Type: MsqMod.HANDLE_TYPE_PLAYROOM_LOSE, SendT: GoUtil.Now(), - Extra: Items, + Item: Items, + Extra: false, }) player.PlayMod.save() PlayroomBackData(player) From a51e37490b6a72bbd4a27898c14644ff404253f6 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 27 Jun 2025 17:19:53 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/admin.go | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/server/game/admin.go b/src/server/game/admin.go index 6c79a927..919f47b0 100644 --- a/src/server/game/admin.go +++ b/src/server/game/admin.go @@ -40,22 +40,6 @@ func AdminProcess(Func string, args []interface{}) { } func VerifyUser(accountInfo *db.Db_Account, detail *msg.ReqLogin) (ResLogin *msg.ResLogin) { - if accountInfo == nil { - ResLogin = &msg.ResLogin{ - ResultCode: MergeConst.Protocol_Error_Account_NoExsit, - DwUin: 0, - } - return - } - - if detail.Type == msg.LOGIN_TYPE_ACCOUNT_LOGIN && accountInfo.UserPassword != detail.UserPwd { - ResLogin = &msg.ResLogin{ - ResultCode: MergeConst.Protocol_Error_Account_OR_PWD_ERROR, - DwUin: 0, - } - return - } - if detail.Type == msg.LOGIN_TYPE_CODE_LOGIN { err := VerifyCode(detail.UserName, detail.Code) if err != nil { @@ -66,6 +50,20 @@ func VerifyUser(accountInfo *db.Db_Account, detail *msg.ReqLogin) (ResLogin *msg return } } + if accountInfo == nil { + ResLogin = &msg.ResLogin{ + ResultCode: MergeConst.Protocol_Error_Account_NoExsit, + DwUin: 0, + } + return + } + if detail.Type == msg.LOGIN_TYPE_ACCOUNT_LOGIN && accountInfo.UserPassword != detail.UserPwd { + ResLogin = &msg.ResLogin{ + ResultCode: MergeConst.Protocol_Error_Account_OR_PWD_ERROR, + DwUin: 0, + } + return + } if detail.Type == msg.LOGIN_TYPE_DEVICE_LOGIN { if detail.Device != accountInfo.DeviceId { ResLogin = &msg.ResLogin{