public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var gameOperation = SendGetRoomCard.ParseFrom(requestInfo.Body); RedisLoginModel olduser = RedisUtility.Get <RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, gameOperation.Openid, gameOperation.Unionid)); if (olduser == null) { return; } var info = Gongyong.userlist.First(w => w.openid.Equals(olduser.Openid)); if (info == null) { return; } if (info.Type == 0) { var msg = ReturnGetRoomCard.CreateBuilder().SetUserRoomCard(RoomCardUtility.GetRoomCard(gameOperation.UserID)).Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1023, msg.Length, requestInfo.MessageNum, msg))); } else { var msg = ReturnGetRoomCard.CreateBuilder().SetUserRoomCard(RoomCardUtility.GetLongBaoNumber(info.unionid)).Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1023, msg.Length, requestInfo.MessageNum, msg))); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var sendData = SendGroupInfoByGroupID.ParseFrom(requestInfo.Body); var userInfo = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, sendData.Openid, sendData.Unionid)); if (userInfo == null || !userInfo.GroupID.Any(w => w == sendData.GroupID)) { session.Close(); return; } GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var groupInfo = groupInfoDAL.GetGroupInfoByGroupID(sendData.GroupID, userInfo.Type); var returnGroupInfo = ReturnGroupInfoByGroupID.CreateBuilder(); if (groupInfo != null) { var data = returnGroupInfo.SetStatus(1).SetCreateTime(TimeToLong.ConvertDateTimeInt(groupInfo.CreateTime)).SetGroupID(groupInfo.GroupID) .SetGroupName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(groupInfo.GroupName))).SetNikeName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(groupInfo.NikeName))).SetCreateUserID(groupInfo.CreateUserID) .SetGroupNumberPeople(groupInfoDAL.GetGroupPeopleNumber(sendData.GroupID)).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1033, data.Length, requestInfo.MessageNum, data))); } else { var data = returnGroupInfo.SetStatus(0).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1033, data.Length, requestInfo.MessageNum, data))); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { if (requestInfo.MessageResNum != 19990) { session.Close(); session.Logger.Debug("非法用户请求 " + session.RemoteEndPoint.AddressFamily); return; } var RoomExist = SendRoomExist.ParseFrom(requestInfo.Body); var muInfo = Gongyong.mulist.Find(w => w.Openid.Equals(RoomExist.Openid)); if (muInfo == null) { var roomInfo = Gongyong.roomlist.Find(w => w.RoomID == RoomExist.RoomID); if (roomInfo != null) { Gongyong.roomlist.Remove(roomInfo); } else { RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, RoomExist.RoomID.ToString(), "")); } RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, RoomExist.Openid, RoomExist.Unionid)); var data = ReturnRoomExist.CreateBuilder().SetIsExist(0).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 9902, data.Length, 19990, data))); } else { var data = ReturnRoomExist.CreateBuilder().SetIsExist(1).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 9902, data.Length, 19990, data))); } }
/// <summary> /// 解散牌桌 /// </summary> /// <param name="r"></param> /// <param name="messageNum">返回消息号</param> /// <param name="type">解散类型</param> public void DissolutionRoom(Room r, int messageNum, int type) { List <mjuser> listuser = Gongyong.mulist.FindAll(u => u.RoomID == r.RoomID); var Returnjs = ReturnAllIdea.CreateBuilder().SetState(1).SetMessgaeType(type); byte[] Sdata = Returnjs.Build().ToByteArray(); //if (Gongyong.userlist.Count == 0) // return; foreach (var item in listuser) { UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid); if (user != null) { //RedisUtility.Get<RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, gameOperation.Openid, gameOperation.Unionid)); //将用户游戏信息更新 RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid)); //RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, user.openid, user.unionid)); user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5007, Sdata.Length, messageNum, Sdata))); } } Gongyong.roomlist.Remove(r); Gongyong.mulist.RemoveAll(u => u.RoomID == r.RoomID); RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, r.RoomID.ToString(), "")); new RoomInfoDAL().UpdateEndRoomInfoByRoomInfoID(new RoomInfo { RoomInfoID = r.RoomInfoID, EndTime = DateTime.Now, EndStatus = type }); }
/// <summary> /// 用户退出牌桌 /// </summary> /// <param name="usermj"></param> /// <param name="roomID"></param> /// <param name="openid"></param> /// <param name="messageNum"></param> /// <param name="session"></param> /// <param name="isExit">是否已退出</param> public void UserExit(mjuser usermj, int roomID, string openid, int messageNum, GameSession session, bool isExit = false) { List <mjuser> listmjuser = Gongyong.mulist.FindAll(u => u.RoomID == roomID); ///判断是否该房间是否存在用户 if (listmjuser.Count <= 0) { return; } ///向剩余用户下发推出玩家 var returnData = ReturnRemoveUser.CreateBuilder().SetOpenid(openid).SetStatus(1); Room r = Gongyong.roomlist.Find(u => u.RoomID == roomID); if (r == null) { return; } //判断房间已开始游戏 if (r.startgame == 1) { returnData.SetStatus(0); byte[] returnbyte = returnData.Build().ToByteArray(); if (!isExit) { session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5009, returnbyte.Length, messageNum, returnbyte))); } } else { byte[] returnbyte = returnData.Build().ToByteArray(); if (isExit) { listmjuser.Remove(listmjuser.First(w => w.Openid.Equals(openid))); } r.listOpenid.Remove(openid); foreach (var item in listmjuser) { UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid); if (user != null && user.session != null) { user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5009, returnbyte.Length, messageNum, returnbyte))); } if (user.openid.Equals(usermj.Openid)) { //将用户游戏信息更新 RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid)); } } Gongyong.mulist.Remove(usermj); } }
/// <summary> /// 加入服务器 /// </summary> /// <param name="session"></param> /// <param name="requestInfo"></param> public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { SendAddServer sendInfo = SendAddServer.ParseFrom(requestInfo.Body); var key = RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, sendInfo.Openid, sendInfo.Unionid); var userInfo = RedisUtility.Get <RedisUserInfoModel>(key); var returnAddServer = ReturnAddServer.CreateBuilder(); if (userInfo == null) { returnAddServer.SetStatus(2); } else { returnAddServer.SetStatus(1); var info = Gongyong.userlist.Find(w => w.openid.Equals(userInfo.Openid)); if (info == null) { var user = new UserInfo(userInfo); user.session = session; Gongyong.userlist.Add(user); session.Logger.Debug("加入游戏服务器成功----" + sendInfo.Openid + "------" + DateTime.Now); } else { info.nickname = userInfo.Nickname; info.sex = userInfo.Sex; info.headimg = userInfo.Headimg; if (info.session != null) { info.session.Close(); } info.session = session; mjuser mju = Gongyong.mulist.Find(u => u.Openid == info.openid); if (mju != null) { mju.ConnectionStatus = 1; // SendCL(session, info.openid, requestInfo); } } } var data = returnAddServer.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1012, data.Length, requestInfo.MessageNum, data))); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var sendData = SendGroupUserInfoByGroupID.ParseFrom(requestInfo.Body); var userInfo = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, sendData.Openid, sendData.Unionid)); if (userInfo == null || !userInfo.GroupID.Any(w => w == sendData.GroupID)) { // session.Close(); return; } GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var groupInfo = groupInfoDAL.GetGroupInfoByGroupID(sendData.GroupID, userInfo.Type); var returnGroupInfo = ReturnGroupUserInfoByGroupID.CreateBuilder(); if (groupInfo != null) { var list = groupInfoDAL.GetGroupStaffInfoByGroupID(sendData.GroupID); if (list != null) { foreach (var item in list) { var userInfoDB = new mjuserinfoDAL().GetModel(item.GroupUserID); if (userInfoDB != null) { var groupUserInfo = GroupUserInfo.CreateBuilder(); groupUserInfo.SetGroupUserID(item.GroupUserID).SetNickName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(userInfoDB.nickname))) .SetPicture(userInfoDB.headimg).SetStatus(0); if (Gongyong.userlist.Any(w => w.UserID.Equals(item.GroupUserID))) { groupUserInfo.SetStatus(1); } if (RedisUtility.Get <RedisGameModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, userInfoDB.openid, userInfoDB.unionid)) != null) { groupUserInfo.SetStatus(2); } returnGroupInfo.AddUserList(groupUserInfo); } } var data = returnGroupInfo.SetStatus(1).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1035, data.Length, requestInfo.MessageNum, data))); return; } } var dataF = returnGroupInfo.SetStatus(0).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1035, dataF.Length, requestInfo.MessageNum, dataF))); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { List <GroupInfo> groupInfoList = new List <GroupInfo>(); var requestGroupInfo = SendGroupInfo.ParseFrom(requestInfo.Body); RedisUserInfoModel user = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, requestGroupInfo.Openid, requestGroupInfo.Unionid)); if (user == null) { session.Logger.Debug(string.Format("缓存无此用户{0}", string.IsNullOrEmpty(requestGroupInfo.Openid) ? "用户openid为空" : "")); return; } GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var list = groupInfoDAL.GetGroupIDListByUserID(user.UserID, user.Type); var returnGroupInfo = ReturnGroupInfo.CreateBuilder(); var GroupInfodata = GroupInfo.CreateBuilder(); Byte[] returnGroupInfoData = null; if (list == null || list.Count == 0) { returnGroupInfoData = returnGroupInfo.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1031, returnGroupInfoData.Length, requestInfo.MessageNum, returnGroupInfoData))); } else { foreach (var GroupID in list.Distinct()) { DAL.Model.GroupInfo groupInfoModel = groupInfoDAL.GetGroupInfoByGroupID(GroupID, user.Type); if (groupInfoModel != null) { if (groupInfoModel.CreateUserID == user.UserID) { GroupInfodata.SetGroupID(GroupID).SetGroupIntroduction(groupInfoModel.GroupIntroduction ?? "").SetGroupName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(groupInfoModel.GroupName))).SetNikeName(groupInfoModel.GroupName).SetRoomCardCounts(RoomCardUtility.GetRoomCard(groupInfoModel.CreateUserID)).SetCreateTime(TimeToLong.ConvertDateTimeInt(groupInfoModel.CreateTime)).SetIsGroupLord(true); returnGroupInfo.AddGroupInfo(GroupInfodata); //data.SetGroupInfo(1,GroupInfo) } else { GroupInfodata.SetGroupID(GroupID).SetGroupIntroduction(groupInfoModel.GroupIntroduction ?? "").SetGroupName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(groupInfoModel.GroupName))).SetNikeName(groupInfoModel.GroupName).SetRoomCardCounts(RoomCardUtility.GetRoomCard(groupInfoModel.CreateUserID)).SetCreateTime(TimeToLong.ConvertDateTimeInt(groupInfoModel.CreateTime)).SetIsGroupLord(false); returnGroupInfo.AddGroupInfo(GroupInfodata); } } } returnGroupInfoData = returnGroupInfo.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1031, returnGroupInfoData.Length, requestInfo.MessageNum, returnGroupInfoData))); } }
public int GetRoomID() { int roomid = 0; do { roomid = ran.Next(100000, 999999); Room rst = Gongyong.roomlist.Find(u => u.RoomID == roomid); RedisGameRoomInfo roominfo = RedisUtility.Get <RedisGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, roomid.ToString(), "")); if (roominfo == null) { break; } else if (roominfo.ServerName.Equals(GameInformationBase.serverName)) { break; } } while (true); return(roomid); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { //if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID))) //{ // session.Logger.Debug("非法连接"); // session.Close(); // return; //} var sendInfo = SendFeedback.ParseFrom(requestInfo.Body); RedisLoginModel olduser = RedisUtility.Get <RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, sendInfo.Openid, sendInfo.Unionid)); if (olduser == null) { session.Close(); return; } Feedback_log fb = new Feedback_log(); fb.UserID = sendInfo.UserID; fb.Title = sendInfo.Title; if (sendInfo.HasContent) { fb.Content = sendInfo.Content; } fb.Datetime = DateTime.Now; if (sendInfo.HasGameLog) { fb.GameLog = sendInfo.GameLog; } if (sendInfo.HasImage) { fb.image = sendInfo.Image; } new FeedbackDAL().Add(fb); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID))) { session.Logger.Debug("AddRoom : 非法连接"); session.Close(); return; } ///定义返回状态码 string staut = "10000"; var nowsend = ReturnAddRoom.CreateBuilder(); List <Userinfo> listuser = new List <Userinfo>(); ///当前返回信息 var getdata = SendAddRoom.ParseFrom(requestInfo.Body); ///根据上传信息查找房间 Room rm = Gongyong.roomlist.Find(u => u.RoomID == getdata.RoomID); var roommsg = ReturnRoomMsg.CreateBuilder(); //储存IP List <UserInfo> ListUserIP = new List <UserInfo>(); if (rm != null) { List <mjuser> mulist = Gongyong.mulist.FindAll(u => u.RoomID == getdata.RoomID); mjuser mjuser = Gongyong.mulist.Find(u => u.RoomID == getdata.RoomID && u.Openid == getdata.Openid); if (mulist.Count == rm.room_peo) { staut = "10002"; } else { List <int> shuzhu = new List <int>() { 1, 2, 3, 4 }; ///移除以坐的方位,并添加以有玩家信息 var senddata = ReturnUserInfo.CreateBuilder(); //for(int i=0;i< mulist.Count();i++) foreach (mjuser item in mulist) { UserInfo gamer = Gongyong.userlist.Find(u => u.openid == item.Openid); Userinfo users = Userinfo.CreateBuilder().SetHeadimg(gamer.headimg).SetNickname(gamer.nickname).SetOpenid(gamer.openid).SetSex(int.Parse(gamer.sex)).SetUserFW(item.ZS_Fw).SetUserBean(0).SetUserGold(0).SetUserID(gamer.UserID).SetUserIP(gamer.UserIP).Build(); listuser.Add(users); shuzhu.Remove(item.ZS_Fw); senddata.AddUserinfo(users); nowsend.AddUserinfo(users); } if (mjuser != null) { return; } else { ///添加新加入玩家信息 mjuser mj = new mjuser() { Openid = getdata.Openid, ZS_Fw = shuzhu[0], RoomID = getdata.RoomID, ConfirmationStarts = true, SendData = new List <ArraySegment <byte> >(), IsGuoHu = false }; Gongyong.mulist.Add(mj); } ///将当前的用户信息添加到下发文件包 UserInfo gameuser = Gongyong.userlist.Find(u => u.openid == getdata.Openid); gameuser.Lat = getdata.Latitude; Userinfo newuser = Userinfo.CreateBuilder().SetHeadimg(gameuser.headimg).SetNickname(gameuser.nickname).SetOpenid(gameuser.openid).SetSex(int.Parse(gameuser.sex)).SetUserFW(shuzhu[0]).SetUserGold(0).SetUserBean(0).SetUserID(gameuser.UserID).SetUserIP(gameuser.UserIP).Build(); listuser.Add(newuser); senddata.AddUserinfo(newuser); nowsend.AddUserinfo(newuser); List <mjuser> mu = Gongyong.mulist.FindAll(u => u.RoomID == getdata.RoomID); var dis = ReturnDis.CreateBuilder(); var closeGPS = ReturnCloseGPS.CreateBuilder(); ///向已有玩家下发信息 foreach (mjuser items in mu) { UserInfo gamersend = Gongyong.userlist.Find(u => u.openid == items.Openid); if (gamersend.Lat.Equals("0,0") || string.IsNullOrEmpty(gamersend.Lat)) { //Console.WriteLine("AddRoom : " + gamersend.session.Config.Ip + " lat 为 0"); //Console.WriteLine(" : " + mjuser.) closeGPS.AddFW(items.ZS_Fw); //gamersend.session.Send(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7091, dataGPS.Length, requestInfo.MessageNum, dataGPS))); } else if (gameuser.Lat.Equals("0,0") || string.IsNullOrEmpty(gameuser.Lat)) { if (items.Openid.Equals(gameuser.openid)) { //Console.WriteLine("AddRoom : " + gamersend.session.Config.Ip + " lat 为 0"); if (!closeGPS.FWList.Any(w => w == items.ZS_Fw)) { closeGPS.AddFW(items.ZS_Fw); } } } else { var userdis = ReturnDis.CreateBuilder(); //double jl = Erth.GetDistance(gamersend.Lat, gameuser.Lat); double jl = 1; // 测试修改 if (shuzhu[0] != items.ZS_Fw) { //if (jl < GameInformationBase.DISTANCE) if (jl < 0.001f) //任光粤测试修改 { Console.WriteLine("距离为 : " + jl + gamersend.nickname + ":" + gamersend.Lat + " , " + gameuser.nickname + " : " + gameuser.Lat); rm.Is_Jin = true; rm.Juser1 = shuzhu[0]; rm.Juser2 = items.ZS_Fw; } } dis.SetDis(jl.ToString()); dis.SetFW(items.ZS_Fw); userdis.SetFW(shuzhu[0]); userdis.SetDis(jl.ToString()); ListUserIP.Add(gamersend); byte[] dataMJ = userdis.Build().ToByteArray(); byte[] datauser = dis.Build().ToByteArray(); AppServer userserver = new AppServer(); gamersend.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7091, dataMJ.Length, requestInfo.MessageNum, dataMJ))); gameuser.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7091, datauser.Length, requestInfo.MessageNum, datauser))); } System.Threading.Thread.Sleep(100); byte[] data = senddata.Build().ToByteArray(); gamersend.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2005, data.Length, requestInfo.MessageNum, data))); ///如果人数满足,下发游戏开始信息 if (mu.Count == rm.room_peo) { //牌局回放保存用户信息 rm.gameOperationProcess.SetUserInfo(senddata); foreach (var item in Gongyong.mulist.FindAll(u => u.RoomID == rm.RoomID)) { if (!item.ConfirmationStarts) { rm.startgame = 2; } } rm.startgame = rm.startgame == 2 ? 0 : 1; //ReturnStart startgame = ReturnStart.CreateBuilder().SetStart(1).Build(); //byte[] bstart = startgame.ToByteArray(); //gamersend.session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2008, bstart.Length, requestInfo.MessageNum, bstart))); } } if (closeGPS.FWCount > 0) { foreach (mjuser items in mu) { var dataGPS = closeGPS.Build().ToByteArray(); UserInfo gamersend = Gongyong.userlist.Find(u => u.openid == items.Openid); gamersend.session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7097, dataGPS.Length, requestInfo.MessageNum, dataGPS))); } } } } else { staut = "10001"; } ///判断房间不为空 发生房间信息 if (rm != null) { roommsg.SetCount(rm.count) .SetIsBenji(rm.is_benji == true ? 1 : 0) .SetIsShangxiaji(rm.is_shangxiaji == true ? 1 : 0) .SetIsWgj(rm.is_wgj == true ? 1 : 0) .SetIsXinqiji(rm.is_xinqiji == true ? 1 : 0) .SetIsYikousan(rm.is_yikousan == true ? 1 : 0) .SetRoomPeo(rm.room_peo) .SetIsLianzhuang(rm.is_lianz == true ? 1 : 0) .SetIsYuanque(rm.IsYuanQue ? 1 : 0) .SetQuickCard(rm.QuickCard?1:0); byte[] roommsgb = roommsg.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7003, roommsgb.Length, requestInfo.MessageNum, roommsgb))); } System.Threading.Thread.Sleep(100); nowsend.SetState(int.Parse(staut)); byte[] datanew = nowsend.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2004, datanew.Length, requestInfo.MessageNum, datanew))); //如果有玩家距离过近,提醒牌桌所有用户,并接受确认 if (rm.Is_Jin) { byte[] jusers = ReturnIsJ.CreateBuilder().SetFWO(rm.Juser1).SetFWW(rm.Juser2).Build().ToByteArray(); rm.startgame = 0; SendRoomAllUser(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7092, jusers.Length, requestInfo.MessageNum, jusers)), getdata.RoomID); } List <UserInfo> waringList = new List <UserInfo>(); //如果有玩家IP一样 foreach (var item in ListUserIP) { if (ListUserIP.Where(w => w.UserIP.Equals(item.UserIP)).Count() > 1) { waringList.Add(item); } } if (waringList.Count > 1) { var ipSame = ReturnIPSame.CreateBuilder(); foreach (var item in ListUserIP) { var userInfo = Gongyong.mulist.First(w => w.Openid.Equals(item.openid)); if (userInfo != null) { ipSame.AddFW(userInfo.ZS_Fw); } } var jusers = ipSame.Build().ToByteArray(); rm.startgame = 0; SendRoomAllUser(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7093, jusers.Length, requestInfo.MessageNum, jusers)), getdata.RoomID); } rm.gameOperationProcess.SetMessage(roommsg);//牌局回放保存房间信息 session.Logger.Debug("用户请求加入房间:" + getdata.RoomID + ",openid:" + getdata.Openid + "----------" + DateTime.Now); if (rm.startgame == 1) { //将牌桌信息保存 RedisUtility.Set <RedisGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, rm.RoomID.ToString(), ""), new RedisGameRoomInfo { room = rm, ServerName = GameInformationBase.serverName }); foreach (var item in Gongyong.mulist.FindAll(u => u.RoomID == rm.RoomID)) { if (!item.ConfirmationStarts) { return; } } session.Logger.Debug("发牌"); ///查找当前玩家集合 List <mjuser> mjList = Gongyong.mulist.FindAll(u => u.RoomID == rm.RoomID); CardsLogic logic = new CardsLogic(); int number = 0;//发牌次数,从0开始计数 //根据 ///获取房主信息 /// string homeownerOpenid = ""; foreach (var item in mjList) { if (item.IsHomeowner) { //如果是房主,记录该房主的openid homeownerOpenid = item.Openid; } } var roominfodal = new RoomInfoDAL(); var createuserid = roominfodal.GetCreateUserIdByRoomId(rm.RoomID); //var groupid = roominfodal.GetGroupInfoByGroupID(createuserid); var groupid = rm.GroupID; //不是圈子用户,直接进行扣费 if (groupid == 0) { RoomCardUtility.ReduceRoomCard(createuserid, (rm.count / 4) * 1); } else { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var creategroupuderid = groupInfoDAL.GetUserIDByGuoupID(groupid); var reducecount = (rm.count / 8) * 1; RoomCardUtility.ReduceRoomCard(creategroupuderid, reducecount); ////向日志里面添加朋友圈耗卡信息 groupInfoDAL.AddCreateRoomRecord(creategroupuderid, groupid, rm.RoomID, reducecount); } var dcount = rm.Dcount; foreach (var item in mjList) { ReturnStartGame.Builder sendmj = ReturnStartGame.CreateBuilder(); ReturnGang.Builder ReturnGangMSG = ReturnGang.CreateBuilder(); List <model.ServerMaJiang> Ruturnjsmj = new List <model.ServerMaJiang>(); item.paixinfs = 5; Gongyong.mulist.Remove(item); if (rm.IsYuanQue) { item.QYM = 3; } logic.GetMyCards(requestInfo, sendmj, ReturnGangMSG, Ruturnjsmj, session, rm.RoomID, item, item.Openid, ref dcount); } } }
// public string Name => "CreateRoom"; public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID))) { session.Logger.Debug("CreateRoom : 非法连接"); session.Close(); return; } session.Logger.Debug("创建sssionID--------" + session.SessionID); var info = SendCreateRoom.ParseFrom(requestInfo.Body); ///当前用户信息 UserInfo user = Gongyong.userlist.Find(u => u.openid.Equals(info.Openid)); if (user == null) { session.Logger.Debug("CREATEROOM user == nulll"); session.Close(); return; } if (Gongyong.mulist.Any(w => w.Openid.Equals(info.Openid))) { var muInfo = Gongyong.mulist.Find(w => w.Openid.Equals(info.Openid)); if (Gongyong.roomlist.Any(w => w.RoomID == muInfo.RoomID)) { // ReturnServerIP.CreateBuilder().SetIp } else { Gongyong.mulist.Remove(muInfo); } } ///更具房间信息创建房间 int roomid = GetRoomID(); if (info.Count != 8 && info.Count != 16 && info.Count != 32) { return; } Room room = new Room() { count = info.Count, //count = 1, is_benji = info.IsBenji == 1 ? true : false, is_wgj = info.IsWgj == 1 ? true : false, is_xinqiji = info.IsXinqiji == 1 ? true : false, is_yikousan = info.IsYikousan == 1 ? true : false, is_shangxiaji = info.IsShangxiaji == 1 ? true : false, room_peo = info.RoomPeo, Dcount = 1, RoomID = roomid, GroupID = info.GroupID, startgame = 0, is_lianz = info.IsYikousan == 3 ? true : false, CreateDate = DateTime.Now, IsYuanQue = info.HasRoomPeo ? (info.RoomPeo == 4 ? false : (info.HasIsYuanque ? info.IsYuanque == 1 : false)) : false, //如果是4人桌 不能是原缺。 QuickCard = info.HasQuickCard ? (info.QuickCard == 1) : false //十秒快速出牌 // RoomPai = new CreateMj().CreateMJ() }; //Console.WriteLine("roomid : " + roomid); try { new RoomInfoDAL().Add(CardsLogic.SetRoomInfoTb(room, user.UserID), info.GroupID); } catch (Exception ex) { session.Logger.Error(ex); } Gongyong.roomlist.Add(room); user.Lat = info.Latitude; //将用户游戏信息更新 RedisUtility.Set <RedisGameModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid), new RedisGameModel { Openid = user.openid, RoomID = roomid, ServerName = GameInformationBase.serverName, Unionid = user.unionid }); //将牌桌信息保存 RedisUtility.Set <RedisGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, roomid.ToString(), ""), new RedisGameRoomInfo { room = room, ServerName = GameInformationBase.serverName }); ///麻将玩家操作类 mjuser mu = new mjuser() { ZS_Fw = 1, Openid = user.openid, RoomID = roomid, SendData = new List <ArraySegment <byte> >(), ConfirmationStarts = true, IsGuoHu = false }; Gongyong.mulist.Add(mu); if (mu.ByteData == requestInfo.Key) { return; } else { mu.ByteData = requestInfo.Key; } mu.IsHomeowner = true; ///当前返回用户信息 Userinfo uinfo = Userinfo.CreateBuilder().SetHeadimg(user.headimg).SetNickname(user.nickname).SetOpenid(user.openid).SetSex(int.Parse(user.sex)).SetUserFW(1).SetUserBean(0).SetUserGold(0).SetUserID(user.UserID).SetUserIP(user.UserIP).Build(); ///返回数值 ReturnCreateRoom cr = ReturnCreateRoom.CreateBuilder().SetRoomID(roomid).SetUserinfo(uinfo).Build(); byte[] data = cr.ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 2002, data.Length, requestInfo.MessageNum, data))); var roommsg = ReturnRoomMsg.CreateBuilder(); roommsg.SetCount(room.count).SetIsBenji(room.is_benji ? 1 : 0) .SetIsShangxiaji(room.is_shangxiaji ? 1 : 0) .SetIsWgj(room.is_wgj ? 1 : 0) .SetIsXinqiji(room.is_xinqiji ? 1 : 0) .SetIsYikousan(room.is_yikousan ? 1 : 0).SetRoomPeo(room.room_peo) .SetIsLianzhuang(room.is_lianz ? 1 : 0) .SetIsYuanque(room.IsYuanQue ? 1 : 0) .SetQuickCard(room.QuickCard ? 1 : 0) ; byte[] roommsgb = roommsg.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7003, roommsgb.Length, requestInfo.MessageNum, roommsgb))); session.Logger.Debug("参数data" + cr + "----------" + DateTime.Now); session.Logger.Debug("当前用户创建房间----" + roomid + "------" + DateTime.Now); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { string userWinLose = string.Empty;//玩家输赢记录。房间信息表 if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID))) { session.Logger.Debug("GetH : 非法连接"); session.Close(); return; } var getdata = SendHu.ParseFrom(requestInfo.Body); Room r = Gongyong.roomlist.Find(u => u.RoomID == getdata.Roomid); if (r == null) { return; } if (!r.Is_Hu) { session.Logger.Debug("房间并无胡牌"); return; } ThreadUtility.RemoveManagedThreadByRoomID(r.RoomID); CardUser card = Gongyong.FKUser.Find(u => u.roomid == getdata.Roomid); model.ServerMaJiang mjfh = new model.ServerMaJiang(); var jp = ReturnFJ.CreateBuilder(); var muuser = Gongyong.mulist.Find(u => u.Openid.Equals(getdata.Openid) && u.RoomID == getdata.Roomid); if (muuser == null) { return; } muuser.Is_jiao = true; if (muuser.ByteData == requestInfo.Key) { return; } else { muuser.ByteData = requestInfo.Key; } var huType = ReturnHType.CreateBuilder().SetFWZ(getdata.FWZ).SetFWB(getdata.FWB).SetMJ(getdata.MJ).SetType(getdata.Type); if (getdata.DXInfoCount > 1) { huType.AddRangeDXInfo(getdata.DXInfoList); } byte[] HType = huType.Build().ToByteArray(); if (getdata.Type != 1 && getdata.Type != 5) { model.ServerMaJiang mjh = new model.ServerMaJiang() { PaiHs = getdata.MJ.PaiHS, PaiId = getdata.MJ.PaiID }; var roomUsers = Gongyong.mulist.FindAll(u => u.RoomID == getdata.Roomid); if (getdata.DXInfoCount > 1) { for (int i = 0; i < getdata.DXInfoList.Count; i++) { foreach (var item in roomUsers) { if (item.ZS_Fw == getdata.DXInfoList[i].DXFW)//如果当期玩家为一炮多响的玩家之一,则在手牌中加上 放炮的牌 { item.majiangs.Add(mjh); } } } } else { roomUsers.Find(u => u.ZS_Fw == getdata.FWZ).majiangs.Add(mjh); } } if (getdata.Type == 1 || getdata.Type == 5) { Gongyong.mulist.Find(u => u.ZS_Fw == getdata.FWZ && u.RoomID == getdata.Roomid).zm_count += 1; } else { var mjInfo = Gongyong.mulist.Find(u => u.ZS_Fw == getdata.FWB && u.RoomID == getdata.Roomid); mjInfo.dp_count += 1; mjInfo.chuda.RemoveAll(w => w.PaiHs == getdata.MJ.PaiHS && w.PaiId == getdata.MJ.PaiID); } ///没有翻鸡牌 if (r.RoomPai.Count == 0) { mjfh.PaiHs = -1; mjfh.PaiId = 0; } else { mjfh = r.RoomPai[0]; } jp.SetHS(mjfh.PaiHs); ///清除牌 r.RoomPai.Clear(); List <mjuser> mjlist = Gongyong.mulist.FindAll(u => u.RoomID == getdata.Roomid); var settle = ReturnJS.CreateBuilder(); var returnallmj = ReturnUserSPai.CreateBuilder(); List <UserSettle> listjs = new List <UserSettle>(); listjs = new Ting().Settle(r.RoomID, mjfh, getdata); var senddjs = ReturnDJS.CreateBuilder(); if (getdata.DXInfoCount <= 1) { if (getdata.FWZ != card.win) { card.win = getdata.FWZ; card.lianzCount = 1; } else// (getdata.FWZ == card.win) { card.lianzCount += 1; } } else {//连庄情况 ,庄家放炮,胡牌的庄, 一炮多响情况 就是 胡牌的最近的人是庄 //一炮多响非连庄, 谁放炮 谁是庄 if (r.is_lianz) { int zhuang = 0; if (getdata.FWB == card.win) { if (getdata.FWB == 4) { zhuang = 1; } else { zhuang = getdata.FWB + 1; } for (int i = 1; i <= 4; i++) { if (getdata.FWB == 4) { zhuang = 1; } if (getdata.DXInfoList.Any(w => w.DXFW == zhuang)) { card.win = zhuang; break; } zhuang++; } } else { card.lianzCount += 1; } } else { card.win = getdata.FWB; } //非连庄谁放炮谁 是庄 } foreach (var item in mjlist) { var jsddr = UserAJS.CreateBuilder(); #region 旧代码 //if (item.ZS_Fw == getdata.FWZ) //{ // ///判断清一色 // //if (item.majiangs[item.majiangs.Count - 1].PaiHs - item.majiangs[0].PaiHs < 8) // //{ // // int paihs = item.majiangs[0].PaiHs; // // int qyshs = 0; // // int qy = 0; // // if (paihs < 10) // // { // // qyshs = 1; // // } // // else if (paihs > 10 && paihs < 20) // // { // // qyshs = 2; // // } // // else // // { // // qyshs = 3; // // } // // switch (qyshs) // // { // // case 1: // // int count = item.Peng.FindAll(u => u.PaiHs > 10).Count; // // if (count > 0) // // { // // qy++; // // } // // if (!string.IsNullOrEmpty(item.Gong)) // // { // // string gong = string.Copy(item.Gong); // // string[] arr = gong.Remove(gong.Length - 1, 1).Split(','); // // foreach (var itemgong in arr) // // { // // if (int.Parse(itemgong[0].ToString()) > 10) // // { // // qy++; // // } // // } // // } // // break; // // case 2: // // int countt = item.Peng.FindAll(u => u.PaiHs < 10 || u.PaiHs > 20).Count; // // if (countt > 0) // // { // // qy++; // // } // // if (!string.IsNullOrEmpty(item.Gong)) // // { // // string gong = string.Copy(item.Gong); // // string[] arr = gong.Remove(gong.Length - 1, 1).Split(','); // // foreach (var itemgong in arr) // // { // // if (int.Parse(itemgong[0].ToString()) < 10 || int.Parse(itemgong[0].ToString()) > 20) // // { // // qy++; // // } // // } // // } // // break; // // case 3: // // int countw = item.Peng.FindAll(u => u.PaiHs < 20).Count; // // if (countw > 0) // // { // // qy++; // // } // // if (!string.IsNullOrEmpty(item.Gong)) // // { // // string gong = string.Copy(item.Gong); // // string[] arr = gong.Remove(gong.Length - 1, 1).Split(','); // // foreach (var itemgong in arr) // // { // // if (int.Parse(itemgong[0].ToString()) < 20) // // { // // qy++; // // } // // } // // } // // break; // // default: // // break; // // } // // if (qy == 0) // // { // // item.paixinfs = 10; // // } // //} //} #endregion UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid); var usermjs = UserSPai.CreateBuilder(); usermjs.SetFw(item.ZS_Fw); var returnmj = MaJiang.CreateBuilder(); foreach (var itemmj in item.majiangs) { returnmj.SetPaiHS(itemmj.PaiHs); returnmj.SetPaiID(itemmj.PaiId); usermjs.AddMj(returnmj); } returnallmj.AddUsp(usermjs); UserInfo gamer = Gongyong.userlist.Find(u => u.openid == item.Openid); var users = Userinfo.CreateBuilder().SetHeadimg(gamer.headimg).SetNickname(gamer.nickname).SetOpenid(gamer.openid).SetSex(int.Parse(gamer.sex)).SetUserFW(item.ZS_Fw).SetUserBean(0).SetUserGold(0).SetUserID(gamer.UserID).Build(); ///分数加减 foreach (var items in listjs) { if (items.openid == item.Openid) { var usersone = UserJS.CreateBuilder(); foreach (var itrmj in items.jp) { var jpone = JiPaiF.CreateBuilder().SetPaiHS(itrmj.PaiHS).SetType(itrmj.type).SetCount(itrmj.PaiScare); usersone.AddJp(jpone); } foreach (var itemD in items.gang) { var jpdou = Dou.CreateBuilder().SetCount(itemD.DScare).SetType(itemD.DType); usersone.AddDc(jpdou); } if (getdata.HasFWB) { var info = mjlist.Find(w => w.ZS_Fw == getdata.FWB && w.Openid.Equals(items.openid)); if (info != null) { if (items.pai_type != 11) { items.pai_type = 11; } } } usersone.SetIsPao(items.pai_type); usersone.SetIsJiao(items.is_jiao); usersone.SetFS(items.scare); usersone.SetUserinfo(users); usersone.SetDyFs(items.dy_fs); var HuLeiXin = getdata.DXInfoList.FirstOrDefault(w => w.DXFW == item.ZS_Fw); if (HuLeiXin != null) { usersone.SetHuType(HuLeiXin.DXType); } settle.AddJs(usersone); switch (item.ZS_Fw) { case 1: card.dong += items.scare; break; case 2: card.nan += items.scare; break; case 3: card.xi += items.scare; break; case 4: card.bei += items.scare; break; default: break; } } } ///牌局结束,返回大结算 if (r.Dcount == r.count) { new CardsLogic().Clear(item, r); jsddr.SetUser(users); jsddr.SetZdou(item.zwd_count); jsddr.SetZimo(item.zm_count); jsddr.SetAndou(item.ad_count); jsddr.SetMdou(item.MD_count); jsddr.SetDianpao(item.dp_count); //switch (item.ZS_Fw) //{ // case 1: // jsddr.SetScare(card.dong); // break; // case 2: // jsddr.SetScare(card.nan); // break; // case 3: // jsddr.SetScare(card.xi); // break; // case 4: // jsddr.SetScare(card.bei); // break; // default: // break; //} jsddr.SetScare(card.GetScoreByPosition(item.ZS_Fw)); senddjs.AddUserjs(jsddr); senddjs.SetState(1); RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, gamer.openid, gamer.unionid)); if (!string.IsNullOrEmpty(userWinLose)) { userWinLose += "|"; } userWinLose += user.UserID + "," + jsddr.Scare; } } //牌局回放 翻鸡 var gameOperationInfoFJ = GameOperationInfo.CreateBuilder().AddMJ(MaJiang.CreateBuilder().SetPaiHS(jp.HS).SetPaiID(0)).SetOperationType(9); StringBuilder logtxt = new StringBuilder(); logtxt.Append("胡牌" + getdata.ToString()); foreach (var item in mjlist) { item.SendData.Clear(); logtxt.Append(string.Join(",", item.majiangs.Select(w => w.PaiHs))); UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid); var sendData5021 = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5021, HType.Length, requestInfo.MessageNum, HType)); item.SendData.Add(sendData5021); byte[] allsp = returnallmj.Build().ToByteArray(); byte[] jpr = jp.Build().ToByteArray(); //7005 返回翻鸡牌 var sendData7005 = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7005, jpr.Length, requestInfo.MessageNum, jpr)); item.SendData.Add(sendData7005); //7008 : 玩家手牌集合 var sendData7008 = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7008, allsp.Length, requestInfo.MessageNum, allsp)); item.SendData.Add(sendData7008); byte[] settlebyte = settle.Build().ToByteArray(); r.gameOperationProcess.SetJieSuanInfo(ByteString.CopyFrom(settlebyte)); //7009 : 返回结算信息(全体) var sendData = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7009, settlebyte.Length, requestInfo.MessageNum, settlebyte)); item.SendData.Add(sendData); if (r.Dcount == r.count) { byte[] senddjsbyte = senddjs.Build().ToByteArray(); //5014 : 大结算信息 var sendData5014 = new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5014, senddjsbyte.Length, requestInfo.MessageNum, senddjsbyte)); item.SendData.Add(sendData5014); } foreach (var senddata in item.SendData) { user.session.TrySend(senddata); } } session.Logger.Debug(logtxt); //牌局回放 胡牌 var gameOperationInfo = GameOperationInfo.CreateBuilder() .SetSerialNumber(r.gameOperationProcess.GameOperationInfoCount) .SetOperationFW(huType.FWZ) .SetOperationType(5) .SetTingHuType(muuser.Is_tianHu ? 1 : 0) .SetPaoFW(huType.FWB); if (getdata.DXInfoCount > 1) { gameOperationInfo.AddRangeDXInfo(getdata.DXInfoList); } r.gameOperationProcess.AddGameOperationInfo(gameOperationInfo); gameOperationInfoFJ.SetSerialNumber(r.gameOperationProcess.GameOperationInfoCount).SetOperationFW(0); r.gameOperationProcess.AddGameOperationInfo(gameOperationInfoFJ); try { CardsLogic.AddboarddetailsTB(r); } catch (Exception ex) { session.Logger.Error(ex); } ///对局结束 清空所有信息 if (r.Dcount == r.count) { Gongyong.mulist.RemoveAll(u => u.RoomID == r.RoomID); Gongyong.FKUser.RemoveAll(u => u.roomid == r.RoomID); Gongyong.roomlist.RemoveAll(u => u.RoomID == r.RoomID); RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, r.RoomID.ToString(), "")); new RoomInfoDAL().UpdateEndRoomInfoByRoomInfoID(new RoomInfo { RoomInfoID = r.RoomInfoID, EndTime = DateTime.Now, EndStatus = 0, UserWinLose = userWinLose }); foreach (var item in mjlist) { UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid); new userRecordLOGDAL().Add(new userRecordlogLOG { UserID = user.UserID, RoomInfoID = r.RoomInfoID, UserWinLose = userWinLose, EndTime = DateTime.Now, CreateDate = r.CreateDate, RoomID = r.RoomID }); } r.startgame = 0; } else { if (r != null) { r.RoomPai = new CreateMj().CreateMJ(r.IsYuanQue); r.Dcount += 1; r.startgame = 2; } } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var sendLobbyInfo = SendLobbyInfo.ParseFrom(requestInfo.Body); DAL.DAL.RoomInfoDAL roomInfoDAL = new DAL.DAL.RoomInfoDAL(); byte[] returnLobbyInfoData = null; var returnLobbyInfo = ReturnLobbyInfo.CreateBuilder(); //var roomInfo = RoomInfo.CreateBuilder(); var roomIDList = roomInfoDAL.GetroomInfoByGroupID(sendLobbyInfo.GroupID); foreach (var item in roomIDList) { //获取房间信息 RedisGameRoomInfo redisRoomInfo = RedisUtility.Get <RedisGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, item.ToString(), item.ToString())); if (redisRoomInfo != null) { var roomInfo = LobbyRoomInfo.CreateBuilder(); roomInfo.SetRoomID(redisRoomInfo.room.RoomID).SetCreateDate(TimeToLong.ConvertDateTimeInt(redisRoomInfo.room.CreateDate)).SetIsWgj(redisRoomInfo.room.is_wgj ? 1 : 0).SetIsXinqiji(redisRoomInfo.room.is_xinqiji ? 1 : 0) .SetIsShangxiaji(redisRoomInfo.room.is_shangxiaji ? 1 : 0).SetIsBenji(redisRoomInfo.room.is_benji ? 1 : 0).SetIsYikousan(redisRoomInfo.room.is_yikousan ? 1 : 0).SetIsLianzhuang(redisRoomInfo.room.is_lianz ? 1 : 0) .SetRoomPeo(redisRoomInfo.room.room_peo).SetCount(redisRoomInfo.room.count).SetQuickCard(redisRoomInfo.room.QuickCard ? 1 : 0).SetIsYuanQue(redisRoomInfo.room.IsYuanQue ? 1 : 0); //获取房间里用户信息 foreach (var userOpenid in redisRoomInfo.room.listOpenid) { var player = Player.CreateBuilder(); RedisUserInfoModel user = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, userOpenid, string.Empty)); player.SetGroupUserID(user.UserID).SetNickName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(user.Nickname))).SetPicture(user.Headimg); roomInfo.AddPlayerList(player); } returnLobbyInfo.AddRoomListInfo(roomInfo); } } returnLobbyInfoData = returnLobbyInfo.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1081, returnLobbyInfoData.Length, requestInfo.MessageNum, returnLobbyInfoData))); }
/// <summary> /// 解散牌桌 /// </summary> /// <param name="roomId"></param> /// <param name="MessageNum"></param> public void DisbandTable(object state) { var countdownInfo = state as CountdownInfo; RoomClear r = Gongyong.roomclear.Find(u => u.RoomID == countdownInfo.roomID); if (r == null) { return; } ThreadUtility.RemoveManagedThreadByRoomID(countdownInfo.roomID);//取消托管 List <mjuser> listmj = Gongyong.mulist.FindAll(u => u.RoomID == countdownInfo.roomID); var senddjs = ReturnDJS.CreateBuilder(); CardUser card = Gongyong.FKUser.Find(u => u.roomid == countdownInfo.roomID); string userWinLose = string.Empty; foreach (var item in listmj) { UserInfo gamer = Gongyong.userlist.Find(u => u.openid == item.Openid); if (gamer == null) { continue; } var users = Userinfo.CreateBuilder().SetHeadimg(gamer.headimg).SetNickname(gamer.nickname).SetOpenid(gamer.openid).SetSex(int.Parse(gamer.sex)).SetUserFW(item.ZS_Fw).SetUserBean(0).SetUserGold(0).SetUserID(gamer.UserID).Build(); var jsddr = UserAJS.CreateBuilder(); jsddr.SetUser(users); jsddr.SetZdou(item.zwd_count); jsddr.SetZimo(item.zm_count); jsddr.SetAndou(item.ad_count); jsddr.SetMdou(item.MD_count); jsddr.SetDianpao(item.dp_count); switch (item.ZS_Fw) { case 1: jsddr.SetScare(card == null ? 0 : card.dong); break; case 2: jsddr.SetScare(card == null ? 0 : card.nan); break; case 3: jsddr.SetScare(card == null ? 0 : card.xi); break; case 4: jsddr.SetScare(card == null ? 0 : card.bei); break; default: break; } senddjs.AddUserjs(jsddr); senddjs.SetState(2); if (!string.IsNullOrEmpty(userWinLose)) { userWinLose += "|"; } userWinLose += gamer.UserID + "," + jsddr.Scare; } senddjs.SetState(2); Gongyong.mulist.RemoveAll(u => u.RoomID == countdownInfo.roomID); var roomInfo = Gongyong.roomlist.Find(w => w.RoomID == countdownInfo.roomID); Gongyong.roomlist.RemoveAll(u => u.RoomID == countdownInfo.roomID); var alldata = ReturnAllIdea.CreateBuilder().SetState(1).SetMessgaeType(3).Build(); byte[] bytesss = alldata.ToByteArray(); byte[] bsenddjs = senddjs.Build().ToByteArray(); foreach (var item in listmj) { UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid); if (user != null) { user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5007, bytesss.Length, countdownInfo.MessageNum, bytesss)));//yi user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5014, bsenddjs.Length, countdownInfo.MessageNum, bsenddjs))); RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid)); } } foreach (var item in Gongyong.msg.FindAll(w => w.RoomID == r.RoomID)) { Gongyong.msg.Remove(item); } RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, r.RoomID.ToString(), "")); new RoomInfoDAL().UpdateEndRoomInfoByRoomInfoID(new RoomInfo { RoomInfoID = roomInfo.RoomInfoID, EndTime = DateTime.Now, EndStatus = 3, UserWinLose = userWinLose }); foreach (var item in listmj) { UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid); new userRecordLOGDAL().Add(new userRecordlogLOG { UserID = user.UserID, RoomInfoID = roomInfo.RoomInfoID, UserWinLose = userWinLose, EndTime = DateTime.Now, CreateDate = roomInfo.CreateDate, RoomID = r.RoomID }); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var userInfo = SendGetUserRecord.ParseFrom(requestInfo.Body); RedisLoginModel olduser = RedisUtility.Get <RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, userInfo.Openid, userInfo.Unionid)); if (olduser == null) { return; } var list = new userRecordLOGDAL().Get48hourInfoByUserID(userInfo.UserID, userInfo.HasGroupID? userInfo.GroupID:0); var userinfoDAL = new mjuserinfoDAL(); var returnUserRecord = ReturnUserRecord.CreateBuilder(); long userid; foreach (var item in list) { var userRecord = UserRecord.CreateBuilder(); userRecord.SetRoomInfoID(item.RoomInfoID); userRecord.SetCreateDate(TimeToLong.ConvertDateTimeInt(item.CreateDate)); userRecord.SetEndTime(TimeToLong.ConvertDateTimeInt(item.EndTime)); userRecord.SetUserID(item.CreateUserID);//需要显示房主标签 userRecord.SetRoomMsg( ReturnRoomMsg.CreateBuilder() .SetCount(item.RoomNumber) .SetIsBenji(item.IsBenJi) .SetIsLianzhuang(item.CountPointsType == 3 ? 1 : 0) .SetIsShangxiaji(item.IsSangXiaJi) .SetIsWgj(item.IsWGJ) .SetIsXinqiji(item.IsXinQiJi) .SetIsYikousan(item.CountPointsType == 1 ? 1 : 0) .SetIsYuanque(item.IsYuanQue) .SetQuickCard(item.QuickCard) .SetRoomPeo(item.RoomPeo) ); foreach (var userWinLose in item.UserWinLose.Split('|')) { long userID = 0; string[] info = userWinLose.Split(','); if (long.TryParse(info[0], out userID)) { if (userRecord.RecordUserInfoList.Any(w => w.UserID == userID)) { var userInfoData = userRecord.RecordUserInfoList.First(w => w.UserID == userID); userRecord.AddRecordUserInfo(RecordUserInfo.CreateBuilder() .SetHeadimg(userInfoData.Headimg) .SetNickname(HttpUtility.UrlDecode(HttpUtility.UrlDecode(userInfoData.Nickname))) .SetOpenid(userInfoData.Openid) .SetScore(info[1]) .SetSex(userInfoData.Sex) .SetUserID(userInfoData.UserID)); } else { var userInfoData = userinfoDAL.GetModel(userID); userRecord.AddRecordUserInfo(RecordUserInfo.CreateBuilder() .SetHeadimg(userInfoData.headimg) .SetNickname(HttpUtility.UrlDecode(HttpUtility.UrlDecode(userInfoData.nickname))) .SetOpenid(userInfoData.openid) .SetScore(info[1]) .SetSex(userInfoData.sex.Value) .SetUserID(userInfoData.id)); } } } returnUserRecord.AddUserRecord(userRecord); } var data = returnUserRecord.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 9002, data.Length, requestInfo.MessageNum, data))); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var requestUsersManager = SendGroupUsersManager.ParseFrom(requestInfo.Body); // RedisUserInfoModel user = RedisUtility.Get<RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, requestUsersManager.Openid, requestUsersManager.Unionid)); var nowUser = Gongyong.userlist.First(w => w != null && w.unionid.Equals(requestUsersManager.Unionid)); if (nowUser == null) { session.Logger.Debug("管理朋友圈用户 未登录!"); return; } var player = Player.CreateBuilder(); var returnPlayerList = ReturnPlayerList.CreateBuilder(); var list = groupInfoDAL.GetUsersIDListByGroupID(requestUsersManager.GroupID); byte[] returnMessage = null; var groupInfo = groupInfoDAL.GetGroupInfoByGroupID(requestUsersManager.GroupID, nowUser.Type); if (nowUser.Type == 0) { if (groupInfo.CreateUserID != nowUser.UserID) { session.Logger.Debug("管理朋友圈用户不是圈主!"); return; } } else if (nowUser.Type == 1)//龙宝用户 { if (!groupInfo.CreateUserUnionID.Equals(nowUser.unionid)) { session.Logger.Debug("管理朋友圈用户不是圈主!"); return; } } //删除用户 if (requestUsersManager.HasDelByUserID && !requestUsersManager.HasAddUsers) { if (groupInfo.CreateUserID == requestUsersManager.DelByUserID) { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("群主不能删除自己").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); return; } else { // groupInfoDAL.DelUsersByUserID(requestUsersManager.GroupID, requestUsersManager.DelByUserID); groupInfoDAL.DelUsersByUserIDTransaction(requestUsersManager.GroupID, requestUsersManager.DelByUserID, 3, requestUsersManager.DelByUserID); returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage(string.Format("删除用户{0}成功", requestUsersManager.DelByUserID)).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); return; } } //添加用户 else if (!requestUsersManager.HasDelByUserID && requestUsersManager.HasAddUsers) { //加入类型,1圈主添加,2申请加入,3推荐加入 // byte[] returnMessage = null; //var groupInfo = groupInfoDAL.GetGroupInfoByGroupID(requestUsersManager.GroupID); //if (groupInfo.CreateUserID == requestUsersManager.AddUsers) //{ // returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("添加失败").Build().ToByteArray(); // session.Send(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); // return; //} if (new DAL.DAL.mjuserinfoDAL().GetModel(requestUsersManager.AddUsers) != null) { var err = groupInfoDAL.AddUserToGroup(requestUsersManager.GroupID, requestUsersManager.AddUsers, 1); if (err == 0) { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("添加失败,已存在该用户").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); } else { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(1).SetMessage("添加成功").Build().ToByteArray(); //添加成狗后把用户丢到RedisUs 避免需重复登陆问题 RedisUserInfoModel user = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, requestUsersManager.AddUsers.ToString(), requestUsersManager.AddUsers.ToString())); if (user != null) { user.GroupID.Add((int)requestUsersManager.GroupID); RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, user.Openid, user.Unionid), user); var userInfo = Gongyong.userlist.Find(w => w.UserID == user.UserID); if (userInfo != null) { userInfo.GroupID.Add((int)requestUsersManager.GroupID); } } session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); } } else { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("无此用户").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); return; } return; } else if (requestUsersManager.HasCheckRecordByUserID) { var createRommRecord = CreateRommRecord.CreateBuilder(); var returnRecordList = ReturnRecordList.CreateBuilder(); var listRecord = groupInfoDAL.GetCreateRoomRecord(requestUsersManager.CheckRecordByUserID, requestUsersManager.GroupID); foreach (var item in listRecord) { createRommRecord.SetGroupID(item.GroupID).SetRoomID(item.RoomID).SetCreateUserID(item.CreateUserID).SetCreateDate(TimeToLong.ConvertDateTimeInt(item.CreateDate)).SetUseRoomCard(item.UseRoomCard); returnRecordList.AddCreateRommRecordList(createRommRecord); } session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1052, returnRecordList.Build().ToByteArray().Length, requestInfo.MessageNum, returnRecordList.Build().ToByteArray()))); // session.Close(); return; } foreach (var userID in list) { DAL.Model.mjuserinfo userinfo = new DAL.DAL.mjuserinfoDAL().GetModel(userID); if (userinfo == null) { groupInfoDAL.DelUsersByUserID(requestUsersManager.GroupID, userID); } else { player.SetGroupUserID(userID).SetNickName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(userinfo.nickname))).SetPicture(userinfo.headimg); returnPlayerList.AddPlayerList(player); } } //返回待审核人数 int counts = groupInfoDAL.GroupApplyRecord(requestUsersManager.GroupID).Count(); returnPlayerList.SetApplyUsers(counts); var returnPlayerListData = returnPlayerList.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1051, returnPlayerListData.Length, requestInfo.MessageNum, returnPlayerListData))); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var gameOperation = SendGameOperation.ParseFrom(requestInfo.Body); RedisLoginModel olduser = RedisUtility.Get <RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, gameOperation.Openid, gameOperation.Unionid)); if (olduser == null) { return; } int GroupID = gameOperation.HasGroupID ? gameOperation.GroupID : 0; var serverGameOperation = ReturnGameOperation.CreateBuilder(); UserInfo user = Gongyong.userlist.Find(u => u.openid == olduser.Openid); switch (gameOperation.Operation) { //1創建房間/2加入房間 case 1: //if (ISUserInGruop(gameOperation)) if (gameOperation.GroupID != 0) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var creategroupuderid = groupInfoDAL.GetUserIDByGuoupID(GroupID); var roomcardCount = RoomCardUtility.GetRoomCard(creategroupuderid); if (roomcardCount - GameInformationBase.createRoomCard < 0) { var data = serverGameOperation.SetUnionid(gameOperation.Unionid).SetOpenid(gameOperation.Openid).SetStatus(-3).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1021, data.Length, requestInfo.MessageNum, data))); return; } else { RedisUtility.GetServerIP(GameInformationBase.DEFAULTGAMESERVERNAME, requestInfo.MessageNum, session, 1, gameOperation.Openid, gameOperation.Unionid); } var reslut = RedisUtility.GetServerIP(GameInformationBase.DEFAULTGAMESERVERNAME, requestInfo.MessageNum, session, 1, gameOperation.Openid, gameOperation.Unionid); if (reslut == true) { //根据groupid来查找所有在线的圈子session var groupList = Gongyong.userlist.FindAll(w => { return(w.GroupID.Contains(GroupID) && w.session != session); }); for (var i = 0; i < groupList.Count; i++) { Console.WriteLine("get : " + groupList[i].nickname + " , ", groupList[i]); } ////向日志里面添加朋友圈耗卡信息 //GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); //var userInfo = Gongyong.userlist.Find(w => { return w.session.Equals(session); }); //var listRecord = groupInfoDAL.AddCreateRoomRecord(userInfo.UserID, GroupID,); } } else //不是在圈子里进行创建房间的 { //检测是否满足开房的条件 var roomcardCount = RoomCardUtility.GetRoomCard(user.UserID); if (roomcardCount - GameInformationBase.createRoomCard < 0) { var data = serverGameOperation.SetUnionid(gameOperation.Unionid).SetOpenid(gameOperation.Openid).SetStatus(-1).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1021, data.Length, requestInfo.MessageNum, data))); return; } else { RedisUtility.GetServerIP(GameInformationBase.DEFAULTGAMESERVERNAME, requestInfo.MessageNum, session, 1, gameOperation.Openid, gameOperation.Unionid); } } break; case 2: if (!gameOperation.HasRoomID) { return; } var roomInfo = RedisUtility.Get <RedisGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, gameOperation.RoomID, string.Empty)); var ddzRoomInfo = RedisUtility.Get <RedisDDZGameRoomInfo>(RedisUtility.GetKey(GameInformationBase.COMMUNITYDDZROOMINFO, gameOperation.RoomID, string.Empty)); var status = 0; if (roomInfo == null && ddzRoomInfo == null) { status = 3; } else if ((roomInfo != null && roomInfo.room.listOpenid.Count >= roomInfo.room.room_peo) || (ddzRoomInfo != null && ddzRoomInfo.room.listOpenid.Count >= 3)) { status = 2; } else { if (ISUserInGruop(gameOperation)) { status = 1; //1:加入成功 RedisUtility.GetServerIP(roomInfo.ServerName, requestInfo.MessageNum, session, 1, gameOperation.Openid, gameOperation.Unionid, false, 0, status, roomInfo == null ? 1 : 0); } else //不是圈内成员 { var data = serverGameOperation.SetUnionid(gameOperation.Unionid).SetOpenid(gameOperation.Openid).SetStatus(-2).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1021, data.Length, requestInfo.MessageNum, data))); } } if (status != 1) { var data = ReturnRoomAdd.CreateBuilder().SetStart(status).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7090, data.Length, requestInfo.MessageNum, data))); } break; } }
/// <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); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var sendApplyToJoin = SendApplyToJoin.ParseFrom(requestInfo.Body); RedisUserInfoModel user = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, sendApplyToJoin.Openid, sendApplyToJoin.Unionid)); if (groupInfoDAL.GetGroupInfoByGroupID(sendApplyToJoin.GroupID, user.Type) == null) { var returnApplyToJoin = ReturnApplyToJoin.CreateBuilder().SetStatus(0).SetMessage("圈子不存在").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1041, returnApplyToJoin.Length, requestInfo.MessageNum, returnApplyToJoin))); } else if (groupInfoDAL.PlayerApplyRecord(user.UserID, sendApplyToJoin.GroupID, 0) == 1) { var returnApplyToJoin = ReturnApplyToJoin.CreateBuilder().SetStatus(0).SetMessage("已申请,待群主通过").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1041, returnApplyToJoin.Length, requestInfo.MessageNum, returnApplyToJoin))); } else if (groupInfoDAL.PlayerApplyRecord(user.UserID, sendApplyToJoin.GroupID, 1) == 1 || groupInfoDAL.IsUserInGroup(sendApplyToJoin.GroupID, user.UserID) != 0) { var returnApplyToJoin = ReturnApplyToJoin.CreateBuilder().SetStatus(0).SetMessage("已再圈子中,请勿重复申请").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1041, returnApplyToJoin.Length, requestInfo.MessageNum, returnApplyToJoin))); } //else if (true) //{ // var returnApplyToJoin = ReturnApplyToJoin.CreateBuilder().SetStatus(0).SetMessage("已再圈子中,请勿重复申请").Build().ToByteArray(); // session.Send(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1041, returnApplyToJoin.Length, requestInfo.MessageNum, returnApplyToJoin))); //} else { groupInfoDAL.ApplyToJoin(sendApplyToJoin.GroupID, user.UserID); var returnApplyToJoin = ReturnApplyToJoin.CreateBuilder().SetStatus(1).SetMessage("申请成功").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1041, returnApplyToJoin.Length, requestInfo.MessageNum, returnApplyToJoin))); } }
/// <summary> /// 加入房间判断,先加入房间 /// </summary> /// <param name="session"></param> /// <param name="requestInfo"></param> public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID))) { session.Logger.Debug("AddRoomOne : 非法连接"); session.Close(); return; } var getdata = SendAddRoomOne.ParseFrom(requestInfo.Body); var senddata = ReturnRoomAdd.CreateBuilder(); UserInfo user = Gongyong.userlist.Find(u => u.openid == getdata.Openid); if (user == null) { return; } Room r = Gongyong.roomlist.Find(u => u.RoomID == getdata.RoomID); session.Logger.Debug("申请加入房间" + getdata.Openid); if (r == null) { senddata.SetStart(3);//3:房间不存在 } //else if (r.listOpenid.Any(w => w.Equals(getdata.Openid))) //{ // senddata.SetStart(1);//1:加入成功 如果本来就在房间内则不占一个位置 //} else if (r.listOpenid.Count + 1 == r.room_peo) { senddata.SetStart(2);//2:人数已满 } else { senddata.SetStart(1);//1:加入成功 r.listOpenid.Add(getdata.Openid); try { //将牌桌信息保存 RedisUtility.Set <RedisGameModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, user.openid, user.unionid), new RedisGameModel { RoomID = r.RoomID, ServerName = GameInformationBase.serverName, Openid = user.openid, Unionid = user.unionid }); } catch (Exception ex)//用户加入房间时有可能redis 异常导致服务器内加入成功但是消息并未发送。 { session.Logger.Error(ex); r.listOpenid.Remove(getdata.Openid); return; } //session.Logger.Debug(getdata.Openid + " start : " + senddata.Start); //byte[] arr = senddata.Build().ToByteArray(); //session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7090, arr.Length, requestInfo.MessageNum, arr))); } session.Logger.Debug(getdata.Openid + " start : " + senddata.Start); byte[] arr = senddata.Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7090, arr.Length, requestInfo.MessageNum, arr))); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { if (!Gongyong.userlist.Any(w => w.session.SessionID.Equals(session.SessionID))) { session.Logger.Debug("RemoveRoom : 非法连接"); session.Close(); return; } var getdata = SendJS.ParseFrom(requestInfo.Body); mjuser rst = Gongyong.mulist.Find(u => u.Openid == getdata.Openid); int roomid = getdata.Roomid; Room r = Gongyong.roomlist.Find(u => u.RoomID == roomid); if (rst == null) { if (r != null) { if (!Gongyong.mulist.Any(w => w.RoomID == roomid)) { Gongyong.roomlist.Remove(r); RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYROOMINFO, r.RoomID.ToString(), "")); } } RedisUtility.Remove(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERGAME, getdata.Openid, getdata.Unionid)); return; } if (r == null) { return; } int fw = Gongyong.mulist.Find(u => u.Openid == getdata.Openid).ZS_Fw; session.Logger.Debug(Name + "|" + getdata.ToString()); string nickname = Gongyong.userlist.Find(u => u.openid == getdata.Openid).nickname; var disbandedRoomInfo = RedisUtility.Get <DisbandedRoomInfo>((RedisUtility.GetKey(GameInformationBase.COMMUNITYDISBANDED, getdata.Openid, getdata.Unionid))); List <mjuser> listuser = Gongyong.mulist.FindAll(u => u.RoomID == roomid); ///判断游戏是否开始(未开始直接解散,开始则发送消息) if (r.startgame != 1 && rst.IsHomeowner) { new UserExitLogic().DissolutionRoom(r, requestInfo.MessageNum, 1); } else if (disbandedRoomInfo != null && (DateTime.Now - disbandedRoomInfo.Time).TotalSeconds < 5)// { var data = ReturnDisbandedFailure.CreateBuilder().SetStatus(1).Build().ToByteArray(); session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5010, data.Length, requestInfo.MessageNum, data))); } else { if (disbandedRoomInfo == null) { var disbandedRoom = new DisbandedRoomInfo { OpenID = getdata.Openid, RoomID = roomid, Time = DateTime.Now }; RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYDISBANDED, getdata.Openid, getdata.Unionid), disbandedRoom, 1); } if (!Gongyong.roomclear.Any(w => w.RoomID == roomid)) { RoomClear rc = new RoomClear() { Status = 1, RoomID = roomid }; var Rdata = ReturnJSMsg.CreateBuilder().SetFw(fw).SetNickName(nickname); byte[] Rtbyte = Rdata.Build().ToByteArray(); foreach (var item in listuser) { if (item.Openid != getdata.Openid) { rc.RoomPeo.Add(item.Openid); } UserInfo user = Gongyong.userlist.Find(u => u.openid == item.Openid); user.session.TrySend(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5004, Rtbyte.Length, requestInfo.MessageNum, Rtbyte))); } Gongyong.roomclear.Add(rc); ThreadUtility.AddCountdownRemoveRoomThread(roomid.ToString());//当有用户申请解散房间,倒计时开始。 } else { var data = SendJSIdea.CreateBuilder().SetOpenid(getdata.Openid).SetRoomid(roomid).SetState(1).Build().ToByteArray(); // new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 5005, data.Length, requestInfo.MessageNum, data)); new ClearByUser().ExecuteCommand(session, new ProtobufRequestInfo { Body = data, Key = (GameInformationBase.BASEAGREEMENTNUMBER + 5005).ToString(), Messagelength = data.Length, MessageNum = GameInformationBase.BASEAGREEMENTNUMBER + 5005, MessageResNum = 0 }); } // ThreadUtility.StartCountdownRemoveRoomThread(roomid.ToString()); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var sendChangeApplyStatus = SendChangeApplyStatus.ParseFrom(requestInfo.Body); GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); byte[] resultData = null; DAL.DAL.mjuserinfoDAL mjuserinfo = new mjuserinfoDAL(); if (sendChangeApplyStatus.ApplyStatus == 1 || sendChangeApplyStatus.ApplyStatus == 2) { var userinfo = mjuserinfo.GetModel(sendChangeApplyStatus.UserID); if (userinfo != null) {//========================================================= if (groupInfoDAL.GetIsExistenceApplyStatus(sendChangeApplyStatus.GroupID, sendChangeApplyStatus.UserID, 0) == 1) { if (groupInfoDAL.AgreeApplyStatus(sendChangeApplyStatus.GroupID, sendChangeApplyStatus.UserID, sendChangeApplyStatus.ApplyStatus, 0) != 0) { if (sendChangeApplyStatus.ApplyStatus == 1) { groupInfoDAL.AddUserToGroup(sendChangeApplyStatus.GroupID, sendChangeApplyStatus.UserID, 2); RedisUserInfoModel user = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, userinfo.openid, userinfo.unionid)); if (user != null) { user.GroupID.Add((int)sendChangeApplyStatus.GroupID); RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, user.Openid, user.Unionid), user); var userInfo = Gongyong.userlist.Find(w => w.UserID == user.UserID); if (userInfo != null) { userInfo.GroupID.Add((int)sendChangeApplyStatus.GroupID); } } resultData = ReturnChangeApplyStatus.CreateBuilder().SetStatus(1).SetMessage("修改成功").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1071, resultData.Length, requestInfo.MessageNum, resultData))); } } } resultData = ReturnChangeApplyStatus.CreateBuilder().SetStatus(1).SetMessage("修改失败").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1071, resultData.Length, requestInfo.MessageNum, resultData))); } } else if (sendChangeApplyStatus.ApplyStatus == 5 || sendChangeApplyStatus.ApplyStatus == 6) { var userinfo = mjuserinfo.GetModel(sendChangeApplyStatus.UserID); if (userinfo != null) { if (groupInfoDAL.GetIsExistenceApplyStatus(sendChangeApplyStatus.GroupID, sendChangeApplyStatus.UserID, 4) == 1) { if (groupInfoDAL.AgreeApplyStatus(sendChangeApplyStatus.GroupID, sendChangeApplyStatus.UserID, sendChangeApplyStatus.ApplyStatus) != 0) { if (sendChangeApplyStatus.ApplyStatus == 5) { groupInfoDAL.DelUsersByUserIDTransaction(sendChangeApplyStatus.GroupID, sendChangeApplyStatus.UserID, 5); RedisUserInfoModel user = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, userinfo.openid, userinfo.unionid)); if (user != null) { user.GroupID.Remove((int)sendChangeApplyStatus.GroupID); RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, user.Openid, user.Unionid), user); var userInfo = Gongyong.userlist.Find(w => w.UserID == user.UserID); if (userInfo != null) { userInfo.GroupID.Remove((int)sendChangeApplyStatus.GroupID); } } resultData = ReturnChangeApplyStatus.CreateBuilder().SetStatus(1).SetMessage("修改成功").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1071, resultData.Length, requestInfo.MessageNum, resultData))); } } } } } }
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("有未结束的游戏"); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var groupUsersManager = SendAgentGroupUsersManager.ParseFrom(requestInfo.Body); // RedisUserInfoModel user = RedisUtility.Get<RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, groupUsersManager.Openid, groupUsersManager.Unionid)); var player = Player.CreateBuilder(); var returnPlayerList = ReturnPlayerList.CreateBuilder(); var list = groupInfoDAL.GetUsersIDListByGroupID(groupUsersManager.GroupID); var deluserInfo = new mjuserinfoDAL().GetModel(groupUsersManager.DelByUserID); byte[] returnMessage = null; if (deluserInfo == null) { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("没有该用户").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); // session.Close(); return; } var groupInfo = groupInfoDAL.GetGroupInfoByGroupID(groupUsersManager.GroupID, deluserInfo.is_band.Value); if (groupInfo == null) { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("没有该用户").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); // session.Close(); return; } //删除用户 if (groupUsersManager.HasDelByUserID && !groupUsersManager.HasAddUsers) { if (groupInfo.CreateUserID == groupUsersManager.DelByUserID) { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("群主不能删除自己").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); return; } // groupInfoDAL.DelUsersByUserIDTransaction( groupUsersManager.GroupID, groupUsersManager.DelByUserID); groupInfoDAL.DelUsersByUserIDTransaction(groupUsersManager.GroupID, groupUsersManager.DelByUserID, 3, groupUsersManager.DelByUserID); returnMessage = ReturnMessgae.CreateBuilder().SetStatue(1).SetMessage("删除成功").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); return; } //添加用户 else if (!groupUsersManager.HasDelByUserID && groupUsersManager.HasAddUsers) { //var groupInfo = groupInfoDAL.GetGroupInfoByGroupID(groupUsersManager.GroupID); //if (groupInfo.CreateUserID == groupUsersManager.AddUsers) //{ // returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("添加失败").Build().ToByteArray(); // session.Send(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); // return; //} if (new DAL.DAL.mjuserinfoDAL().GetModel(groupUsersManager.AddUsers) != null) { //加入类型,1圈主添加,2申请加入,3推荐加入 var err = groupInfoDAL.AddUserToGroup(groupUsersManager.GroupID, groupUsersManager.AddUsers, 1); if (err == 0) { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("添加失败,已存在该用户").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); } else { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(1).SetMessage("添加成功").Build().ToByteArray(); groupInfoDAL.AddGroupTips(groupUsersManager.GroupID, groupUsersManager.AddUsers, 1); //添加成狗后把用户丢到RedisUs 避免需重复登陆问题 RedisUserInfoModel user = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, groupUsersManager.AddUsers.ToString(), groupUsersManager.AddUsers.ToString())); if (user != null) { user.GroupID.Add((int)groupUsersManager.GroupID); RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, user.Openid, user.Unionid), user); var userInfo = Gongyong.userlist.Find(w => w.UserID == user.UserID); if (userInfo != null) { userInfo.GroupID.Add((int)groupUsersManager.GroupID); } } session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); } } else { returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("无此用户").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); return; } return; } foreach (var userID in list) { DAL.Model.mjuserinfo userinfo = new DAL.DAL.mjuserinfoDAL().GetModel(userID); if (userinfo == null) { groupInfoDAL.DelUsersByUserID(groupUsersManager.GroupID, userID); } else { player.SetGroupUserID(userID).SetNickName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(userinfo.nickname))).SetPicture(userinfo.headimg); returnPlayerList.AddPlayerList(player); } } //返回待审核人数 int counts = groupInfoDAL.GroupApplyRecord(groupUsersManager.GroupID).Count(); returnPlayerList.SetApplyUsers(counts); var returnPlayerListData = returnPlayerList.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1051, returnPlayerListData.Length, requestInfo.MessageNum, returnPlayerListData))); }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { try { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var info = MaintainHeartbeat.ParseFrom(requestInfo.Body); var userInfo = RedisUtility.Get <RedisUserInfoModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERINFO, info.Openid, info.Unionid)); if (userInfo != null) { var olduser = RedisUtility.Get <RedisLoginModel>(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, info.Openid, info.Unionid)); if (olduser == null) { RedisUtility.Set(RedisUtility.GetKey(GameInformationBase.COMMUNITYUSERLIST, userInfo.Openid, userInfo.Unionid), new RedisLoginModel { Openid = userInfo.Openid, ServerName = GameInformationBase.serverName, Unionid = userInfo.Unionid }); } if (!Gongyong.userlist.Any(w => w.unionid.Equals(userInfo.Unionid))) { Gongyong.userlist.Add(new UserInfo { city = userInfo.City, ConnTime = userInfo.ConnTime, GroupID = userInfo.GroupID, headimg = userInfo.Headimg, Lat = userInfo.Lat, nickname = userInfo.Nickname, openid = userInfo.Openid, province = userInfo.Province, session = session, sex = userInfo.Sex, unionid = userInfo.Unionid, UserID = userInfo.UserID, UserIP = session.RemoteEndPoint.Address.ToString(), Type = userInfo.Type }); } session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1, requestInfo.Body.Length, requestInfo.MessageNum, requestInfo.Body))); var list = groupInfoDAL.GetUpdateTipsByUserID(info.UserID); if (list.Any()) { var data = ReturnMessgaeList.CreateBuilder().AddRangeMessgaeList(list).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1111, data.Length, requestInfo.MessageNum, data))); } } //UserInfo user = Gongyong.userlist.Find(u => u.openid == info.Openid); //if (user == null) // return; //if (user.session.SessionID != session.SessionID) //{ // user.session = session; //} //List<MsgLog> list = Gongyong.msg.FindAll(u => u.openid == user.openid); //if (list.Count > 0) //{ // var usermsg = ReturnMsgList.CreateBuilder(); // foreach (var item in list) // { // Google.ProtocolBuffers.ByteString bytes = Google.ProtocolBuffers.ByteString.CopyFrom(item.msg.ToArray()); // usermsg.AddMsg(bytes); // Gongyong.msg.Remove(item); // } // byte[] arr = usermsg.Build().ToByteArray(); // session.TrySend(new ArraySegment<byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 7002, arr.Length, requestInfo.MessageNum, arr))); //} } catch (Exception ex) { // Logger .Error() session.Logger.Error(ex.ToString()); session.Close(); } }