377 lines
15 KiB
C#

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<JsonResult<UserResultModel>> Login(string phone, string pwd, string countryCode)
{
var param = new
{
Phone = phone,
Pwd = pwd,
countryCode
};
JsonResult<UserResultModel> ret = null;
try
{
ret = await PostAsync<JsonResult<UserResultModel>>("NoAuth/v1/Login", param);
}
catch (Exception ex)
{
return new JsonResult<UserResultModel> { 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["PowerFun.AUTH"].Value;
return new JsonResult<UserResultModel>() { result = true, data = user };
}
else
{
return new JsonResult<UserResultModel>() { result = false, data = null, errMsg = ret.errMsg };
}
}
/// <summary>
///
/// </summary>
/// <param name="pwd"></param>
/// <param name="isFirst">false直接删除 true仅判断</param>
/// <returns></returns>
public async Task<JsonResult<object>> DeleteAccount(string pwd,bool isFirst)
{
return await PostAsync<JsonResult<object>>("User/DeleteAccount", new { pwd,isFirst });
}
public async Task<JsonResult<object>> AppleCompleteInfo(string phone, string Captcha, string pwd)
{
return await PostAsync<JsonResult<object>>("User/AppleCompleteInfo", new { phone, Captcha, pwd });
}
public async Task<JsonResult<object>> LoginV1(string phone, string pwd, string countryCode)
{
var param = new
{
Phone = phone,
Pwd = pwd,
countryCode
};
JsonResult<object> ret = null;
try
{
ret = await PostAsync<JsonResult<object>>("NoAuth/v1/Login", param);
}
catch (Exception ex)
{
return new JsonResult<object> { result = false, errMsg = ex.Message };
}
//ApiBase.cookies = response.Cookies;
//var ret = response.DynamicBody;
if (ret.result)
{
var user = JObject.FromObject(ret.data).ToObject<UserResultModel>();
user.cookie = cookies["PowerFun.AUTH"].Value;
return new JsonResult<object>() { result = true, data = user };
}
else
{
return new JsonResult<object>() { result = false, data = ret.data, errMsg = ret.errMsg };
}
}
/// <summary>
/// 获取个人中心的统计信息
/// </summary>
/// <returns></returns>
public async Task<JsonResult<SummaryResultModel>> GetSummary()
{
var result = await GetAsync<JsonResult<SummaryResultModel>>("User/GetSummary");
return result;
}
public async Task<DateTime> GetNow()
{
var result = await GetAsync("NoAuth/GetNow");
return DateTime.Parse(System.Text.Encoding.UTF8.GetString(result)).ToLocalTime();//将服务器UTC时间转换成当地时区的时间
}
public async Task<JsonResult<object>> Register(string Phone, string Pwd, string Captcha)
{
var param = new
{
Phone,
Pwd,
Captcha
};
JsonResult<object> ret = null;
try
{
ret = await PostAsync<JsonResult<object>>("NoAuth/v1/Register", param);
if (ret.result)
{
var u = JObject.FromObject(ret.data).ToObject<UserResultModel>();
u.cookie = cookies["PowerFun.AUTH"].Value;
return new JsonResult<object> { result = true, data = u,errMsg = ret.errMsg};
}
else
{
return new JsonResult<object> { result = false,data = ret.data, errMsg = ret.errMsg };
}
}
catch (Exception ex)
{
return new JsonResult<object> { result = false, errMsg = ex.Message };
}
}
public async Task<string> GetHeadImg(string phone)
{
return await GetStringAsync($"noauth/getheadimg?phone={phone}");
}
public async Task<JsonResult<JObject>> GetCaptcha(string phone)
{
return await PostAsync<JsonResult<JObject>>("NoAuth/v1/GetCaptcha",new {phone });
}
public async Task<JsonResult<object>> UpdateUserInfo(UserResultModel user)
{
return await PostAsync<JsonResult<object>>("User/UpdateUserSetting", user);
}
public JsonResult<JObject> GetUserInfo()
{
return Get<JsonResult<JObject>>("User/GetCurrentUser");
}
public async Task<JsonResult<UserResultModel>> QuickLogin()
{
var r = await PostAsync<JsonResult<UserResultModel>>("NoAuth/QuickLogin", null);
if (r.result)
{
r.data.cookie = cookies["PowerFun.AUTH"].Value;
}
return r;
}
public async Task<JsonResult<object>> OnWebWxLoginCheckUnionIdByCode(string code,string state)
{
var r = await GetAsync<JsonResult<object>>($"NoAuth/v1/OnWebWxLogin?code={code}&state={state}");
return GetDataAfterSetCookie(r);
}
public async Task<JsonResult<object>> OnWebWxLoginCheckUnionId(string unionId, string openId)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/OnWebWxLoginCheckUnionId", new { unionId, openId });
return GetDataAfterSetCookie(r);
}
public async Task<JsonResult<object>> OnWebWxLogin(string Phone, string Captcha,
string Password, string UnionId, string WxWebOpenId)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnWebWxLogin",
new { Phone, Captcha, UnionId, openId = WxWebOpenId, Pwd = Password });
if (r.result)
{
var u = JObject.FromObject(r.data);
u.Add("cookie", cookies["PowerFun.AUTH"].Value);
return new JsonResult<object> { result = true, data = u, errMsg = r.errMsg };
}
else return r;
}
public async Task<JsonResult<object>> AddFeedBack(string content, List<string> files)
{
var res = Upload("feedback/add", new { content } , files);
return Newtonsoft.Json.JsonConvert.DeserializeObject<JsonResult<object>>(res);
}
public async Task<JsonResult<AppDownloadModel>> GetAppVersion()
{
return await GetAsync<JsonResult<AppDownloadModel>>("home/getversions");
}
public JsonResult<object> Update(UserResultModel currUser, out string cookie, string filePath = "")
{
cookie = App.CurrentUser.cookie;
//return await PostAsync<JsonResult<dynamic>>("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<string>();
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<JsonResult<object>>(res);
}
public async Task<JsonResult<JObject>> GetNotify()
{
return await GetAsync<JsonResult<JObject>>("/Home/GetNotify");
}
public async Task<JsonResult<JObject>> GetVersions()
{
return await GetAsync<JsonResult<JObject>>("/home/getversions");
}
public async Task<JsonResult<List<DeviceDetail>>> GetDeviceList()
{
return await GetAsync<JsonResult<List<DeviceDetail>>>("/home/GetDeviceList");
}
public async Task<JsonResult<JObject>> ResetPassword(string phone, string captcha, string newPwd)
{
return await PostAsync<JsonResult<JObject>>("NoAuth/v1/ResetPassword", new {phone,captcha,newPwd });
}
public async Task<JsonResult<object>> OnAppleIdLoginCheck(string userId,string token)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnAppleIdLoginCheck", new { appleUserId = userId, token });
return GetDataAfterSetCookie(r);
}
public async Task<JsonResult<object>> OnAppleIdLogin(string appleUserId, string token, string phone, string pwd, string Captcha)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnAppleIdLogin", new { appleUserId, token, phone, pwd, Captcha });
return GetDataAfterSetCookie(r);
}
public async Task<JsonResult<object>> OnAppleQuickLogin(string userId, string token)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnAppleQuickLogin", new { appleUserId = userId, token });
return GetDataAfterSetCookie(r);
}
public async Task<JsonResult<object>> OnFacebookLoginCheck(string userId, string token)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnFacebookLoginCheck", new { faceBookUserId = userId, token });
return GetDataAfterSetCookie(r);
}
public async Task<JsonResult<object>> OnFacebookLogin(string faceBookUserId, string token, string phone, string pwd, string Captcha)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnFacebookLogin", new { faceBookUserId, token, phone, pwd, Captcha });
return GetDataAfterSetCookie(r);
}
public async Task<JsonResult<object>> OnGoogleIdLoginCheck(string googleUserId, string token)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnGoogleIdLoginCheck", new { googleUserId, token });
return GetDataAfterSetCookie(r);
}
public async Task<JsonResult<object>> OnGoogleIdLogin(string googleUserId, string token, string phone, string pwd, string Captcha)
{
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnGoogleIdLogin", new { googleUserId, token, phone, pwd, Captcha });
return GetDataAfterSetCookie(r);
}
private JsonResult<object> GetDataAfterSetCookie(JsonResult<object> r)
{
if (r.result)
{
var data = JObject.FromObject(r.data);
if (data.Value<string>("success") != null && data.Value<string>("success") == "False")
{
return r;
}
else
{
var user = data.ToObject<UserResultModel>();
user.cookie = cookies["PowerFun.AUTH"].Value;
r.data = user;
}
}
return r;
}
//获取某是
public Task<JsonResult<List<EquitmentModel>>> GetEquitmentList(int? type =null)
{
var url = $"UserEquipment/GetList?type={ type }";
return GetAsync<JsonResult<List<EquitmentModel>>>(url);
}
}
}