private ErrorCode DBAsynQueryUserCallBack(GBuffer buffer, DBActiveWrapper db) { CSToDB.QueryUserReq msg = new CSToDB.QueryUserReq(); msg.MergeFrom(buffer.GetBuffer(), 0, ( int )buffer.length); GCToCS.Login login = new GCToCS.Login(); login.MergeFrom(ByteString.CopyFromUtf8(msg.Logininfo)); UserDBData userDbData = new UserDBData(); userDbData.usrDBData.un64ObjIdx = ( ulong )msg.Objid; userDbData.usrDBData.userPlatform = ( UserPlatform )login.Sdk; DBToCS.QueryUser queryUser = new DBToCS.QueryUser(); this.DBAsynQueryUser(userDbData, queryUser, db); using (MemoryStream ms = new MemoryStream()) { Serializer.Serialize(ms, userDbData.usrDBData); queryUser.Db = Encoding.UTF8.GetString(ms.GetBuffer(), 0, ( int )ms.Length); queryUser.Login = msg.Logininfo; queryUser.Gcnetid = msg.Gcnetid; queryUser.Gsid = msg.Gsid; queryUser.Nickname = userDbData.szNickName; } CS.instance.userMgr.EncodeAndSendToLogicThread(queryUser, ( int )DBToCS.MsgID.EQueryUserDbcallBack); return(ErrorCode.Success); }
public ErrorCode LoadDBData(UserDBData userDbData) { this.userDbData = userDbData.Clone(); if (0 == this.userDbData.usrDBData.un8UserLv) { this.userDbData.ChangeUserDbData(UserDBDataType.UserLv, ( byte )1); this.userDbData.ChangeUserDbData(UserDBDataType.VIPLevel, ( short )1); } //auto itemID = RefreshCardBegin + i; //auto cfg = CCSCfgMgr::getInstance().GetOtherItemCfg( itemID ); //if ( !cfg ) //{ // ELOG( LOG_ERROR, "洗练全配置为null" ); // continue; //} //UserItemInfo sSUserItemInfo; //sSUserItemInfo.itemID = itemID; //sSUserItemInfo.itemNum = 5; //sSUserItemInfo.endTime = -1; //ELOG( LOG_DBBUG, "增加临时洗练" ); //this._userDBData.item_Map[sSUserItemInfo.itemID] = sSUserItemInfo; //GetTaskMgr().UnpackTaskData( this._userDBData.szTaskData );//解析任务数据 return(ErrorCode.Success); }
private ErrorCode GetUserShortGiftMail(DBActiveWrapper db, UserDBData sUserData, DBToCS.QueryUser sQueryUser) { string sqlStr = $"select mail_id,mail_state from gameuser_mail where user_id = {sUserData.usrDBData.un64ObjIdx} order by mail_id DESC;"; ErrorCode errorCode = db.SqlExecQuery(sqlStr, dataReader => { while (dataReader.Read()) { DBToCS.MailInfo mailInfo = new DBToCS.MailInfo { Mailid = dataReader.GetInt32("mail_id"), State = dataReader.GetInt32("mail_state") }; sQueryUser.MailInfo.Add(mailInfo); } this.DBAsynQueryGameMailList(db, sUserData.usrDBData.un64ObjIdx); return(ErrorCode.Success); }); return(errorCode); }
private ErrorCode DBAsynQueryUser(UserDBData userData, DBToCS.QueryUser queryUser, DBActiveWrapper db) { string sqlStr = $"select * from gameuser, gameuser_runne,gameuser_guide where gameuser.obj_id = {userData.usrDBData.un64ObjIdx} and " + $"gameuser_runne.user_id ={userData.usrDBData.un64ObjIdx} and gameuser_guide.obj_id = {userData.usrDBData.un64ObjIdx};"; ErrorCode errorCode = db.SqlExecQuery(sqlStr, dataReader => { if (!dataReader.Read()) { Logger.Warn("could not find user data"); return(ErrorCode.UserDataNotFound); } userData.szNickName = dataReader.GetString("obj_name"); userData.usrDBData.n16Sex = dataReader.GetInt16("obj_sex"); userData.usrDBData.userPlatform = ( UserPlatform )dataReader.GetInt32("sdk_id"); userData.usrDBData.un16HeaderID = dataReader.GetUInt16("obj_headid"); userData.usrDBData.n64Score = dataReader.GetInt64("obj_score"); userData.usrDBData.n64Diamond = dataReader.GetInt64("obj_diamond"); userData.usrDBData.n64Gold = dataReader.GetInt64("obj_gold"); userData.usrDBData.un32TotalGameInns = dataReader.GetUInt32("obj_game_inns"); userData.usrDBData.un32TotalWinInns = dataReader.GetUInt32("obj_game_winns"); userData.usrDBData.un32TotalHeroKills = dataReader.GetUInt32("obj_kill_hero_num"); userData.usrDBData.un32TotalAssist = dataReader.GetUInt32("obj_ass_kill_num"); userData.usrDBData.un32TotalDestoryBuildings = dataReader.GetUInt32("obj_dest_building_num"); userData.usrDBData.un32TotalDeadTimes = dataReader.GetUInt32("obj_dead_num"); userData.usrDBData.un32UserCurLvExp = dataReader.GetUInt32("obj_cur_lv_exp"); userData.usrDBData.un8UserLv = dataReader.GetByte("obj_lv"); userData.usrDBData.un16Cldays = dataReader.GetUInt16("obj_cldays"); userData.usrDBData.un16VipLv = dataReader.GetInt16("obj_vip_lv"); userData.usrDBData.un32LastGetLoginRewardDay = dataReader.GetInt32("obj_last_loginreward_time"); userData.usrDBData.tRegisteUTCMillisec = dataReader.GetInt64("obj_register_time"); userData.szTaskData = dataReader.GetString("obj_task_data"); queryUser.TaskData = userData.szTaskData; DBToCS.RuneInfo runedB = new DBToCS.RuneInfo { SlotStr = dataReader.GetString("runeslot_json"), BagStr = dataReader.GetString("runnebag_json") }; queryUser.Runeinfo.Add(runedB); queryUser.Guidestr = dataReader.GetString("obj_cs_guide_com_steps"); return(ErrorCode.Success); }); if (errorCode != ErrorCode.Success) { return(errorCode); } errorCode = this.GetUserHeros(db, userData.usrDBData.un64ObjIdx, queryUser); if (errorCode != ErrorCode.Success) { return(errorCode); } Dictionary <ulong, uint> t_map = new Dictionary <ulong, uint>(); errorCode = this.DBAsynQueryUserSNSList(db, userData.usrDBData.un64ObjIdx, t_map); if (errorCode == ErrorCode.Success) { foreach (KeyValuePair <ulong, uint> kv in t_map) { DBToCS.RSinfo info = new DBToCS.RSinfo { RelatedId = kv.Key, Relation = kv.Value }; queryUser.Rsinfo.Add(info); this.DBAsynQueryUserHeaderAndNickname(db, kv.Value, info); } } else { Logger.Error($"DBAsynQueryUserSNSList error:{errorCode}"); } errorCode = this.DBAsynQueryUserItems(db, userData.usrDBData.un64ObjIdx, queryUser); if (errorCode != ErrorCode.Success) { Logger.Error($"DBAsynQueryUserItems error:{errorCode}"); } errorCode = this.GetUserShortGiftMail(db, userData, queryUser); if (errorCode != ErrorCode.Success) { Logger.Error($"GetUserShortGiftMail error:{errorCode}"); } return(errorCode); }
private ErrorCode UserAskLogin(CSGSInfo csgsInfo, uint gcNetID, GCToCS.Login login) { if (string.IsNullOrEmpty(login.Name) || login.Name.Length > Consts.DEFAULT_NAME_LEN) { return(ErrorCode.InvalidUserName); } UserNetInfo netinfo = new UserNetInfo(csgsInfo.m_n32GSID, gcNetID); if (this.ContainsUser(netinfo)) { return(ErrorCode.InvalidNetState); } ErrorCode errorCode = ErrorCode.Success; UserCombineKey sUserCombineKey = new UserCombineKey(login.Name, login.Sdk); if (this.allUserName2GuidMap.TryGetValue(sUserCombineKey, out ulong guid)) { //老玩家 //如果还在内存里 CSUser user = this.GetUser(guid); if (null != user) { bool bFlag = this.CheckIfInGuideBattle(user); if (bFlag) { Logger.Warn("新手引导玩家不允许顶号"); return(ErrorCode.GuideUserForbit); } user.OnOnline(netinfo, login, false, false); return(ErrorCode.Success); } //异步查询玩家数据 CSToDB.QueryUserReq queryUser = new CSToDB.QueryUserReq { Logininfo = login.ToByteString().ToStringUtf8(), Gsid = csgsInfo.m_n32GSID, Gcnetid = ( int )gcNetID, Csid = ( int )CS.instance.csKernelCfg.unCSId, Objid = ( long )guid }; errorCode = this.QueryUserAsync(queryUser).Result; } else { //新玩家,产生GUID guid = this.CombineGUID(); CSUser pcUser = new CSUser(); UserDBData userDbData = new UserDBData(); userDbData.usrDBData.un64ObjIdx = guid; userDbData.szUserName = login.Name; userDbData.szUserPwd = login.Passwd; userDbData.usrDBData.userPlatform = ( UserPlatform )login.Sdk; userDbData.usrDBData.tRegisteUTCMillisec = TimeUtils.utcTime; //加入全局表 this.allUserName2GuidMap.Add(sUserCombineKey, guid); pcUser.LoadDBData(userDbData); //todo //pcUser.userBattleInfoEx.mDebugName = login.Name; ErrorCode nRet = this.AddUser(pcUser); if (nRet != 0) { return(nRet); } pcUser.OnOnline(netinfo, login, true, true); this.InsertNewUserToMysql(login, pcUser); } //todo //log //{ // string mystream = string.Empty; // mystream << login.name() << LOG_SIGN; // mystream << login.sdk() << LOG_SIGN; // mystream << login.platform() << LOG_SIGN; // mystream << login.equimentid() << LOG_SIGN; // mystream << login.ipaddress(); // CSSGameLogMgr::GetInstance().AddGameLog( eLog_Login, guid, mystream.str() ); //} return(errorCode); }