private ReturnLogin GenerateJSONWebToken(UserLoginModel userInfo) { ReturnLogin returno = new ReturnLogin(); var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"])); var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, userInfo.Username), new Claim(ClaimTypes.Role, userInfo.Username), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) }; var token = new JwtSecurityToken(_config["Jwt:Issuer"], _config["Jwt:Issuer"], claims, expires: DateTime.Now.AddMinutes(120), signingCredentials: credentials); returno.claims = claims; returno.token = new JwtSecurityTokenHandler().WriteToken(token);; return(returno); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var loginInfo = SendLoginPW.ParseFrom(requestInfo.Body); dynamic info = null; string infoStr = string.Empty; if (loginInfo.HasCertificate)//如果有传证书 { infoStr = RoomCardUtility.GetloginInfoByCertStr(CompressUtility.DecompressString(loginInfo.Certificate)); if (string.IsNullOrEmpty(infoStr))//3证书无效 { byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(3).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); return; } else { try { info = JsonConvert.DeserializeObject <dynamic>(infoStr); if ((DateTime.Now - ((DateTime)info.dateTime)).TotalHours >= 168)//证书过期 { byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(4).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); return; } info.Score = RoomCardUtility.GetLongBaoNumber(info.ID.ToString()); } catch (Exception ex) { session.Logger.Error(ex); byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(3).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); return; } } } else { infoStr = RoomCardUtility.GetloginInfoByPWD(loginInfo.UserAccount, loginInfo.Pwd); if (string.IsNullOrEmpty(infoStr) || JsonConvert.DeserializeObject <dynamic>(infoStr) == null) //5账号密码错误, { session.Logger.Debug(infoStr + "infoStr" + infoStr); byte[] msg = ReturnLogin.CreateBuilder().SetLoginstat(5).SetUserID(0).SetUserRoomCard(0).Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); return; } info = JsonConvert.DeserializeObject <dynamic>(infoStr); } SendLogin loginInfobuild = SendLogin.CreateBuilder().SetCity(loginInfo.City).SetHeadimg(string.IsNullOrEmpty(info.HeadImg1.ToString()) ?"1": string.Format("http://www.qytfkj.com{0}", info.HeadImg1)).SetLatitude(loginInfo.Latitude).SetNickname(info.TrueName.ToString()) .SetOpenid(info.ID.ToString()).SetProvince(loginInfo.Province).SetSex(info.Sex.ToString().Equals("1") ? "2" : "1").SetUnionid(info.ID.ToString()).Build(); var loginInfoByte = loginInfobuild.ToByteArray(); var login = new Login(); var json = new { ID = info.ID, Sex = info.Sex, HeadImg1 = info.HeadImg1, TrueName = info.TrueName, Score = info.Score, dateTime = DateTime.Now }; login.CerStr = CompressUtility.CompressString(RoomCardUtility.GetCertStrByloginInfoStr(JsonConvert.SerializeObject(json))); login.UserType = 1; login.UserLongBao = (long)info.Score; login.ExecuteCommand(session, new ProtobufRequestInfo { Body = loginInfoByte }); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { System.Net.IPEndPoint clientipe = (System.Net.IPEndPoint)session.RemoteEndPoint; MsgLog msglog = new MsgLog(); session.Logger.Debug("登陆sssionID--------" + session.SessionID); string fileName = string.Empty; //文件名 string headImg = string.Empty; //头像图片 session.Logger.Debug("登录游戏----------" + DateTime.Now); var userinfo = SendLogin.ParseFrom(requestInfo.Body); mjuserinfo usermodel = new mjuserinfo(); mjuserinfo model = new mjuserinfo() { nickname = HttpUtility.UrlEncode(userinfo.Nickname), openid = userinfo.Openid, city = userinfo.City, headimg = userinfo.Headimg, province = userinfo.Province, unionid = userinfo.Unionid, sex = int.Parse(userinfo.Sex) }; usermodel = AddUser(model, session); session.Logger.Debug("登录用户openid:" + userinfo.Openid + "|昵称:" + userinfo.Nickname + "----------" + DateTime.Now); UserInfo olduser = Gongyong.userlist.Find(u => u.openid == userinfo.Openid); if (olduser == null) { UserInfo user = new UserInfo() { city = userinfo.City, //判断图片是否保存至图片服务器,保存相应头像地址 headimg = usermodel.headimg, nickname = userinfo.Nickname, openid = userinfo.Openid, province = userinfo.Province, session = session, sex = userinfo.Sex, unionid = userinfo.Unionid, Lat = userinfo.Latitude, UserID = int.Parse(usermodel.id.ToString()), UserIP = clientipe.Address.ToString() }; Gongyong.userlist.Add(user); ReturnLogin log = ReturnLogin.CreateBuilder().SetLoginstat(1).SetUserID(int.Parse(usermodel.id.ToString())).Build(); byte[] msg = log.ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); session.Logger.Debug("登录游戏成功----------" + DateTime.Now); } else { if (olduser.session.Connected) { ReturnLogin log = ReturnLogin.CreateBuilder().SetLoginstat(2).SetUserID(int.Parse(usermodel.id.ToString())).Build(); byte[] msg = log.ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); session.Logger.Debug("登录游戏失败,当前对象存在----------" + DateTime.Now); session.Logger.Debug("sssionID--------" + session.SessionID); } else { mjuser mju = Gongyong.mulist.Find(u => u.Openid == userinfo.Openid); if (mju != null) { SendCL(session, userinfo.Openid, requestInfo); } olduser.session = session; ReturnLogin log = ReturnLogin.CreateBuilder().SetLoginstat(1).SetUserID(int.Parse(usermodel.id.ToString())).Build(); byte[] msg = log.ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); session.Logger.Debug("登录游戏成功,当前对象存在----------" + DateTime.Now); } } }
/// <summary> /// 接收客户端发来的信息 /// </summary> /// <param name="obj"></param> void ReceMsg(object obj) { Socket client; byte[] mag = new byte[1024 * 1024 * 5]; int msgLength; while (true) { client = obj as Socket; msgLength = client.Receive(mag); string sqlconn; //内存流 MemoryStream stream = new MemoryStream(mag, 0, msgLength); //二进制与Object 类的转换 BinaryFormatter fomatter = new BinaryFormatter(); //强制转换并且接收她 var protocolqq = fomatter.Deserialize(stream) as Protocol.ProtocolQQ; switch (protocolqq.mode) { //用户登录 case 0: switch (protocolqq.ope) { //验证登录 case 0: var userLogin = protocolqq.data as Protocol.UserLogin; //弄错了应该是ID,但是我也并没有很想改转来,所以就不改了。 string name = userLogin.Name; string pwd = userLogin.Pwd; //数据库操作语句 sqlconn = "select count(*) from tb_User where ID= '" + name + "'" + "and Pwd = '" + pwd + " '"; //新建一个用户登录返回类 ReturnLogin IsLogin = new ReturnLogin(); //如果num==1则数据库中有该用户 int num = DataOperator.ESSql(sqlconn); if (num != 0) { ClientManager.AddClient(name, client); //判断是否重复登录该用户 if (ClientManager.reLogin == true) { IsLogin.ResultLogin = false; client.Send(SendMsg(0, 1, IsLogin)); //关闭该字 string s_1 = "用户:" + client.RemoteEndPoint.ToString() + "下线。" + "\r\n"; ShowMsg(s_1); receThread.Abort(); while (receThread.ThreadState == ThreadState.Aborted) { Thread.Sleep(100); } break; } else { IsLogin.ResultLogin = true; User user = new User(); user.ID = name; //数据库更新用户记住密码,自动登录操作的操作 sqlconn = "update tb_User set Remember = " + userLogin.Remember + ",AutoLogin="******" where ID = '" + name + " '"; DataOperator.ENQSql(sqlconn); //访问数据库,得到好友列表 List <Friend> friends = new List <Friend>(); sqlconn = "select NickName, HeadID,Sign from tb_User where ID='" + name + "'"; //查询用户信息和用户好友信息的数据库查询语句 SqlDataReader dataReader = DataOperator.GetDataReader(sqlconn); //一直读 if (dataReader.Read()) { if (!(dataReader["NickName"] is DBNull)) { user.NickName = dataReader["NickName"].ToString(); } user.HeadId = Convert.ToInt32(dataReader["HeadID"]); user.Sign = dataReader["Sign"].ToString(); } //加载好友的SQL语句 sqlconn = "select FriendID,NickName,HeadID,Flag from tb_User,tb_Friend where tb_Friend.HostID='" + name + "'" + " and tb_User.ID=tb_Friend.FriendID"; dataReader = DataOperator.GetDataReader(sqlconn); while (dataReader.Read()) { Friend friend = new Friend(); friend.HeadID = Convert.ToInt32(dataReader["HeadID"]); //????? friend.ID = Convert.ToString(dataReader["FriendID"]); friend.NickName = dataReader["NickName"].ToString(); friends.Add(friend); } //关闭读取器 dataReader.Close(); //关闭数据库连接 DataOperator.conn.Close(); IsLogin.Friends = friends; IsLogin.GetUser = user; client.Send(SendMsg(0, 0, IsLogin)); } } else { IsLogin.ResultLogin = false; client.Send(SendMsg(0, 0, IsLogin)); } break; //注册用户 case 1: //不太对得起我自己---这个只允许注册100个 Random rand = new Random(); int v; v = rand.Next(0, 101); var reger = protocolqq.data as Protocol.Regr; reger.ID = Convert.ToString(20000 + v); sqlconn = "Select ID from tb_User Where ID = '" + reger.ID.Trim() + "'"; while (true) { if (DataOperator.ESSql(sqlconn).ToString() != reger.ID) { break; } else { v = rand.Next(0, 100); reger.ID = Convert.ToString(20000 + v); sqlconn = "Select ID from tb_User Where ID ='" + reger.ID + "'"; } } sqlconn = string.Format("insert into tb_User(ID,Pwd, NickName) values('{0}', '{1}','{2}')", reger.ID.Trim(), reger.PSW, reger.NickName); int num_ = DataOperator.ENQSql(sqlconn); if (num_ == 1) { client.Send(SendMsg(0, 2, reger)); } else { reger.ID = ""; client.Send(SendMsg(0, 2, reger)); } break; //忘记密码---验证账号是否正确 case 2: //忘记密码和登录时的协议我们采用一样的 var fuser = protocolqq.data as Protocol.UserLogin; string name_ = fuser.Name.Trim(); //数据库操作语句 sqlconn = "select ID from tb_User where ID= '" + name_ + "'"; int num_1 = DataOperator.ESSql(sqlconn); if (num_1 != 0) { client.Send(SendMsg(0, 3, fuser)); } else { fuser.Name = ""; client.Send(SendMsg(0, 3, fuser)); } break; //忘记密码---修改密码 case 3: var ffuer = protocolqq.data as UserLogin; //修改密码的数据库语句 sqlconn = "update tb_User set Pwd= '" + ffuer.Pwd.Trim() + "'" + "where ID= '" + ffuer.Name + "'"; int num_2 = DataOperator.ENQSql(sqlconn); if (num_2 != 0) { client.Send(SendMsg(0, 4, ffuer)); } else { ffuer.Name = ""; client.Send(SendMsg(0, 4, ffuer)); } break; //用户勾选密码 case 4: break; } break; //用户聊天 case 1: switch (protocolqq.ope) { //普通聊天 case 0: var utu = protocolqq.data as Protocol.UTU; var str = utu.Msg as Str; utu.ReceID = utu.ReceID.Trim(); if (ClientManager.CheckingUser(utu.ReceID)) { ClientManager.SendMsg(mag, ClientManager.client); } //此处的MessageTypeId为1,表示聊天消息;MessageState为0,表示消息未读 //把聊天记录插入数据库 sqlconn = string.Format("INSERT INTO tb_Message (FromUserID, ToUserID, Message, MessageTypeID, MessageState,MessageTime) VALUES ('{0}','{1}','{2}',{3},{4},'{5}')", utu.SendID, utu.ReceID, str.Message, 1, 0, utu.Time); int num = DataOperator.ENQSql(sqlconn); if (num != 1) { //发给客户端 MessageBox.Show("用户:" + utu.SendID + "向用户:" + utu.ReceID + "发送消息失败!" + "/r/n"); } break; // 发送文件 case 1: break; //发送图片 case 2: break; //发送抖屏 case 3: break; } break; //用户离线 case 3: //关闭套接字且移除用户 string s_0 = "用户:" + client.RemoteEndPoint.ToString() + "下线。" + "\r\n"; ClientManager.Clear(client); ShowMsg(s_0); receThread.Abort(); while (receThread.ThreadState == ThreadState.Aborted) { Thread.Sleep(100); } break; } } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { IPEndPoint clientipe = session.RemoteEndPoint; session.Logger.Debug("登陆sssionID--------" + session.SessionID); string fileName = string.Empty; //文件名 string headImg = string.Empty; //头像图片 session.Logger.Debug("登录游戏----------" + DateTime.Now); var userinfo = SendLogin.ParseFrom(requestInfo.Body); mjuserinfo usermodel = new mjuserinfo(); mjuserinfo model = new mjuserinfo() { nickname = userinfo.Nickname, openid = userinfo.Openid, city = userinfo.City, headimg = userinfo.Headimg, province = userinfo.Province, unionid = userinfo.Unionid, sex = int.Parse(userinfo.Sex), Oldheadimg = userinfo.Headimg, is_band = UserType }; usermodel = AddUser(model, session); session.Logger.Debug("登录用户openid:" + userinfo.Openid + "|昵称:" + userinfo.Nickname + "----------" + DateTime.Now); // UserInfo olduser = Gongyong.userlist.Find(u => u.openid == userinfo.Openid); RedisLoginModel olduser = RedisUtility.Get <RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, userinfo.Openid, userinfo.Unionid)); if (olduser == null) { NewUserLogin(userinfo, usermodel, session, clientipe, GameInformationBase.serverName, requestInfo); } else if (olduser.ServerName.Equals(GameInformationBase.serverName)) { UserInfo userInfo = Gongyong.userlist.Find(u => u.openid == userinfo.Openid); // 可能会存在缓存服务器有用户信息,而服务器没有的情况。因此需要再次判断 if (userInfo == null) { NewUserLogin(userinfo, usermodel, session, clientipe, GameInformationBase.serverName, requestInfo); session.Logger.Debug("新登录用户openid:" + userinfo.Openid); } else if (userInfo.session.Connected) { ReturnLogin log = ReturnLogin.CreateBuilder().SetLoginstat(2).SetUserID(int.Parse(usermodel.id.ToString())).SetUserRoomCard(0).Build(); byte[] msg = log.ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); session.Logger.Debug("登录游戏失败,当前对象存在----------" + DateTime.Now); session.Logger.Debug("sssionID--------" + session.SessionID); } else { session.Logger.Debug("登录游戏成功,当前对象存在----------" + DateTime.Now); var redisUserInfo = RedisUtility.Get <RedisGameModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, userinfo.Openid, userinfo.Unionid)); // UserInfo user = Gongyong.userlist.Find(u => u.openid == userinfo.Openid); userInfo.city = userinfo.City; //判断图片是否保存至图片服务器,保存相应头像地址 userInfo.headimg = usermodel.headimg; userInfo.nickname = userinfo.Nickname; userInfo.openid = userinfo.Openid; userInfo.province = userinfo.Province; userInfo.session = session; userInfo.sex = userinfo.Sex; userInfo.unionid = userinfo.Unionid; userInfo.Lat = userinfo.Latitude; userInfo.UserID = long.Parse(usermodel.id.ToString()); userInfo.UserIP = clientipe.Address.ToString(); userInfo.GroupID = groupStaffInfoDAL.GetGroupIDByUserID(usermodel.id).ToList(); userInfo.Type = UserType; //userInfo.GroupID.AddRange(groupInfoDAL.GetGroupIDByUserID(usermodel.id));//因为圈主 不存在圈子成员表中, 所以需要单独再添加一次 RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, userinfo.Openid, userinfo.Unionid), new RedisUserInfoModel(userInfo)); // mjuser mju = Gongyong.mulist.Find(u => u.Openid == userinfo.Openid); bool isSendCL = false; if (redisUserInfo != null && redisUserInfo.RoomID != 0) { //SendCL(session, userinfo.Openid, requestInfo); isSendCL = RedisUtility.GetServerIP(redisUserInfo.ServerName, requestInfo.MessageNum, session, 2, userinfo.Openid, userinfo.Unionid, true, redisUserInfo.RoomID);//2为有未结束的游戏 } //UserClient userClient = new UserClient(); //userClient.UpdateUserInfo(new registrationactivitiesModel { GameUserID = userInfo.UserID.ToString(), HeadImgurl = userInfo.headimg, UnionID = userInfo.unionid, LastTime = DateTime.Now, NickName = userInfo.nickname }); //var resultData = JsonConvert.DeserializeObject<ResultData>(userClient.GetGameCurrency(userInfo.unionid)).Data; long roomCard = 0; roomCard = UserType == 1 ? UserLongBao : RoomCardUtility.GetRoomCard(userInfo.UserID); //long.TryParse(resultData == null ? "0" : resultData.ToString(), out roomCard); userInfo.session = session; var log = ReturnLogin.CreateBuilder().SetLoginstat(1).SetUserID(int.Parse(usermodel.id.ToString())).SetUserRoomCard(roomCard); if (!string.IsNullOrEmpty(CerStr)) { log.SetCertificate(CerStr);//返回证书 log.SetUnionid(userInfo.unionid); log.SetHeadimg(userInfo.headimg); log.SetUserName(userInfo.nickname); } byte[] msg = log.Build().ToByteArray(); // if(!isSendCL) session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); var list = new AnnouncementDAL().GetAnnouncement();//获取公告列表 var returnAnnouncement = ReturnAnnouncement.CreateBuilder(); foreach (var item in list) { returnAnnouncement.AddAnnouncement(AnnouncementInfo.CreateBuilder().SetTitle(item.Title).SetContent(item.Content).Build()); } var dataInfo = returnAnnouncement.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 8001, dataInfo.Length, requestInfo.MessageNum, dataInfo))); session.Logger.Debug("登录游戏成功,当前对象存在----------" + DateTime.Now); } } else//如果用户登录的服务器不是当前服务器,则返回登录的服务器IP和端口 { UserInfo userInfo = Gongyong.userlist.Find(u => u.openid == userinfo.Openid); var log = ReturnLogin.CreateBuilder().SetLoginstat(1).SetUserID(int.Parse(usermodel.id.ToString())).SetUserRoomCard(0); if (!string.IsNullOrEmpty(CerStr)) { log.SetCertificate(CerStr);//返回证书 log.SetUnionid(userInfo.unionid); log.SetHeadimg(userInfo.headimg); log.SetUserName(userInfo.nickname); } byte[] msg = log.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); RedisUtility.GetServerIP(olduser.ServerName, requestInfo.MessageNum, session, 1, userinfo.Openid, userinfo.Unionid);//2为有未结束的游戏 session.Logger.Debug("有未结束的游戏"); } }
/// <summary> /// 新用户登录信息保存 /// </summary> /// <param name="userinfo"></param> /// <param name="usermodel"></param> /// <param name="session"></param> /// <param name="clientipe"></param> /// <param name="serverName"></param> /// <param name="requestInfo"></param> private void NewUserLogin(SendLogin userinfo, mjuserinfo usermodel, GameSession session, IPEndPoint clientipe, string serverName, ProtobufRequestInfo requestInfo) { UserInfo user = new UserInfo() { city = userinfo.City, //判断图片是否保存至图片服务器,保存相应头像地址 headimg = usermodel.headimg, nickname = userinfo.Nickname, openid = userinfo.Openid, province = userinfo.Province, session = session, sex = userinfo.Sex, unionid = userinfo.Unionid, Lat = userinfo.Latitude, UserID = usermodel.id, UserIP = clientipe.Address.ToString(), GroupID = groupStaffInfoDAL.GetGroupIDByUserID(usermodel.id).ToList(), Type = UserType, ConnTime = DateTime.Now }; var redisUserInfo = RedisUtility.Get <RedisGameModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, userinfo.Openid, userinfo.Unionid)); //user.GroupID.AddRange(groupInfoDAL.GetGroupIDByUserID(usermodel.id));//因为圈主 不存在圈子成员表中, 所以需要单独再添加一次 // UserClient userClient = new UserClient(); // userClient.UpdateUserInfo(new registrationactivitiesModel { GameUserID = user.UserID.ToString(), HeadImgurl = user.headimg, UnionID = user.unionid, LastTime = DateTime.Now, NickName = user.nickname }); //var resultData = JsonConvert.DeserializeObject <ResultData> (userClient.GetGameCurrency(user.unionid)).Data; long roomCard = roomCard = UserType == 1 ? UserLongBao : RoomCardUtility.GetRoomCard(user.UserID); // long.TryParse(resultData == null ?"0":resultData.ToString(), out roomCard); //resultData==null?"0": resultData.ToString()//userClient.GetGameCurrencyList(user.unionid)//resultData ? Convert.ToInt64(resultData.Data) : 0; Gongyong.userlist.Add(user); RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, userinfo.Openid, userinfo.Unionid), new RedisLoginModel { Openid = userinfo.Openid, ServerName = serverName, Unionid = userinfo.Unionid }); RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, userinfo.Openid, userinfo.Unionid), new RedisUserInfoModel(user)); var A = RedisUtility.Get <RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, userinfo.Openid, userinfo.Unionid)); var log = ReturnLogin.CreateBuilder().SetLoginstat(1).SetUserID(int.Parse(usermodel.id.ToString())).SetUserRoomCard(roomCard); if (!string.IsNullOrEmpty(CerStr)) { log.SetCertificate(CerStr);//返回证书 log.SetUnionid(user.unionid); log.SetHeadimg(user.headimg); log.SetUserName(user.nickname); } byte[] msg = log.Build().ToByteArray(); bool isSendCL = false; if (redisUserInfo != null && redisUserInfo.RoomID != 0) { //SendCL(session, userinfo.Openid, requestInfo); isSendCL = RedisUtility.GetServerIP(redisUserInfo.ServerName, requestInfo.MessageNum, session, 2, userinfo.Openid, userinfo.Unionid, true, redisUserInfo.RoomID);//2为有未结束的游戏 } // if (!isSendCL) session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1002, msg.Length, requestInfo.MessageNum, msg))); var list = new AnnouncementDAL().GetAnnouncement();//获取公告列表 var returnAnnouncement = ReturnAnnouncement.CreateBuilder(); foreach (var item in list) { returnAnnouncement.AddAnnouncement(AnnouncementInfo.CreateBuilder().SetTitle(item.Title).SetContent(item.Content).Build()); } var data = returnAnnouncement.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 8001, data.Length, requestInfo.MessageNum, data))); session.Logger.Debug("登录游戏成功----------" + DateTime.Now); }