using Assets.Scripts.Apis.Models; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; namespace Assets.Scripts.Apis { public class UserApi : ApiBase { public async Task> Login(string phone, string pwd, string countryCode) { var param = new { Phone = phone, Pwd = pwd, countryCode }; JsonResult ret = null; try { ret = await PostAsync>("NoAuth/v1/Login", param); } catch (Exception ex) { return new JsonResult { result = false, errMsg = ex.Message }; } //ApiBase.cookies = response.Cookies; //var ret = response.DynamicBody; if (ret.result) { //var str = Newtonsoft.Json.JsonConvert.SerializeObject(ret.data); var user = new UserResultModel(); user.Id = ret.data.Id; user.Nickname = ret.data.Nickname; user.Phone = ((string)ret.data.Phone).Trim(); user.Country = ret.data.Country; user.Province = ret.data.Province; user.City = ret.data.City; user.Area = ret.data.Area; user.Pass = ret.data.Pass; user.Sex = ret.data.Sex; user.Unit = ret.data.Unit; user.Weight = ret.data.Weight; user.FTP = ret.data.FTP; user.WheelDiameter = ret.data.WheelDiameter; user.Email = user.Email ?? ""; user.Pass = user.Pass ?? ""; user.OtherPlatforms = user.OtherPlatforms ?? ""; user.WxHeadImg = ret.data.WxHeadImg ?? ""; //user.LoginTime = ret.data.LoginTime; user.LastLoginTime = ret.data.LastLoginTime; user.AutoPause = ret.data.AutoPause; user.MaxHeartRate = ret.data.MaxHeartRate; user.CanEditRoom = ret.data.CanEditRoom; user.BicycleWeight = ret.data.BicycleWeight; user.Contact = ret.data.Contact; user.ContactPhone = ret.data.ContactPhone; user.ContactAddress = ret.data.ContactAddress; user.Sensitivity = ret.data.Sensitivity; //if (ret.data.ConnectedToStrava != null) { user.ConnectedToStrava = ret.data.ConnectedToStrava; } user.Birthday = ret.data.Birthday; user.LastUpdateFtpTime = ret.data.LastUpdateFtpTime; user.LastUpdateWeightTime = ret.data.LastUpdateWeightTime; user.LastUpdateBicycleWeightTime = ret.data.LastUpdateBicycleWeightTime; user.Height = ret.data.Height; //todo: check local database, insert new user user.WebHost = ret.data.WebHost; user.CanCreateRace = ret.data.CanCreateRace; //PubCommData.CurrentUser = user; user.cookie = cookies[0].Value; return new JsonResult() { result = true, data = user }; } else { return new JsonResult() { result = false, data = null, errMsg = ret.errMsg }; } } public async Task> AppleCompleteInfo(string phone, string Captcha, string pwd) { return await PostAsync>("User/AppleCompleteInfo", new { phone, Captcha, pwd }); } public async Task> LoginV1(string phone, string pwd, string countryCode) { var param = new { Phone = phone, Pwd = pwd, countryCode }; JsonResult ret = null; try { ret = await PostAsync>("NoAuth/v1/Login", param); } catch (Exception ex) { return new JsonResult { result = false, errMsg = ex.Message }; } //ApiBase.cookies = response.Cookies; //var ret = response.DynamicBody; if (ret.result) { var user = JObject.FromObject(ret.data).ToObject(); user.cookie = cookies[0].Value; return new JsonResult() { result = true, data = user }; } else { return new JsonResult() { result = false, data = ret.data, errMsg = ret.errMsg }; } } /// /// 获取个人中心的统计信息 /// /// public async Task> GetSummary() { var result = await GetAsync>("User/GetSummary"); return result; } public async Task GetNow() { var result = await GetAsync("NoAuth/GetNow"); return DateTime.Parse(System.Text.Encoding.UTF8.GetString(result)).ToLocalTime();//将服务器UTC时间转换成当地时区的时间 } public async Task> Register(string Phone, string Pwd, string Captcha) { var param = new { Phone, Pwd, Captcha }; JsonResult ret = null; try { ret = await PostAsync>("NoAuth/v1/Register", param); if (ret.result) { var u = JObject.FromObject(ret.data).ToObject(); u.cookie = cookies[0].Value; return new JsonResult { result = true, data = u,errMsg = ret.errMsg}; } else { return new JsonResult { result = false,data = ret.data, errMsg = ret.errMsg }; } } catch (Exception ex) { return new JsonResult { result = false, errMsg = ex.Message }; } } public async Task GetHeadImg(string phone) { return await GetStringAsync($"noauth/getheadimg?phone={phone}"); } public async Task> GetCaptcha(string phone) { return await PostAsync>("NoAuth/v1/GetCaptcha",new {phone }); } public async Task> UpdateUserInfo(UserResultModel user) { return await PostAsync>("User/UpdateUserSetting", user); } public JsonResult GetUserInfo() { return Get>("User/GetCurrentUser"); } public async Task> QuickLogin() { var r = await PostAsync>("NoAuth/QuickLogin", null); if (r.result) { r.data.cookie = cookies[0].Value; } return r; } public async Task> OnWebWxLoginCheckUnionIdByCode(string code,string state) { var r = await GetAsync>($"NoAuth/v1/OnWebWxLogin?code={code}&state={state}"); return GetDataAfterSetCookie(r); } public async Task> OnWebWxLoginCheckUnionId(string unionId, string openId) { var r = await PostAsync>("NoAuth/OnWebWxLoginCheckUnionId", new { unionId, openId }); return GetDataAfterSetCookie(r); } public async Task> OnWebWxLogin(string Phone, string Captcha, string Password, string UnionId, string WxWebOpenId) { var r = await PostAsync>("NoAuth/v1/OnWebWxLogin", new { Phone, Captcha, UnionId, openId = WxWebOpenId, Pwd = Password }); if (r.result) { var u = JObject.FromObject(r.data); u.Add("cookie", cookies[0].Value); return new JsonResult { result = true, data = u, errMsg = r.errMsg }; } else return r; } public async Task> AddFeedBack(string content, List files) { var res = Upload("feedback/add", new { content } , files); return Newtonsoft.Json.JsonConvert.DeserializeObject>(res); } public async Task> GetAppVersion() { return await GetAsync>("home/getversions"); } public JsonResult Update(UserResultModel currUser, out string cookie, string filePath = "") { cookie = App.CurrentUser.cookie; //return await PostAsync>("User/UpdateUserSetting", new { // UID = currUser.Id, // Sex = currUser.Sex, // currUser.Unit, // currUser.Weight, // currUser.FTP, // currUser.WheelDiameter, // currUser.Nickname, // currUser.Country, // currUser.Province, // currUser.City, // currUser.Area, // currUser.AutoPause, // currUser.MaxHeartRate, // currUser.BicycleWeight, // currUser.Contact, // currUser.ContactPhone, // currUser.ContactAddress, // currUser.Sensitivity, // imgData = imgData //}); var files = new List(); if (!string.IsNullOrWhiteSpace(filePath)) { files.Add(filePath); } var res = Upload("v1/User/UpdateUserSetting", new { UID = currUser.Id, Sex = currUser.Sex, currUser.Unit, currUser.Height, currUser.Weight, currUser.FTP, currUser.WheelDiameter, currUser.Nickname, currUser.Country, currUser.Province, currUser.City, currUser.Area, currUser.AutoPause, currUser.MaxHeartRate, currUser.BicycleWeight, currUser.Contact, currUser.ContactPhone, currUser.ContactAddress, currUser.Sensitivity, currUser.Birthday //imgData = imgData }, files); Debug.Log(cookie); return Newtonsoft.Json.JsonConvert.DeserializeObject>(res); } public async Task> GetNotify() { return await GetAsync>("/Home/GetNotify"); } public async Task> GetVersions() { return await GetAsync>("/home/getversions"); } public async Task> ResetPassword(string phone, string captcha, string newPwd) { return await PostAsync>("NoAuth/v1/ResetPassword", new {phone,captcha,newPwd }); } public async Task> OnAppleIdLoginCheck(string userId,string token) { var r = await PostAsync>("NoAuth/v1/OnAppleIdLoginCheck", new { appleUserId = userId, token }); return GetDataAfterSetCookie(r); } public async Task> OnAppleIdLogin(string appleUserId, string token, string phone, string pwd, string Captcha) { var r = await PostAsync>("NoAuth/v1/OnAppleIdLogin", new { appleUserId, token, phone, pwd, Captcha }); return GetDataAfterSetCookie(r); } public async Task> OnAppleQuickLogin(string userId, string token) { var r = await PostAsync>("NoAuth/v1/OnAppleQuickLogin", new { appleUserId = userId, token }); return GetDataAfterSetCookie(r); } public async Task> OnFacebookLoginCheck(string userId, string token) { var r = await PostAsync>("NoAuth/v1/OnFacebookLoginCheck", new { faceBookUserId = userId, token }); return GetDataAfterSetCookie(r); } public async Task> OnFacebookLogin(string faceBookUserId, string token, string phone, string pwd, string Captcha) { var r = await PostAsync>("NoAuth/v1/OnFacebookLogin", new { faceBookUserId, token, phone, pwd, Captcha }); return GetDataAfterSetCookie(r); } public async Task> OnGoogleIdLoginCheck(string googleUserId, string token) { var r = await PostAsync>("NoAuth/v1/OnGoogleIdLoginCheck", new { googleUserId, token }); return GetDataAfterSetCookie(r); } public async Task> OnGoogleIdLogin(string googleUserId, string token, string phone, string pwd, string Captcha) { var r = await PostAsync>("NoAuth/v1/OnGoogleIdLogin", new { googleUserId, token, phone, pwd, Captcha }); return GetDataAfterSetCookie(r); } private JsonResult GetDataAfterSetCookie(JsonResult r) { if (r.result) { var data = JObject.FromObject(r.data); if (data.Value("success") != null && data.Value("success") == "False") { return r; } else { var user = data.ToObject(); user.cookie = cookies[0].Value; r.data = user; } } return r; } } }