/// <summary> /// 处理索取赠送逻辑 /// </summary> /// <param name="user"></param> /// <param name="targetUser"></param> /// <param name="model"></param> public static void HandleLogic(tb_User user, tb_User targetUser, cs_askmoneytrading model) { sc_askmoneytrading_n _senddata = new sc_askmoneytrading_n() { fn = "sc_askmoneytrading_n" }; _senddata.Money = model.Money; _senddata.objuserid = targetUser.UserID; _senddata.objusername = user.wechatName; //索取 if (model.IsGet) { _senddata.IsGet = true; if (targetUser.UserMoney >= (decimal)model.Money) { var rechange = new tb_UserRechangeLog() { fromuserid = model._userid, userid = user.UserID, money = (decimal)model.Money, cointype = 1, fromtype = 2, oldmoney = targetUser.UserMoney, remarks = "索取请求", fromadminid = 0 }; _senddata.result = 1; BLL_UserRechangeLog.Add(rechange); _senddata.objuserid = user.UserID; } } else { if (user.UserMoney >= (decimal)model.Money) { _senddata.objuserid = user.UserID; _senddata.objusername = user.wechatName; _senddata.result = 1; } else { _senddata.result = 2; } } if (_senddata.result == 1) { BullFight100Lobby.instance.SendTransferMsg(targetUser.UserID, _senddata); } }
/// <summary> /// 处理特殊账号转账赠送 /// </summary> /// <param name="user"></param> /// <param name="data"></param> /// <returns></returns> private string HandleSpecial(tb_User user, cs_askmoneytrading data) { sc_askmoneytrading reviceData = new sc_askmoneytrading { fn = "sc_askmoneytrading", result = 1 }; if (user.UserID != data.objuserid) { reviceData.result = -3; return(JsonUtils.Serialize(reviceData)); } var tempUser = tb_UserEx.GetFromCachebyUserID(data.objuserid); if (tempUser == null || data == null) { reviceData.result = -1; return(JsonUtils.Serialize(reviceData)); } var rLog = new tb_UserRechangeLog() { cointype = 1, fromtype = 2, oldmoney = user.UserMoney, userid = user.UserID, money = (decimal)data.Money }; if (data.IsGet) { user.UserMoney += (decimal)data.Money; rLog.remarks = "特殊账号增加金币"; } else { user.UserMoney -= (decimal)data.Money; rLog.remarks = "特殊账号减少金币"; } tb_UserEx.UpdateData(user); BLL_UserRechangeLog.Add(rLog); reviceData.result = 1; return(JsonUtils.Serialize(reviceData)); }
/// <summary> /// 处理索取赠送信息 /// </summary> /// <returns></returns> private string HandleRecharge(tb_User user, cs_askmoneytrading data) { var model = new tb_UserRechangeLog(); string result = string.Empty; sc_askmoneytrading_n _senddata2 = new sc_askmoneytrading_n() { fn = "sc_askmoneytrading_n" }; var transferMsg = new sc_askmoneytrading() { fn = "sc_askmoneytrading" }; //用户缓存 var cacheUser = new PersonalCacheStruct <tb_User>(); //取得目标用户信息 try { var targetUser = cacheUser.FindKey(data.objuserid.ToString()); if (targetUser == null) { transferMsg.result = -1; result = JsonUtils.Serialize(transferMsg); return(result); } if (data.Money <= 0) { transferMsg.result = 2; result = JsonUtils.Serialize(transferMsg); return(result); } //如果用户是特殊用户设置了胜率的用户则不能提现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; result = JsonUtils.Serialize(targetUser); return(result); } _senddata2.Money = data.Money; _senddata2.objuserid = targetUser.UserID; _senddata2.objusername = targetUser.wechatName; //索取 if (data.IsGet) { _senddata2.IsGet = true; if (targetUser.UserMoney >= (decimal)data.Money) { _senddata2.result = 1; model.fromuserid = data._userid; model.userid = user.UserID; model.money = (decimal)data.Money; model.cointype = 1; model.createtime = DateTime.Now; model.fromtype = 2; model.oldmoney = targetUser.UserMoney; model.remarks = "索取"; model.fromadminid = 0; BLL_UserRechangeLog.Add(model); _senddata2.objuserid = user.UserID; transferMsg.result = 1; BullFight100Lobby.instance.SendTransferMsg(targetUser.UserID, _senddata2); } else { transferMsg.result = 2; } result = JsonUtils.Serialize(transferMsg); } else { if (user.UserMoney >= (decimal)data.Money) { _senddata2.objuserid = user.UserID; _senddata2.objusername = user.wechatName; _senddata2.result = 1; transferMsg.result = 1; BullFight100Lobby.instance.SendTransferMsg(targetUser.UserID, _senddata2); } else { _senddata2.result = 2; transferMsg.result = 2; } result = JsonUtils.Serialize(transferMsg); } } catch (Exception ex) { //ErrorRecord.Record("转账赠送日志-----" + ex.Message); transferMsg.result = -3; return(JsonUtils.Serialize(transferMsg)); } return(result); }
/// <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="user"></param> /// <param name="data"></param> private void HandleRechargeLogic(tb_User user, cs_askmoneytrading data, bool isEnsure = false) { }