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); }
private ErrorCode GetUserHeros(DBActiveWrapper db, ulong un64ObjIdx, DBToCS.QueryUser sQueryUser) { string sqlStr = $"select hero_id,hero_end_time,hero_buy_time from gameuser_hero where user_id={un64ObjIdx};"; ErrorCode errorCode = db.SqlExecQuery(sqlStr, dataReader => { while (dataReader.Read()) { DBToCS.HeroCfg heroDB = new DBToCS.HeroCfg { Buytime = dataReader.GetInt64("hero_buy_time"), Expiredtime = dataReader.GetInt64("hero_end_time"), Commodityid = dataReader.GetUInt32("hero_id") }; sQueryUser.Herocfg.Add(heroDB); } return(ErrorCode.Success); }); return(errorCode); }
private ErrorCode DBAsynQueryUserItems(DBActiveWrapper db, ulong user_id, DBToCS.QueryUser sQueryUser) { string sqlStr = $"select * from gameuser_item where user_id={user_id};"; ErrorCode errorCode = db.SqlExecQuery(sqlStr, dataReader => { while (dataReader.Read()) { DBToCS.ItemInfo item_info = new DBToCS.ItemInfo { ItemId = dataReader.GetInt32("item_id"), ItemNum = dataReader.GetUInt32("item_num"), BuyTime = dataReader.GetInt32("buy_time"), EndTime = dataReader.GetInt32("end_time") }; sQueryUser.ItemInfo.Add(item_info); } return(ErrorCode.Success); }); return(errorCode); }
private ErrorCode SynHandleQueryUserCallback(GBuffer buffer) { DBToCS.QueryUser msg = new DBToCS.QueryUser(); msg.MergeFrom(buffer.GetBuffer(), 0, ( int )buffer.length); GCToCS.Login login = new GCToCS.Login(); login.MergeFrom(ByteString.CopyFromUtf8(msg.Login)); UserNetInfo netInfo = new UserNetInfo(msg.Gsid, ( uint )msg.Gcnetid); if (this.ContainsUser(netInfo)) { Logger.Warn("invalid netInfo"); return(ErrorCode.InvalidNetState); } UserDBData userDbData; using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(msg.Db))) { userDbData = Serializer.Deserialize <UserDBData>(ms); } CSUser user = this.GetUser(userDbData.usrDBData.un64ObjIdx); if (null != user) { user.OnOnline(netInfo, login, false, false); return(ErrorCode.Success); } user = new CSUser(); userDbData.szUserName = login.Name; userDbData.szUserPwd = login.Passwd; userDbData.szNickName = msg.Nickname; userDbData.usrDBData.userPlatform = ( UserPlatform )login.Sdk; userDbData.szTaskData = msg.TaskData; bool newUser = userDbData.usrDBData.tRegisteUTCMillisec < 1; user.LoadDBData(userDbData); user.userDbData.guideSteps.szCSContinueGuide = msg.Guidestr; for (int i = 0; i < msg.Rsinfo.Count; i++) { user.LoadUserSNSList(msg.Rsinfo[i]); } for (int i = 0; i < msg.ItemInfo.Count; i++) { user.AddUserItems(msg.ItemInfo[i]); } for (int i = 0; i < msg.MailInfo.Count; ++i) { CS.instance.mailMgr.UpdatePerMailList(msg.MailInfo[i].Mailid, userDbData.usrDBData.un64ObjIdx, ( MailCurtState )msg.MailInfo[i].State); } //todo //user.GetUserBattleInfoEx().mDebugName = pLogin.Name; if (!newUser) { long curTime = TimeUtils.utcTime; for (int i = 0; i < msg.Herocfg.Count; ++i) { DBToCS.HeroCfg heroCfg = msg.Herocfg[i]; if (heroCfg.Expiredtime != Consts.PERSIST_TIME_ALWAYS && heroCfg.Expiredtime < curTime) { continue; } UserHeroDBData userHeroDbData = new UserHeroDBData(heroCfg.Commodityid, heroCfg.Expiredtime, heroCfg.Buytime); user.AddHero(userHeroDbData); } for (int i = 0; i < msg.Runeinfo.Count; ++i) { DBToCS.RuneInfo runeInfo = msg.Runeinfo[i]; user.InitRunes(runeInfo.BagStr, runeInfo.SlotStr); } } ErrorCode errorCode = this.AddUser(user); if (errorCode != ErrorCode.Success) { return(errorCode); } user.OnOnline(netInfo, login, newUser, true); return(ErrorCode.Success); }
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 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); }