181 lines
7.9 KiB
C#
Raw Normal View History

2022-04-22 18:24:56 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assets.Scripts.Apis.Models
{
2022-05-10 19:24:07 +08:00
public class GameRoomResult
{
public int Total { get; set; }
public List<GameRoomModel> List { get; set; }
}
2022-04-22 18:24:56 +08:00
public class GameRoomModel
{
public int Id { get; set; }
2022-05-10 19:24:07 +08:00
public int RoomId { get; set; }
2022-04-22 18:24:56 +08:00
public string Name { get; set; }
2022-05-10 19:24:07 +08:00
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
2022-04-22 18:24:56 +08:00
public int CloseTime { get; set; }
public int MaxMembers { get; set; }
public int UserId { get; set; }
public string NickName { get; set; }
public string Phone { get; set; }
2022-04-22 18:24:56 +08:00
public int Status { get; set; }
public string WxHeadImg { get; set; }
public string MapRouteName { get; set; }
public bool Enable3D { get; set; }
public bool EnableAR { get; set; }
public bool IsLock { get; set; }
2022-05-10 19:24:07 +08:00
public string Password { get; set; }
2022-04-22 18:24:56 +08:00
public string AltitudeGraph { get; set; }
public double AverageGrade { get; set; }
public double Distance { get; set; }
public double TotalClimb { get; set; }
//视频文件名
public string FileName { get; set; }
public int MapRouteId { get; set; }
//详情
public string BestNickName { get; set; }
public string BestWxHeadImg { get; set; }
public string BestTotalTime { get; set; }
public string FileUrl { get; set; }
2022-05-10 19:24:07 +08:00
public List<RoomRankItem> RoomRankingList { get;set;}
public List<RoomPlayerModel> RoomPlayerList { get; set; }
public static List<GameRoomModel> Parse(string s)
{
2022-05-13 09:28:58 +08:00
if (s.Equals("l"))
2022-05-10 19:24:07 +08:00
return null;
List<GameRoomModel> list = new List<GameRoomModel>();
try
{
2022-05-13 09:28:58 +08:00
var arr = s.Replace("l[", "").Replace("[","").Split(']');
2022-05-10 19:24:07 +08:00
foreach (var item in arr)
{
if (string.IsNullOrEmpty(item))
continue;
var detailIndex = item.IndexOf("detail");
var info = item.Substring(0, detailIndex - 1).Split(',');
var playerList = item.Substring(detailIndex);
DateTime? startTime = null;
if (!string.IsNullOrEmpty(info[18]))
{
startTime = Convert.ToDateTime(info[18]);
}
list.Add(new GameRoomModel()
{
RoomId = Convert.ToInt32(info[0]),
UserId = Convert.ToInt32(info[1]),
Name = info[2],
CloseTime = Convert.ToInt32(info[3]),
MaxMembers = Convert.ToInt32(info[4]),
MapRouteId = Convert.ToInt32(info[5]),
MapRouteName = info[6],
Distance = Convert.ToDouble(info[7]),
TotalClimb = Convert.ToDouble(info[8]),
AverageGrade = Convert.ToDouble(info[9]),
Enable3D = Convert.ToBoolean(info[10]),
EnableAR = Convert.ToBoolean(info[11]),
IsLock = Convert.ToBoolean(info[12]),
Password = info[13],
FileName = info[14],
FileUrl = info[15],
AltitudeGraph = info[16],
Status = Convert.ToInt32(info[17]),
StartTime = startTime,
RoomPlayerList = RoomPlayerModel.Parse(playerList)
});
}
}
catch (Exception ex)
{
}
//list[0,0,321313,30,5,5492,福州化工路-鼓山峰爬坡线路,19.17906,815.9704000000002,4.0466336723489045,True,False,True,213,,,http://192.168.0.102:5082/Map/AltitudeGraph?id=5492,0,:][0,0,2131,30,4,5492,福州化工路-鼓山峰爬坡线路,19.17906,815.9704000000002,4.0466336723489045,True,False,True,313,,,http://192.168.0.102:5082/Map/AltitudeGraph?id=5492,0,:][20,16652,3213,30,3,5492,福州化工路-鼓山峰爬坡线路,19.17906,815.9704000000002,4.0466336723489045,True,False,True,,,,http://192.168.0.102:5082/Map/AltitudeGraph?id=5492,0,2022/5/6 8:41:34:][19,16652,测试3d线路,30,2,5492,福州化工路-鼓山峰爬坡线路,19.17906,815.9704000000002,4.0466336723489045,True,False,True,,,,http://192.168.0.102:5082/Map/AltitudeGraph?id=5492,0,2022/5/6 1:39:57:][18,16652,测试,61,2,5492,福州化工路-鼓山峰爬坡线路,19.17906,815.9704000000002,4.0466336723489045,True,False,True,,,,http://192.168.0.102:5082/Map/AltitudeGraph?id=5492,0,2022/4/25 2:34:03:][17,16652,213,30,3,1217,翠屏山后山北向南,5.271609999999998,65.22760000000001,0.23308249282477278,False,False,True,,,,http://192.168.0.102:5082/Map/AltitudeGraph?id=1217,0,2022/4/25 2:20:13:]
return list;
}
}
public class RoomPlayerModel
{
public int RoomId { get; set; }
public string WxHeadImage { get; set; }
public string Name { get; set; }
2022-05-13 09:28:58 +08:00
public string Country { get; set; }
2022-05-10 19:24:07 +08:00
public int Sex { get; set; }
public double Weight { get; set; }
public int FTP { get; set; }
public int UserId { get; set; }
public DateTime JoinAt { get; set; }
public int Status { get; set; }
public double Process { get; set; }
public bool IsOwner { get; set; }
public DateTime LastActiveTime { get; set; }
public override string ToString()
{
return $"{RoomId},{UserId},{JoinAt},{Status},{Process},{IsOwner}";
}
public static List<RoomPlayerModel> Parse(string s)
{
List<RoomPlayerModel> list = new List<RoomPlayerModel>();
s = s.Replace("detail{", "");
if (string.IsNullOrEmpty(s))
return list;
var arr = s.Split('|');
foreach (var item in arr)
{
var info = item.Split(',');
list.Add(new RoomPlayerModel()
{
RoomId = Convert.ToInt32(info[0]),
UserId = Convert.ToInt32(info[1]),
JoinAt = Convert.ToDateTime(info[2]).ToLocalTime(),
Status = Convert.ToInt32(info[3]),
Process = Convert.ToInt32(info[4]),
IsOwner = Convert.ToBoolean(info[5]),
});
}
if (list.Count > 0)
{
var ids = list.Select(c => c.UserId);
var userList = ConfigHelper.mapApi.GetOnlineUserInfo(ids).data;
foreach (var item in list)
{
var user = userList.Where(c => c.Id == item.UserId).FirstOrDefault();
2022-08-05 15:10:09 +08:00
if (user != null)
{
item.WxHeadImage = user.HeadImage;
item.FTP = user.FTP;
item.Weight = user.Weight;
item.Name = user.Name;
item.Sex = user.Sex;
item.Country = user.Country;
}
2022-05-10 19:24:07 +08:00
}
}
return list;
}
}
public class RoomRankItem
{
public int UserId { get; set; }
public string WxHeadImg { get; set; }
public string NickName { get; set; }
public int Rank { get; set; }
public string Country { get; set; }
public string TotalTime { get; set; }
2022-08-05 15:10:09 +08:00
public string Power { get; set; }
public string WeightKG{ get; set; }
public string Gap { get; set; }
public string Source { get; set; }
2022-05-10 19:24:07 +08:00
public bool IsDNF { get; set; }
2022-08-05 15:10:09 +08:00
public double? HeartRate { get; set; }
2022-04-22 18:24:56 +08:00
}
}