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);
        }
Exemplo n.º 2
0
        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
            });
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        /// <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;
                }
            }
        }
Exemplo n.º 5
0
        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("有未结束的游戏");
            }
        }
Exemplo n.º 6
0
        /// <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);
        }