示例#1
0
        /// <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)
 {
 }