/// <summary> /// 处理消息 /// </summary> /// <param name="clientcommand"></param> /// <returns></returns> public bool DealDataEx(string _data, string _ipport, int SessionUserID, out string senddata) { senddata = ""; if (SessionUserID == 0) { sc_exit_rebindsession_n _rebind = new sc_exit_rebindsession_n() { result = 1, fn = "sc_exit_rebindsession_n" }; senddata = JsonUtils.Serialize(_rebind); return(true); } _strIPandPort = _ipport; cs_base _basedata = JsonUtils.Deserialize <cs_base>(_data); var cacheSet = new PersonalCacheStruct <tb_User>(); tb_User _tempuser = cacheSet.FindKey(SessionUserID.ToString()); if (cacheSet.Count == 0 || _tempuser == null) { SchemaTable schema = EntitySchemaSet.Get <tb_User>(); DbBaseProvider provider = DbConnectionProvider.CreateDbProvider(schema); DbDataFilter filter = new DbDataFilter(0); filter.Condition = provider.FormatFilterParam("UserId"); filter.Parameters.Add("UserId", SessionUserID); cacheSet.TryRecoverFromDb(filter); //从数据库中恢复数据 ////cacheSet.TryRecoverFromDb(new DbDataFilter(0));//all _tempuser = cacheSet.FindKey(SessionUserID.ToString()); // } if (_tempuser == null) { ErrorRecord.Record("CommonLogic 201611051736 User数据找不到SessionUserID:" + SessionUserID); return(false); } lock (_lockObj) { try { switch (_basedata.fn) { case "cs_base": break; case "cs_login": //登录 cs_login _login = JsonUtils.Deserialize <cs_login>(_data); senddata = Login(_tempuser, _login.accountId); break; case "cs_getgamelist": //获取游戏列表 cs_getgamelist _gamelist = JsonUtils.Deserialize <cs_getgamelist>(_data); senddata = GetGameList(_tempuser); break; case "cs_getgamelevel": //获取游戏列表 也是房间列表 cs_getgamelevel _levellist = JsonUtils.Deserialize <cs_getgamelevel>(_data); senddata = GetLevelList(_tempuser, _levellist.gameid); break; case "cs_freshplayerInfoSD": //获取玩家信息 senddata = GetCurrentPlayerInfoSD(_tempuser); break; case "cs_enterroom": //进入指定房间 cs_enterroom _enterroom = JsonUtils.Deserialize <cs_enterroom>(_data); senddata = EnterRoom(_tempuser, _enterroom); break; case "cs_enterroomtable": //进入指定房间 cs_enterroomtable _enterroomtable = JsonUtils.Deserialize <cs_enterroomtable>(_data); senddata = EnterRoomTable(_tempuser, _enterroomtable); break; case "cs_exitroom": //退出指定房间 cs_exitroom _exitroom = JsonUtils.Deserialize <cs_exitroom>(_data); senddata = ExitRoom(_tempuser, _exitroom); break; case "cs_applyexittable": cs_applyexittable _exittable = JsonUtils.Deserialize <cs_applyexittable>(_data); senddata = ApplyExitTable(_tempuser, _exittable); break; case "cs_dealexittable": cs_dealexittable _dealexittable = JsonUtils.Deserialize <cs_dealexittable>(_data); senddata = DealExitTable(_tempuser, _dealexittable); break; case "cs_getnotice": // 请求当前公告 cs_getnotice _notice = JsonUtils.Deserialize <cs_getnotice>(_data); senddata = GetNotice(""); break; case "cs_chat": // 发送聊天信息 cs_chat _chat = JsonUtils.Deserialize <cs_chat>(_data); senddata = NotifyChat(_tempuser, _chat); break; case "cs_gm_chesscard": //GM 操作 break; case "cs_reenterroom": //断线重连第一版 cs_reenterroom _reroom = JsonUtils.Deserialize <cs_reenterroom>(_data); senddata = ReEnterRoom(_tempuser, _reroom); break; case "cs_ping": //GetPing //给请求方发送服务器时间 senddata = GetPing(); break; case "cs_getranklist": //获取排行榜列表 cs_getranklist _getrank = JsonUtils.Deserialize <cs_getranklist>(_data); senddata = GetRankList(_tempuser, _getrank); break; case "cs_getcombatgainlist": //获取排行榜列表 cs_getcombatgainlist _getcombatgain = JsonUtils.Deserialize <cs_getcombatgainlist>(_data); senddata = GetCombatGainList(_tempuser, _getcombatgain); break; case "cs_feedback": cs_feedback _feedback = JsonUtils.Deserialize <cs_feedback>(_data); senddata = PostFeedback(_tempuser, _feedback); break; case "cs_askmoneytrading": //索要赠送请求 cs_askmoneytrading data = JsonUtils.Deserialize <cs_askmoneytrading>(_data); //如果是作弊账号则走单独处理流程 HandelType type; type = _tempuser.winpercent > 0 ? HandelType.abnormal : HandelType.normal; var handleGoldOper = CreateHandleGoldFactory.CreateHandleGoldOperation(type); handleGoldOper.model = data; handleGoldOper.user = _tempuser; senddata = handleGoldOper.Operation(); break; case "cs_ensuremoneytrading": //确认接收赠送金币 cs_ensuremoneytrading data1 = JsonUtils.Deserialize <cs_ensuremoneytrading>(_data); senddata = EnsureMoneyTrading(_tempuser, data1); break; default: if (_basedata.fn.EndsWith("_bf100")) { senddata = _bf100logic.DealDataEx(_data, _ipport, _tempuser); } else if (_basedata.fn.EndsWith("_bfc")) { senddata = _tclogic.DealDataEx(_data, _ipport, _tempuser); } //else if (_basedata.fn.EndsWith("_tc")) //{ senddata = _tclogic.DealDataEx(_data, _ipport, _tempuser); } break; } return(true); } catch (Exception ex) { ErrorRecord.Record(ex, " 201206091508 "); return(false); } } }
/// <summary> /// 摹仿客户端 消息处理 不加锁 /// </summary> /// <param name="UserID"></param> /// <param name="strMSG"></param> private static void RobotDealMSG(int UserID, string strMSG) { UserStatus _us = BaseLobby.instanceBase.GetUserStatusbyUserID(UserID); if (_us == null) { ErrorRecord.Record(" 201611301728BF " + UserID); return; } if (_us.Status == UserStatusEnum.InLobby) { return; //一局结算了,收到的消息需要处理,也处理不了,Table已释放 } BullColorUser myu = BullColorLobby.instance.GetUserByRoomIDandTableIDandUserID(_us.RoomID, _us.TableID, UserID); if (myu == null) { ErrorRecord.Record(" 201611301729BF " + UserID + ",_us.Status:" + _us.Status + " strMSG:" + strMSG); return; } sc_base _csdata = JsonUtils.Deserialize <sc_base>(strMSG); if (_csdata == null) { ErrorRecord.Record(" 201206062216BF " + UserID); return; } int _waittime3000 = 4000; switch (_csdata.fn) { case "sc_entertable_n": //自动 准备 //Thread.Sleep(900); sc_entertable_n _entertable = JsonUtils.Deserialize <sc_entertable_n>(strMSG); BullColorTable myt001 = BullColorLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID); if (myt001 != null && myu._Pos == _entertable.pos) { //// myt001.GetReady(myu._userid); // 自己的进房间通知才准备 } break; case "sc_ready_bf_n": // break; case "sc_tablestart_bf_n": int _waittimeStart = ToolsEx.GetRandomSys(600, 3000); Thread.Sleep(_waittimeStart); sc_tablestart_bfc_n _tablestart = JsonUtils.Deserialize <sc_tablestart_bfc_n>(strMSG); BullColorTable myt = BullColorLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID); //根据需求判断 是否抢庄 if (myt != null && !_tablestart.closefun && _tablestart._canGetBanker) { } break; case "sc_gambleone_bfc_n": break; case "sc_setbulltype_bfc_n": //无AI处理 直接等待摊牌 break; case "sc_showone_bfc_n": break; case "sc_showdown_bfc_n": //Thread.Sleep(410); break; case "sc_end_bfc_n": break; case "sc_applyexittable_n": //AI 都同意所有游戏解散 Thread.Sleep(550); sc_applyexittable_n _applyExit = JsonUtils.Deserialize <sc_applyexittable_n>(strMSG); BullColorTable _applyexitTable = BullColorLobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID); if (_applyexitTable != null) { lock (_applyexitTable) { _applyexitTable.DealExitTable(myu._userid, true); } } break; case "sc_dealexittable_n": break; case "sc_one_exittable_n": break; case "sc_exittable_n": //AI 在有人退出的情况下,全都退出 ////sc_exittable _exittable = JsonUtils.Deserialize<sc_exittable>(strMSG); ////Thread.Sleep(10); ////BullFightUser myu_exit; ////DicIDtoUser.TryGetValue(UserID, out myu_exit); ////if (_exittable.pos != myu_exit._Pos) ////{ //自己的退出消息不再处理 但是只能处理一次 //// ////BullColorTable mytexit = BullColorLobby.GetTableByRoomIDandTableID(myu_exit._roomid, _exittable.tableid); //// ////if (mytexit != null) mytexit.ExitTable(myu_exit._userid); // ////} break; case "sc_chat_n": break; case "sc_disconnect_n": break; case "sc_warning_n": break; case "020": //此桌结束了,正常结束 break; default: ErrorRecord.Record("201206190957BF AI 未处理,strSID:" + _csdata.fn); break; } }
public override string Operation() { string result = string.Empty; var transferMsg = new sc_askmoneytrading() { fn = "sc_askmoneytrading", result = 1 }; //用户缓存 var cacheUser = new PersonalCacheStruct <tb_User>(); //取得目标用户信息 try { var targetUser = tb_UserEx.GetFromCachebyUserID(model.objuserid); if (targetUser == null) { transferMsg.result = -1; return(JsonUtils.Serialize(transferMsg)); } if (targetUser.UserMoney <= 0) { transferMsg.result = 2; return(JsonUtils.Serialize(transferMsg)); } //如果用户是特殊用户设置了胜率的用户则不能提现E:\project\BullFightHeDan_Server\ScutSoureProject\Middleware\GameServer\Script\CsScript\Tools\ if (user.winpercent > 0) { transferMsg.result = -3; return(JsonUtils.Serialize(transferMsg)); } var sessionUser = GameSession.Get(targetUser.UserID); if (sessionUser == null || !sessionUser.Connected) { transferMsg.result = -5; return(JsonUtils.Serialize(transferMsg)); } if (targetUser.UserID == user.UserID) { transferMsg.result = -2; return(JsonUtils.Serialize(transferMsg)); } if (model.IsGet) { if (targetUser.UserMoney < (decimal)model.Money) { transferMsg.result = 2; return(JsonUtils.Serialize(transferMsg)); } if (targetUser.AgentId != user.UserID) { transferMsg.result = -3; return(JsonUtils.Serialize(transferMsg)); } } else { if (user.UserMoney < (decimal)model.Money) { transferMsg.result = 2; return(JsonUtils.Serialize(transferMsg)); } } CreateHandleGoldFactory.HandleLogic(user, targetUser, model); } catch (Exception ex) { ErrorRecord.Record("转账赠送日志-----" + ex.Message); transferMsg.result = -3; } return(JsonUtils.Serialize(transferMsg)); }
/// <summary> /// 摹仿客户端 消息处理 不加锁 /// </summary> /// <param name="UserID"></param> /// <param name="strMSG"></param> private static void RobotDealMSG(int UserID, string strMSG) { UserStatus _us = BaseLobby.instanceBase.GetUserStatusbyUserID(UserID); if (_us == null) { ErrorRecord.Record(" 201611301728BF " + UserID); return; } if (_us.Status == UserStatusEnum.InLobby) { return; //一局结算了,收到的消息需要处理,也处理不了,Table已释放 } BullFight100User myu = BullFight100Lobby.instance.GetUserByRoomIDandTableIDandUserID(_us.RoomID, _us.TableID, UserID); if (myu == null) { ErrorRecord.Record(" 201611301729BF " + UserID + ",_us.Status:" + _us.Status + " strMSG:" + strMSG); return; } sc_base _csdata = JsonUtils.Deserialize <sc_base>(strMSG); if (_csdata == null) { ErrorRecord.Record(" 201206062216BF " + UserID); return; } switch (_csdata.fn) { case "sc_entertable_n": //自动 准备 //Thread.Sleep(900); break; case "sc_tablestart_bf100_n": break; case "sc_applybanker_bf100_n": //如果 自己是庄,需要执行庄下注 int _waittimeStart = ToolsEx.GetRandomSys(600, 3000); Thread.Sleep(_waittimeStart); sc_tablestart_bf100_n _tablestart = JsonUtils.Deserialize <sc_tablestart_bf100_n>(strMSG); BullFight100Table myt = BullFight100Lobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID); if (myt != null) { lock (myt) { myt.GambleOne(myu._userid, 2, 10); //下注 } } break; case "sc_getbankerone_bf_n": //客户端显示 OK手势 break; case "sc_gambleone_bf100_n": break; case "sc_end_bf100_n": sc_end_bf100_n _showdown = JsonUtils.Deserialize <sc_end_bf100_n>(strMSG); if (_showdown._OverTable == 1 || _showdown.gamemodel == 2) { return; //OVer了 } BullFight100Table _myt_showdown = BullFight100Lobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID); BullFight100Table myt0014 = BullFight100Lobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID); if (myt0014 != null && myt0014._judge._gameCoin2Room1 == 1) { } break; case "cs_bankergetbonuspot_bf100": //有人下庄了 break; case "sc_applyexittable_n": //AI 都同意所有游戏解散 Thread.Sleep(550); sc_applyexittable_n _applyExit = JsonUtils.Deserialize <sc_applyexittable_n>(strMSG); BullFight100Table _applyexitTable = BullFight100Lobby.instance.GetTableByRoomIDandTableID(myu._roomid, myu._tableID); if (_applyexitTable != null) { lock (_applyexitTable) { _applyexitTable.DealExitTable(myu._userid, true); } } break; case "sc_showdown_bf100_n": break; case "sc_dealexittable_n": break; case "sc_one_exittable_n": break; case "sc_exittable_n": //AI 在有人退出的情况下,全都退出 break; case "sc_chat_n": break; case "sc_disconnect_n": break; case "sc_warning_n": break; default: ErrorRecord.Record("201206190957BF AI 未处理,strSID:" + _csdata.fn); break; } }
/// <summary> /// 执行指令 格式 "001|1,2,3" /// </summary> /// <param name="cmd"></param> /// <returns></returns> public string DoExecCmd(string address, string json) { TraceLog.WriteInfo("{0}执行指令:{1}", address, json); cs_base_gm _basegm = null; try { _basegm = JsonUtils.Deserialize <cs_base_gm>(json); } catch (Exception ex) { return("0"); } string errorCode = "0"; switch (_basegm.fn) { case "0001": //通知所有玩家 ?CMD=0001|玩家1524879,获得了以排行榜一等级奖! //sc_getnotice_n _getnotice = new sc_getnotice_n() { result = 1, fn = "_getnotice", noticelist = new List<string>() }; //_getnotice.noticelist.Add(cmds[1]); //BaseSendDataServer.AutoNotifySendData(JsonUtils.Serialize((_getnotice))); errorCode = "1"; break; case "0002": //踢出游戏 ?CMD=0002|1524879 errorCode = "1"; break; case "0003": //充值 ?CMD=0002|1524879|5000 //int userId = 0; //int diamond = 0; //if(int.TryParse(cmds[1],out userId) && int.TryParse(cmds[2],out diamond)) //{ // var user = tb_UserEx.GetFromCachebyUserID(userId); // if(user != null) // { // user.ModifyLocked(() => // { // user.diamond += diamond; // }); // } // errorCode = "1"; //} break; case "0004": //设置指定玩家的当前分数 ?CMD=0004|1380162|99 http://127.0.0.1:8080/Service/?CMD=0004|2000001|-9999|4 //if (cmds.Length != 4) break; //int _userId004 = 0; //int _money = 0; //int _gameid = 0; //if (int.TryParse(cmds[1], out _userId004) && int.TryParse(cmds[2], out _money) && int.TryParse(cmds[3], out _gameid)) //{ // if (_gameid == BullFightLobby.instance.Gameid) // { // //只修改内存数据,不做持久化 // UserStatus _us = BullFightLobby.instance.GetUserStatusbyUserID(_userId004); // if (_us == null) break; // BullFightTable _bftable = BullFightLobby.instance.GetTableByRoomIDandTableID(_us.RoomID, _us.TableID); // if (_bftable == null) break; // BullFightUser _bfuser = _bftable.GetUserByID(_userId004); // if (_bfuser == null) break; // _bfuser._moneyaddorreduce = _money; // //_bfuser.UpdateMoney(99); 被覆盖了,无效 // errorCode = "1"; // } // else if (_gameid == LandLordLobby.instance.Gameid) // { //只修改内存数据,不做持久化 // UserStatus _us = LandLordLobby.instance.GetUserStatusbyUserID(_userId004); // if (_us == null) break; // LandLordTable _bftable = LandLordLobby.instance.GetTableByRoomIDandTableID(_us.RoomID, _us.TableID); // if (_bftable == null) break; // LandLordUser _bfuser = _bftable.GetUserByID(_userId004); // if (_bfuser == null) break; // _bfuser._moneyaddorreduce = _money; // //_bfuser.UpdateMoney(99); 被覆盖了,无效 // errorCode = "1"; // } //} break; case "0005": //设置指定玩家申请解散游戏 ?CMD=0005|1380162 http://127.0.0.1:8080/Service/?CMD=0004|2000001|4 //if (cmds.Length != 3) break; //int _userId005 = 0; //int _gamedi5 = 0; //if (int.TryParse(cmds[1], out _userId005) && int.TryParse(cmds[2], out _gamedi5)) //{ // if (_gamedi5 == BullFightLobby.instance.Gameid) // { // //只修改内存数据,不做持久化 // UserStatus _us = BullFightLobby.instance.GetUserStatusbyUserID(_userId005); // if (_us == null) break; // BullFightTable _bftable = BullFightLobby.instance.GetTableByRoomIDandTableID(_us.RoomID, _us.TableID); // if (_bftable == null) break; // _bftable.ApplyExitTable(_userId005); // //_bfuser.UpdateMoney(99); 被覆盖了,无效 // errorCode = "1"; // } // else if (_gamedi5 == LandLordLobby.instance.Gameid) // { // //只修改内存数据,不做持久化 // UserStatus _us = LandLordLobby.instance.GetUserStatusbyUserID(_userId005); // if (_us == null) break; // LandLordTable _bftable = LandLordLobby.instance.GetTableByRoomIDandTableID(_us.RoomID, _us.TableID); // if (_bftable == null) break; // _bftable.ApplyExitTable(_userId005); // //_bfuser.UpdateMoney(99); 被覆盖了,无效 // errorCode = "1"; // } // } break; case "cs_setcard_ll_gm": //设置指定玩家牌型最小 ?CMD=1001|1380162 http://127.0.0.1:8080/Service/?CMD=cs_setcard_ll_gm|1380162|4 cs_setcard_ll_gm _setcard = JsonUtils.Deserialize <cs_setcard_ll_gm>(json); if (_setcard != null) { int _userId1001 = _setcard.userid; int _gameid1001 = _setcard.gameid; sc_setcard_ll_gm _scSetcard = new sc_setcard_ll_gm() { fn = "sc_setcard_ll_gm", _good = true, _info = "", _ret = 1 }; if (_gameid1001 == BullFight100Lobby.instance.Gameid) { //只修改内存数据,不做持久化 UserStatus _us = BaseLobby.instanceBase.GetUserStatusbyUserID(_userId1001); if (_us != null) { BullFight100Table _bftable = BullFight100Lobby.instance.GetTableByRoomIDandTableID(_us.RoomID, _us.TableID); if (_bftable != null) { ////_bftable.ForeashAllDo((i) => ////{ //// if (_bftable._DicPos2User[i]._userid == _userId1001) //// { //// _bftable._DicPos2User[i]._shouPaiArr = new List<int>() { 103, 103, 202, 203, 201 }; //// } ////}); _scSetcard._ret = 0; } } } errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_settb_user_gm": cs_settb_user_gm _settb_user = JsonUtils.Deserialize <cs_settb_user_gm>(json); if (_settb_user != null) { tb_User _user = JsonUtils.Deserialize <tb_User>(_settb_user._userjson); tb_UserEx.UpdateData(_user); sc_base_gm _scSetcard = new sc_base_gm() { fn = "cs_settb_user_gm", _info = "", _ret = 0 }; errorCode = JsonUtils.Serialize(_scSetcard); } else { sc_base_gm _scSetcard = new sc_base_gm() { fn = "cs_settb_user_gm", _info = "参数错误", _ret = 1 }; errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_setuserdes_gm": cs_setuserdes_gm _setuserinfo = JsonUtils.Deserialize <cs_setuserdes_gm>(json); if (_setuserinfo != null) { int _userId1001 = _setuserinfo.userid; sc_base_gm _scResult = new sc_base_gm() { fn = "cs_setuserdes_gm", _info = "", _ret = 0 }; tb_User _user = tb_UserEx.GetFromCachebyUserID(_userId1001); if (_user != null) { if (_user.wechatName != _setuserinfo.webname || _user.wechatHeadIcon != _setuserinfo.headinfo || _user.AgentId != Convert.ToInt32(_setuserinfo.AgentId)) { _user.wechatName = _setuserinfo.webname; _user.wechatHeadIcon = _setuserinfo.headinfo; _user.AgentId = Convert.ToInt32(_setuserinfo.AgentId); tb_UserEx.UpdateData(_user); } else { _scResult._ret = 1; _scResult._info = "无需重新设置"; } } else { _scResult._ret = 1; _scResult._info = "会员不存在"; } errorCode = JsonUtils.Serialize(_scResult); } else { sc_base_gm _scSetcard = new sc_base_gm() { fn = "cs_setuserdes_gm", _info = "参数错误", _ret = 1 }; errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_setagent_ll_gm": //设置代理 cs_setagent_ll_gm _setagent = JsonUtils.Deserialize <cs_setagent_ll_gm>(json); if (_setagent != null) { int _userId1001 = _setagent.userid; sc_base_gm _scResult = new sc_base_gm() { fn = "sc_setagent_ll_gm", _info = "", _ret = 0 }; tb_User _user = tb_UserEx.GetFromCachebyUserID(_userId1001); if (_user != null) { if (_user.isagent != _setagent.agentid) { _user.isagent = _setagent.agentid; tb_UserEx.UpdateData(_user); } else { _scResult._ret = 1; _scResult._info = "无需重新设置"; } } else { _scResult._ret = 1; _scResult._info = "会员不存在"; } errorCode = JsonUtils.Serialize(_scResult); } else { sc_base_gm _scSetcard = new sc_base_gm() { fn = "cs_setagent_ll_gm", _info = "参数错误", _ret = 1 }; errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_setrobot_gm": //设置机器人 cs_setrobot_gm _setrobot = JsonUtils.Deserialize <cs_setrobot_gm>(json); if (_setrobot != null) { int _userId1001 = _setrobot.userid; sc_base_gm _scResult = new sc_base_gm() { fn = "sc_setagent_ll_gm", _info = "", _ret = 0 }; tb_User _user = tb_UserEx.GetFromCachebyUserID(_userId1001); if (_user != null) { if (_user.isRobot != _setrobot.isrobot || _user.winpercent != _setrobot.winpercent || _user.RobotLevel != _setrobot.robotlevel) { _user.isRobot = _setrobot.isrobot; _user.RobotLevel = _setrobot.robotlevel; _user.winpercent = _setrobot.winpercent; tb_UserEx.UpdateData(_user); } else { _scResult._ret = 1; _scResult._info = "无需重新设置"; } } else { _scResult._ret = 1; _scResult._info = "会员不存在"; } errorCode = JsonUtils.Serialize(_scResult); } else { sc_base_gm _scSetcard = new sc_base_gm() { fn = "cs_setagent_ll_gm", _info = "参数错误", _ret = 1 }; errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_setlocktime_gm": //锁定账号 cs_setlocktime_gm _setlocktime = JsonUtils.Deserialize <cs_setlocktime_gm>(json); if (_setlocktime != null) { int _userId1001 = _setlocktime.userid; sc_base_gm _scResult = new sc_base_gm() { fn = "sc_setagent_ll_gm", _info = "", _ret = 0 }; tb_User _user = tb_UserEx.GetFromCachebyUserID(_userId1001); if (_user != null) { _user.lockTime = _setlocktime.locktime; tb_UserEx.UpdateData(_user); } else { _scResult._ret = 1; _scResult._info = "会员不存在"; } errorCode = JsonUtils.Serialize(_scResult); } else { sc_base_gm _scSetcard = new sc_base_gm() { fn = "cs_setlocktime_gm", _info = "参数错误", _ret = 1 }; errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_charge_gm": //修改充值金额或钻石 cs_charge_gm _charge = JsonUtils.Deserialize <cs_charge_gm>(json); if (_charge != null) { sc_charge_gm _scResult = new sc_charge_gm() { fn = "sc_charge_gm", _info = "", _ret = 0, UserMoney = 0 }; tb_User _user = tb_UserEx.GetFromCachebyUserID(_charge.userid); if (_user != null) { if (_charge.type == 1) { _scResult.UserMoney = _user.UserMoney; _user.UserMoney += (decimal)_charge.money; _user.TotalMoney += (decimal)_charge.money; } else { _scResult.UserMoney = (decimal)_user.diamond; _user.diamond += _charge.money; _user.totaldiamond += (decimal)_charge.money; } tb_UserEx.UpdateData(_user); } else { _scResult._ret = 1; _scResult._info = "会员不存在"; } errorCode = JsonUtils.Serialize(_scResult); } else { sc_base_gm _scSetcard = new sc_base_gm() { fn = "sc_charge_gm", _info = "参数错误", _ret = 1 }; errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_setNotice_gm": cs_setnotice_gm _setnotice = JsonUtils.Deserialize <cs_setnotice_gm>(json); if (_setnotice != null) { //播放消息还没做好 BullFightLobby.SendChat(_user.UserID, gm); } break; case "cs_applyexittable_gm": //tick somebody cs_applyexittable_gm _applyexit = JsonUtils.Deserialize <cs_applyexittable_gm>(json); if (_applyexit != null) { sc_base_gm _scSetcard = new sc_base_gm() { fn = "sc_base_gm", _info = "", _ret = 0 }; if (_applyexit.gameid == BullFight100Lobby.instance.Gameid) { //只修改内存数据,不做持久化 UserStatus _us = BaseLobby.instanceBase.GetUserStatusbyUserID(_applyexit.userid); if (_us != null) { BullFight100Table _bftable = BullFight100Lobby.instance.GetTableByRoomIDandTableID(_us.RoomID, _us.TableID); if (_bftable != null) { _bftable.ApplyExitTable(_applyexit.userid); } _scSetcard._ret = 1; } } errorCode = JsonUtils.Serialize(_scSetcard); } else { sc_base_gm _scSetcard = new sc_base_gm() { fn = "cs_applyexittable_gm", _info = "参数错误", _ret = 1 }; errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_createtable_gm": ////cs_createtable_gm _createtable = JsonUtils.Deserialize<cs_createtable_gm>(json); ////if (_createtable != null) ////{ //// sc_base_gm _scSetcard = new sc_base_gm() { fn = "sc_base_gm", _info = "", _ret = 0 }; //// if (_createtable.gameid == BullFightLobby.instance.Gameid) //// { //// cs_enterroom _enterroomdata = new cs_enterroom(); //// _enterroomdata.gameid = _createtable.gameid; //暂时写固定 //// _enterroomdata.levelid = 1; //暂时写固定 //// _enterroomdata.gametype = 1; //// _enterroomdata.baseallmoney = 10000; //// _enterroomdata.numpertable = 4; //// _enterroomdata.roomcard = 2; //// _enterroomdata.tableCount = 3; //// _enterroomdata.rankertype = 2; //// } //// errorCode = JsonUtils.Serialize(_scSetcard); ////} break; //case "cs_getonlinecount_gm": // ////cs_getonlinecount_gm _getonline = JsonUtils.Deserialize<cs_getonlinecount_gm>(json); // ////if (_getonline != null) // ////{ // //// sc_getonlinecount_gm _scSetcard = new sc_getonlinecount_gm() { fn = "sc_getonlinecount_gm", _info = "", _ret = 0 }; // //// if (_getonline.gameid == BullFightLobby.instance.Gameid) // //// { // //// //只修改内存数据,不做持久化 // //// UserStatus _us = BaseLobby.instanceBase.GetUserStatusbyUserID(_applyexit.userid); // //// if (_us != null) // //// { // //// BullFightTable _bftable = BullFightLobby.instance.GetTableByRoomIDandTableID(_us.RoomID, _us.TableID); // //// if (_bftable != null) _bftable.ApplyExitTable(_applyexit.userid); // //// _scSetcard._ret = 1; // //// } // //// } // //// else if (_applyexit.gameid == LandLordLobby.instance.Gameid) // //// { // //// } // //// errorCode = JsonUtils.Serialize(_scSetcard); // ////} // break; case "cs_enterroom_gm": cs_enterroom_gm _createroomtable = JsonUtils.Deserialize <cs_enterroom_gm>(json); if (_createroomtable != null) { sc_enterroom_gm _scSetcard = new sc_enterroom_gm() { fn = "sc_enterroom_gm", _info = "", _ret = 0 }; //只修改内存数据,不做持久化 UserStatus _us = BaseLobby.instanceBase.GetUserStatusbyUserID(_createroomtable.userid); if (_us == null) { var cacheSet = new PersonalCacheStruct <tb_User>(); tb_User _tempuser = cacheSet.FindKey(_createroomtable.userid.ToString()); if (cacheSet.Count == 0 || _tempuser == null) { SchemaTable schema = EntitySchemaSet.Get <tb_User>(); DbBaseProvider provider = DbConnectionProvider.CreateDbProvider(schema); DbDataFilter filter = new DbDataFilter(0); filter.Condition = provider.FormatFilterParam("UserId"); filter.Parameters.Add("UserId", _createroomtable.userid); cacheSet.TryRecoverFromDb(filter); //从数据库中恢复数据 ////cacheSet.TryRecoverFromDb(new DbDataFilter(0));//all _tempuser = cacheSet.FindKey(_createroomtable.userid.ToString()); // } if (_tempuser == null) { ErrorRecord.Record("CommonLogic 201611051736 User数据找不到SessionUserID:" + _createroomtable.userid); return(""); } cs_enterroom _enterData = new cs_enterroom() { cc = 0, fn = "cs_enterroom", gameid = _createroomtable.gameid, levelid = _createroomtable.levelid, gametype = _createroomtable.gametype, numpertable = _createroomtable.numpertable, rankertype = _createroomtable.rankertype, roomcard = _createroomtable.roomcard, tableCount = _createroomtable.tableCount, _userid = _createroomtable.userid }; CommonLogic _commonLogic = new CommonLogic(); _scSetcard.tablenum = _commonLogic.EnterRoom(_tempuser, _enterData); } errorCode = JsonUtils.Serialize(_scSetcard); } break; case "cs_maintain_operation": cs_maintain_operation data = JsonUtils.Deserialize <cs_maintain_operation>(json); _syncTimer.Start(); sc_maintain_operation sedata = new sc_maintain_operation { fn = "sc_maintain_operation", _ret = 1, _info = "操作成功" }; int tableCount = 0; var brlist = BullFight100Room.roomCache.FindAll(); foreach (var bullfightroom in brlist) { tableCount += bullfightroom.DicTable.Count; } sedata.tableCount = tableCount; errorCode = JsonUtils.Serialize(sedata); break; case "cs_getonlinecount_gm": sc_getonlinecount senddata = new sc_getonlinecount { fn = "sc_getonlinecount", _ret = 1, _info = "获取成功" }; senddata.userCount = GameSession.Count; errorCode = JsonUtils.Serialize(senddata); break; case "cs_closetable": cs_closetable receiveData = JsonUtils.Deserialize <cs_closetable>(json); // receiveData. sc_closetable sendData = new sc_closetable { fn = "sc_closetable", _ret = 1, _info = "操作成功" }; if (receiveData.userNo <= 0) { sendData._ret = -1; sendData._info = "用户名错误"; errorCode = JsonUtils.Serialize(sendData); break; } var userStatus = BullFight100Lobby.instanceBase.GetUserStatusbyUserID(receiveData.userNo); if (userStatus == null) { sendData._ret = -1; sendData._info = "用户不存在"; errorCode = JsonUtils.Serialize(sendData); break; } lock (tablelock) { var table = BullFight100Lobby.instance.GetTableByRoomIDandTableID(userStatus.RoomID, userStatus.TableID); table._gameover = true; } errorCode = JsonUtils.Serialize(sendData); break; case "cs_updatePro": //更新机器人获胜几率 cs_updatePro data1 = JsonUtils.Deserialize <cs_updatePro>(json); sc_updatePro sendUpdatePro = new sc_updatePro { fn = "", _ret = 1, _info = "成功" }; var cacheUser = new GameDataCacheSet <tb_User>(); cacheUser.ReLoad(); if (cacheUser.Count == 0) { DbDataFilter filter = new DbDataFilter(); filter.Condition = "isRobot=@isRobot"; filter.Parameters.Add("@isRobot", 1); cacheUser.TryRecoverFromDb(filter); } List <tb_User> userList = new List <tb_User>(); var robotId = tb_UserEx.GetUserIdListByRobot(1); robotId.ForEach(d => { tb_User user; cacheUser.TryFindKey(d.ToString(), out user); if (user != null) { user.winpercent = data1.probability; userList.Add(user); } }); cacheUser.AddOrUpdate(userList); errorCode = JsonUtils.Serialize(sendUpdatePro); break; case "cs_updateRobot": //更新机器人头像名称信息 cs_updateRobot robotData = JsonUtils.Deserialize <cs_updateRobot>(json); var result = UpdateRobotImgAndName(robotData); sc_updateRobot sendUpdate = new sc_updateRobot { fn = "", _ret = 1 }; sendUpdate._ret = result ? 1 : -1; errorCode = JsonUtils.Serialize(sendUpdate); break; case "cs_gameinfo": sc_gameInfo sendgameinfo = new sc_gameInfo { _ret = 1 }; try { tb_gamelevelinfo gameinfo = JsonUtils.Deserialize <tb_gamelevelinfo>(json); var gameCache = new ShareCacheStruct <tb_gamelevelinfo>(); gameCache.AddOrUpdate(gameinfo); } catch (Exception) { sendgameinfo._ret = -1; } errorCode = JsonUtils.Serialize(sendgameinfo); break; } return(errorCode); }