/// <summary> /// 确认赠送金币 /// </summary> /// <param name="user"></param> /// <param name="data"></param> /// <returns></returns> private string EnsureMoneyTrading(tb_User user, cs_ensuremoneytrading data) { // result 1:可以扣款,2 余额不足不能扣款,-1 用户账号不合法或者钱小于等于0,-2用户未在线或者给自己赠送钱,-3操作失败账号状态异常,-4用户拒绝 sc_ensuremoneytrading sendData = new sc_ensuremoneytrading { fn = "sc_ensuremoneytrading", result = 1, Msg = "赠送成功" }; tb_User _targetUser = tb_UserEx.GetFromCachebyUserID(data.objuserid);// userCache.FindKey(data.objuserid.ToString()); if (_targetUser == null) { ErrorRecord.Record(" fetal error ...data.objuserid:" + data.objuserid); sendData.result = -1; sendData.Msg = "赠送用户不存在"; return(JsonUtils.Serialize(sendData)); } CreateHandleGoldFactory.EnsureMoneyLogic(user, _targetUser, data); return(JsonUtils.Serialize(sendData)); }
/// <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); } } }
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)); }