323 lines
12 KiB
C#
Raw Normal View History

2021-03-22 16:05:40 +08:00
using Assets.Scripts.Apis.Models;
2021-04-21 16:16:14 +08:00
using Newtonsoft.Json;
2021-04-06 15:30:36 +08:00
using Newtonsoft.Json.Linq;
2021-03-22 16:05:40 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
2021-03-22 16:05:40 +08:00
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;
2021-05-12 10:42:26 +08:00
//if (ret.data.ConnectedToStrava != null)
2021-03-22 16:05:40 +08:00
{
user.ConnectedToStrava = ret.data.ConnectedToStrava;
}
user.Birthday = ret.data.Birthday;
2021-04-23 09:22:12 +08:00
user.LastUpdateFtpTime = ret.data.LastUpdateFtpTime;
user.LastUpdateWeightTime = ret.data.LastUpdateWeightTime;
user.LastUpdateBicycleWeightTime = ret.data.LastUpdateBicycleWeightTime;
user.Height = ret.data.Height;
2021-03-22 16:05:40 +08:00
//todo: check local database, insert new user
user.WebHost = ret.data.WebHost;
user.CanCreateRace = ret.data.CanCreateRace;
2021-03-22 16:05:40 +08:00
//PubCommData.CurrentUser = user;
2021-04-06 15:30:36 +08:00
user.cookie = cookies[0].Value;
2021-03-22 16:05:40 +08:00
return new JsonResult<UserResultModel>() { result = true, data = user };
}
else
{
return new JsonResult<UserResultModel>() { result = false, data = null, errMsg = ret.errMsg };
}
}
2021-04-21 16:16:14 +08:00
public async Task<JsonResult<object>> LoginV1(string phone, string pwd, string countryCode)
{
var param = new
{
Phone = phone,
Pwd = pwd,
countryCode
};
2021-03-22 16:05:40 +08:00
2021-04-21 16:16:14 +08:00
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[0].Value;
return new JsonResult<object>() { result = true, data = user };
}
else
{
return new JsonResult<object>() { result = false, data = ret.data, errMsg = ret.errMsg };
}
}
2021-03-22 16:05:40 +08:00
/// <summary>
/// 获取个人中心的统计信息
/// </summary>
/// <returns></returns>
2021-04-30 21:09:21 +08:00
public async Task<JsonResult<SummaryResultModel>> GetSummary()
2021-03-22 16:05:40 +08:00
{
2021-04-30 21:09:21 +08:00
var result = await GetAsync<JsonResult<SummaryResultModel>>("User/GetSummary");
2021-03-22 16:05:40 +08:00
return result;
}
public async Task<DateTime> GetNow()
2021-03-22 16:05:40 +08:00
{
var result = await GetAsync("NoAuth/GetNow");
return DateTime.Parse(System.Text.Encoding.UTF8.GetString(result)).ToLocalTime();//将服务器UTC时间转换成当地时区的时间
2021-03-22 16:05:40 +08:00
}
2021-04-21 16:16:14 +08:00
public async Task<JsonResult<object>> Register(string Phone, string Pwd, string Captcha)
2021-04-06 15:30:36 +08:00
{
var param = new
{
Phone,
Pwd,
Captcha
};
2021-04-21 16:16:14 +08:00
JsonResult<object> ret = null;
2021-04-06 15:30:36 +08:00
try
{
2021-04-21 16:16:14 +08:00
ret = await PostAsync<JsonResult<object>>("NoAuth/v1/Register", param);
if (ret.result)
{
var u = JObject.FromObject(ret.data).ToObject<UserResultModel>();
u.cookie = cookies[0].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 };
}
2021-04-06 15:30:36 +08:00
}
catch (Exception ex)
{
2021-04-21 16:16:14 +08:00
return new JsonResult<object> { result = false, errMsg = ex.Message };
2021-04-06 15:30:36 +08:00
}
}
2021-04-21 16:16:14 +08:00
public async Task<string> GetHeadImg(string phone)
{
return await GetStringAsync($"noauth/getheadimg?phone={phone}");
}
public async Task<JsonResult<JObject>> GetCaptcha(string phone)
2021-04-06 15:30:36 +08:00
{
return await PostAsync<JsonResult<JObject>>("NoAuth/v1/GetCaptcha",new {phone });
2021-04-06 15:30:36 +08:00
}
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()
{
2021-04-16 17:49:11 +08:00
var r = await PostAsync<JsonResult<UserResultModel>>("NoAuth/QuickLogin", null);
2021-04-28 15:21:06 +08:00
if (r.result)
{
r.data.cookie = cookies[0].Value;
}
2021-04-16 17:49:11 +08:00
return r;
}
2021-06-07 13:51:13 +08:00
public async Task<JsonResult<object>> OnWebWxLoginCheckUnionIdByCode(string code,string state)
{
var r = await GetAsync<JsonResult<object>>($"NoAuth/v1/OnWebWxLogin?code={code}&state={state}");
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[0].Value;
r.data = user;
}
}
return r;
}
2021-04-06 15:30:36 +08:00
public async Task<JsonResult<object>> OnWebWxLoginCheckUnionId(string unionId, string openId)
{
2021-04-15 15:58:37 +08:00
var r = await PostAsync<JsonResult<object>>("NoAuth/OnWebWxLoginCheckUnionId", new { unionId, openId });
if (r.result)
{
2021-04-19 15:44:11 +08:00
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[0].Value;
r.data = user;
}
2021-04-15 15:58:37 +08:00
}
return r;
2021-04-06 15:30:36 +08:00
}
2021-06-07 13:51:13 +08:00
public async Task<JsonResult<object>> OnWebWxLogin(string Phone, string Captcha,
string Password, string UnionId, string WxWebOpenId)
2021-04-06 15:30:36 +08:00
{
2021-06-07 13:51:13 +08:00
var r = await PostAsync<JsonResult<object>>("NoAuth/v1/OnWebWxLogin",
new { Phone, Captcha, UnionId, openId = WxWebOpenId, Pwd = Password });
2021-04-21 16:16:14 +08:00
if (r.result)
{
var u = JObject.FromObject(r.data);
u.Add("cookie", cookies[0].Value);
return new JsonResult<object> { result = true, data = u, errMsg = r.errMsg };
}
else return r;
2021-04-06 15:30:36 +08:00
}
2021-04-21 16:16:14 +08:00
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);
}
2021-07-28 14:59:21 +08:00
public async Task<JsonResult<AppDownloadModel>> GetAppVersion()
{
return await GetAsync<JsonResult<AppDownloadModel>>("home/getversions");
}
public JsonResult<object> Update(UserResultModel currUser, out string cookie, string filePath = "")
{
2021-07-30 20:39:23 +08:00
if (App.CurrentUser != null)
{
cookie = App.CurrentUser.cookie;
}
else
{
cookie = null;
}
//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,
2021-04-16 17:49:11 +08:00
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);
2021-04-23 15:36:18 +08:00
return Newtonsoft.Json.JsonConvert.DeserializeObject<JsonResult<object>>(res);
2021-04-16 17:49:11 +08:00
}
public async Task<JsonResult<JObject>> GetNotify()
{
return await GetAsync<JsonResult<JObject>>("/Home/GetNotify");
}
2021-04-21 16:16:14 +08:00
public async Task<JsonResult<JObject>> ResetPassword(string phone, string captcha, string newPwd)
{
return await PostAsync<JsonResult<JObject>>("NoAuth/v1/ResetPassword", new {phone,captcha,newPwd });
}
2021-03-22 16:05:40 +08:00
}
}