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))); } }
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))); } }
/// <summary> /// 根据创建者ID获取群组信息 /// </summary> /// <param name="createUesrID"></param> /// <returns></returns> public static List <BizGroupInfo> LoadByCreateUserID(long createUesrID) { var groupInfos = new GroupInfoDAL().GetByCreateUesrID(createUesrID); if (groupInfos == null) { return(new List <BizGroupInfo>()); } return(groupInfos.Select(model => new BizGroupInfo(model)).ToList()); }
public static List <BizGroupInfo> LoadByGroupIDList(List <long> groupIDs) { var groupInfos = new GroupInfoDAL().GetByGroupIDList(groupIDs); if (groupInfos == null) { return(new List <BizGroupInfo>()); } return(groupInfos.Select(model => new BizGroupInfo(model)).ToList()); }
/// <summary> /// 根据用户群组ID获取群组信息 /// </summary> /// <param name="groupID"></param> /// <returns></returns> public static BizGroupInfo LoadByGroupID(long groupID) { var groupInfo = new GroupInfoDAL().GetByGroupInfoID(groupID); if (groupInfo == null) { return(null); } return(new BizGroupInfo(groupInfo)); }
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 void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var sendSearchPlayer = SendSearchPlayer.ParseFrom(requestInfo.Body); mjuserinfoDAL mjuserinfoDAL = new mjuserinfoDAL(); var userinfo = mjuserinfoDAL.GetModel(sendSearchPlayer.UserID); if (userinfo != null) { var returnDate = Player.CreateBuilder().SetGroupUserID(userinfo.id).SetNickName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(userinfo.nickname))).SetPicture(userinfo.headimg).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER, returnDate.Length, requestInfo.MessageNum, returnDate))); } else { var returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("该用户不存在").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var sendDeleteGroup = SendDeleteGroup.ParseFrom(requestInfo.Body); byte[] returnDate; try { groupInfoDAL.DeleteGroup(sendDeleteGroup.GroupID, sendDeleteGroup.AdminID); returnDate = ReturnMessgae.CreateBuilder().SetMessage("解散朋友圈成攻").SetStatue(1).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnDate.Length, requestInfo.MessageNum, returnDate))); } catch (Exception) { returnDate = ReturnMessgae.CreateBuilder().SetMessage("解散朋友圈失败").SetStatue(0).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnDate.Length, requestInfo.MessageNum, returnDate))); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var sendQuitGroup = SendQuitGroup.ParseFrom(requestInfo.Body); byte[] resultData = null; var deluserInfo = new mjuserinfoDAL().GetModel(sendQuitGroup.UserID); var groupInfo = groupInfoDAL.GetGroupInfoByGroupID(sendQuitGroup.GroupID, deluserInfo.is_band.Value); if (groupInfo == null) { session.Logger.Debug("用户退出不存在朋友圈 关闭连接"); session.Close(); return; } if (groupInfoDAL.GetIsExistenceInGroup(sendQuitGroup.GroupID, sendQuitGroup.UserID, 4) != 1) { resultData = ReturnQuitGroup.CreateBuilder().SetStatus(1).SetMessage("您不是该圈子的成员!").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1091, resultData.Length, requestInfo.MessageNum, resultData))); return; } if (groupInfoDAL.GetIsExistenceApplyStatus(sendQuitGroup.GroupID, sendQuitGroup.UserID, 4) == 1) { resultData = ReturnQuitGroup.CreateBuilder().SetStatus(1).SetMessage("您已经申请过退出,请等待群主通过!").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1091, resultData.Length, requestInfo.MessageNum, resultData))); } else if (groupInfoDAL.ApplyUsersOutByUserIDTransaction(sendQuitGroup.GroupID, sendQuitGroup.UserID, 4, groupInfo.CreateUserID, true) != 0) { // groupInfoDAL.DelApplyByUserID(sendQuitGroup.GroupID, sendQuitGroup.UserID); //groupInfoDAL.ChangeApplyStatus(sendQuitGroup.GroupID, sendQuitGroup.UserID, 4); resultData = ReturnQuitGroup.CreateBuilder().SetStatus(1).SetMessage("申请退出成功,等待群主通过!").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1091, resultData.Length, requestInfo.MessageNum, resultData))); } else { resultData = ReturnQuitGroup.CreateBuilder().SetStatus(1).SetMessage("申请退出失败!").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1091, resultData.Length, requestInfo.MessageNum, resultData))); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var sendCreateGroup = SendCreateGroup.ParseFrom(requestInfo.Body); GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); DAL.Model.mjuserinfo userinfo = new DAL.DAL.mjuserinfoDAL().GetModel(sendCreateGroup.UserID); byte[] returnDate = null; if (userinfo != null) { int groupID = groupInfoDAL.CreateGroup(userinfo.nickname, userinfo.id, userinfo.unionid); //groupInfoDAL.AddUserToGroup(groupID, userinfo.id, 1); returnDate = ReturnMessgae.CreateBuilder().SetStatue(1).SetMessage(JsonConvert.SerializeObject(new { GroupID = groupID, Nickname = userinfo.nickname, UserID = userinfo.id })).Build().ToByteArray();//"{\"圈子ID\":{0},\"圈子名称\":{1},\"圈主ID\":{2}}").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnDate.Length, requestInfo.MessageNum, returnDate))); } else { returnDate = ReturnMessgae.CreateBuilder().SetMessage("不是游戏用户").SetStatue(0).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnDate.Length, requestInfo.MessageNum, returnDate))); } }
public void Save() { if (GroupInfoID != 0) { new GroupInfoDAL().Update(ToModel()); } else { var DAL = new GroupInfoDAL(); DAL.Add(ToModel()); if (ObjectHascode != 0) { var model = DAL.GetByObjectHashCode(ObjectHascode); if (model == null) { return; } GroupInfoID = model.GroupInfoID; } } }
/// <summary> /// 注册代理后台是先判断是否是游戏用户 /// </summary> /// <param name="session"></param> /// <param name="requestInfo"></param> public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var agentSignIn = SendAgentSignIn.ParseFrom(requestInfo.Body); GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); DAL.Model.mjuserinfo userinfo = new DAL.DAL.mjuserinfoDAL().GetModel(agentSignIn.UserID); byte[] returnDate = null; if (userinfo != null) { //int groupID = groupInfoDAL.CreateGroup(userinfo.nickname, userinfo.id); //groupInfoDAL.AddUserToGroup(groupID, userinfo.id, 1); returnDate = ReturnMessgae.CreateBuilder().SetStatue(1).SetMessage("是游戏用户").Build().ToByteArray();//"{\"圈子ID\":{0},\"圈子名称\":{1},\"圈主ID\":{2}}").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnDate.Length, requestInfo.MessageNum, returnDate))); } else { returnDate = ReturnMessgae.CreateBuilder().SetMessage(string.Format("此游戏ID{0}不是游戏用户", agentSignIn.UserID)).SetStatue(0).Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnDate.Length, requestInfo.MessageNum, returnDate))); } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { var sendAgentGetGroupInfo = SendAgentGetGroupInfo.ParseFrom(requestInfo.Body); GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); DAL.Model.GroupInfo groupInfoModel = groupInfoDAL.GetGroupInfoByGroupID(sendAgentGetGroupInfo.GroupID, 0); if (groupInfoModel != null) { var returnDate = ReturnAgentGetGroupInfo.CreateBuilder().SetGroupID(sendAgentGetGroupInfo.GroupID). SetGroupName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(groupInfoModel.GroupName))).SetNikeName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(groupInfoModel.GroupName))). SetRoomCardCounts(RoomCardUtility.GetRoomCard(sendAgentGetGroupInfo.UserID)). SetCreateTime(TimeToLong.ConvertDateTimeInt(groupInfoModel.CreateTime)). Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1106, returnDate.Length, requestInfo.MessageNum, returnDate))); } else { var returnMessage = ReturnMessgae.CreateBuilder().SetStatue(0).SetMessage("圈子不存在").Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1104, returnMessage.Length, requestInfo.MessageNum, returnMessage))); } }
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); } } }
/// <summary> /// 初始化 <see cref="GroupInfoManager" /> 类的新实例。 /// </summary> /// <param name="session"></param> public GroupInfoManager(ISession session) : base(session) { _dal = new GroupInfoDAL(session); }
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))); } } } } } }
/// <summary> /// 获取分组信息 /// </summary> /// <param name="entity"></param> /// <returns></returns> public List <GroupInfoEntity> GetDataList(GroupInfoEntity entity, ref int totalCount, int scId) { totalCount = new GroupInfoDAL().GetTotalCount(entity, scId); return(new GroupInfoDAL().GetDataList(entity, scId)); }
/// <summary> /// 初始化 <see cref="GroupInfoManager" /> 类的新实例。 /// </summary> public GroupInfoManager() { _dal = new GroupInfoDAL(base.Session); }
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; } }
public void ExecuteCommand(GameSession session, ProtobufRequestInfo requestInfo) { GroupInfoDAL groupInfoDAL = new GroupInfoDAL(); var sendApplyRecord = SendApplyRecord.ParseFrom(requestInfo.Body); // var player = Player.CreateBuilder(); var groupApplyInfo = GroupApplyInfo.CreateBuilder(); var returnGroupApplyInfo = ReturnGroupApplyInfo.CreateBuilder(); Byte[] returnData = null; List <DAL.Model.ApplyRecord> list = null; if (sendApplyRecord.HasGroupID) { list = groupInfoDAL.GroupApplyRecord(sendApplyRecord.GroupID); if (list.Count == 0) { returnData = returnGroupApplyInfo.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1061, returnData.Length, requestInfo.MessageNum, returnData))); } else { foreach (var item in list) { DAL.Model.mjuserinfo userinfo = new DAL.DAL.mjuserinfoDAL().GetModel(item.ApplyJoinUserID); var player = Player.CreateBuilder().SetGroupUserID(userinfo.id).SetNickName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(userinfo.nickname))).SetPicture(userinfo.headimg); groupApplyInfo.SetGroupID(item.GroupID).SetApplyStatus(item.ApplyStatus).AddPlayerInfo(player).SetApplyDateTime(TimeToLong.ConvertDateTimeInt(item.ApplyDateTime)).SetGroupName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(item.GroupName))); // returnGroupApplyInfo.AddGroupApplyInfoList(groupApplyInfo); returnGroupApplyInfo.AddGroupApplyInfoList(groupApplyInfo); } // groupApplyInfo.SetGroupID(item.GroupID).SetApplyStatus(item.ApplyStatus).AddPlayerInfo(player).SetApplyDateTime(TimeToLong.ConvertDateTimeInt(item.ApplyDateTime)).SetGroupName(item.GroupName); returnData = returnGroupApplyInfo.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1061, returnData.Length, requestInfo.MessageNum, returnData))); //session.Close(); } } else { list = groupInfoDAL.PlayerApplyRecord(sendApplyRecord.UserID); if (list.Count == 0) { returnData = returnGroupApplyInfo.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1061, returnData.Length, requestInfo.MessageNum, returnData))); } else { foreach (var item in list) { DAL.Model.mjuserinfo userinfo = new DAL.DAL.mjuserinfoDAL().GetModel(item.ApplyJoinUserID); var player = Player.CreateBuilder().SetGroupUserID(userinfo.id).SetNickName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(userinfo.nickname))).SetPicture(userinfo.headimg); groupApplyInfo.SetGroupID(item.GroupID).SetApplyStatus(item.ApplyStatus).AddPlayerInfo(player).SetApplyDateTime(TimeToLong.ConvertDateTimeInt(item.ApplyDateTime)).SetGroupName(HttpUtility.UrlDecode(HttpUtility.UrlDecode(item.GroupName))); // returnGroupApplyInfo.AddGroupApplyInfoList(groupApplyInfo); returnGroupApplyInfo.AddGroupApplyInfoList(groupApplyInfo); } returnData = returnGroupApplyInfo.Build().ToByteArray(); session.Send(new ArraySegment <byte>(CreateHead.CreateMessage(GameInformationBase.BASEAGREEMENTNUMBER + 1061, returnData.Length, requestInfo.MessageNum, returnData))); } } }
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(); } }