public static void ResaveUserData(string dataStr, BaofengUser user, out BaofengUserdata bfd) { bfd = null; byte[] bytes = Convert.FromBase64String(dataStr); var dicts = Util__UnzipFile(bytes); var dbc = DbContext.Get(); bfd = dbc.GetEntityDB <BaofengUserdata>().GetSingle(i => i.userId == user.id); if (bfd == null) { bfd = new BaofengUserdata(); bfd.userId = user.id; } else { BaofengUserdata_bak bfk = new BaofengUserdata_bak(); bfk.userId = bfd.userId; bfk.actor = bfd.actor; bfk.amulet = bfd.amulet; bfk.bag = bfd.bag; bfk.level = bfd.level; bfk.mission = bfd.mission; bfk.other = bfd.other; bfk.player = bfd.player; bfk.practice = bfd.practice; bfk.setting = bfd.setting; bfk.store = bfd.store; bfk.uid = bfd.uid; bfk.cdate = bfd.updateDate; dbc.Db.Insertable(bfk).ExecuteCommand(); } bfd.actor = dicts["actor"]; bfd.amulet = dicts["amulet"]; bfd.bag = dicts["bag"]; bfd.level = dicts["level"]; bfd.mission = dicts["mission"]; bfd.other = dicts["other"]; bfd.player = dicts["player"]; bfd.practice = dicts["practice"]; bfd.setting = dicts["setting"]; bfd.store = dicts["store"]; bfd.uid = dicts["uid"]; bfd.updateDate = DateTime.Now; if (bfd.id > 0) { dbc.Db.Updateable(bfd).ExecuteCommand(); } else { dbc.Db.Insertable(bfd).ExecuteCommand(); } }
private void gameAction_download_save(string urlHost, JObject ReqJo, JObject Rep) { string bodyData = ReqJo["data"].ToString(); string user_id = bodyData.GetQueryStringValue("user_id"); var dbc = DbContext.Get(); BaofengUser user = dbc.GetEntityDB <BaofengUser>().GetSingle(i => i.userid == user_id && i.ServerName == urlHost); if (user == null) { Rep["skip"] = "1"; return; } StringBuilder localSaveData = new StringBuilder(); localSaveData.Append("is_cheat=0&result=1&server_time_stamp="); localSaveData.Append(((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString()); bool force_download = bodyData.GetQueryStringValue("force_download").Asbool(); if (user.isHold || force_download) { user.isHold = false; dbc.Db.Updateable(user).ExecuteCommand(); //打包本地存档 localSaveData.Append("&savefile_data="); BaofengUserdata userdata = dbc.GetEntityDB <BaofengUserdata>().GetSingle(i => i.userId == user.id); if (userdata == null) { Rep["skip"] = "1"; return; } Dictionary <string, string> fileDict = new Dictionary <string, string>(); fileDict.Add("actor", userdata.actor); fileDict.Add("amulet", userdata.amulet); fileDict.Add("bag", userdata.bag); fileDict.Add("level", userdata.level); fileDict.Add("mission", userdata.mission); fileDict.Add("other", userdata.other); fileDict.Add("player", userdata.player); fileDict.Add("practice", userdata.practice); fileDict.Add("setting", userdata.setting); fileDict.Add("store", userdata.store); fileDict.Add("uid", userdata.uid); var zipbytes = comFunc.Util__ZipFile(fileDict); localSaveData.Append(Convert.ToBase64String(zipbytes)); } Rep["ok"] = true; Rep["data"] = localSaveData.ToString(); }
public JObject save([FromBody] JObject data, string userid, string servername) { JObject resObj = new JObject(); resObj["ok"] = false; resObj["msg"] = ""; string svrHost = GlobalSettings.getServerHost(servername); var dbc = DbContext.Get(); BaofengUser user = dbc.GetEntityDB <BaofengUser>().GetSingle(i => i.userid == userid && i.ServerName == svrHost); if (user == null) { resObj["msg"] = "未找到用户"; return(resObj); } BaofengUserdata bfd = dbc.GetEntityDB <BaofengUserdata>().GetSingle(i => i.userId == user.id); if (bfd == null) { string errmsg = comFunc.Req_Create_download_save(user, out bfd); if (!string.IsNullOrEmpty(errmsg)) { resObj["msg"] = errmsg; return(resObj); } } JObject bagContext = comFunc.BagLua2Json(bfd.bag); foreach (var item in data) { bagContext["ret"]["itemDatas"][item.Key] = item.Value; } bfd.bag = comFunc.Json2BagLua(bagContext); user.isHold = true; dbc.Db.Updateable(user).ExecuteCommand(); dbc.Db.Updateable(bfd).ExecuteCommand(); resObj["ok"] = true; return(resObj); }
public static string Req_Create_download_save(BaofengUser user, out BaofengUserdata bfd) { bfd = null; string errMsg = ""; errMsg = Req_Create_Login(user); if (!string.IsNullOrEmpty(errMsg)) { return(errMsg); } string url = user.ServerName + "/download_save"; Dictionary <string, string> data = new Dictionary <string, string>(); data["login_time_stamp"] = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString(); data["login_token"] = user.logintoken; data["user_id"] = user.userid; data["force_download"] = "1"; string repdata = PostData(url, data, out errMsg); if (!string.IsNullOrEmpty(repdata)) { string savefile_data = repdata.GetQueryStringValue("savefile_data"); if (!string.IsNullOrEmpty(savefile_data)) { user.is_cheat = repdata.GetQueryStringValue("is_cheat").Asbool(); DbContext.Get().Db.Updateable(user).ExecuteCommand(); ResaveUserData(savefile_data, user, out bfd); return(""); } else { return(repdata); } } return(errMsg); }
public IActionResult Accinfo(string userid, string servername, string refresh = "") { string svrHost = GlobalSettings.getServerHost(servername); var dbc = DbContext.Get(); BaofengUser user = dbc.GetEntityDB <BaofengUser>().GetSingle(i => i.userid == userid && i.ServerName == svrHost); if (user == null) { return(NotFound()); } BaofengUserdata bfd = null; if (!"refresh".Equals(refresh) || user.is_cheat) //如果账号已被ban,服务器没有最新存档 { bfd = dbc.GetEntityDB <BaofengUserdata>().GetSingle(i => i.userId == user.id); } if (bfd == null) { string errmsg = comFunc.Req_Create_download_save(user, out bfd); if (!string.IsNullOrEmpty(errmsg)) { return(View(new AccInfoModel() { ErrMsg = errmsg, user = user })); } } var Bag = comFunc.BagLua2Json(bfd.bag); return(View(new AccInfoModel() { Bag = (JObject)Bag["ret"]["itemDatas"], user = user })); }