181 lines
7.9 KiB
C#
181 lines
7.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Assets.Scripts.Apis.Models
|
|
{
|
|
public class GameRoomResult
|
|
{
|
|
public int Total { get; set; }
|
|
public List<GameRoomModel> List { get; set; }
|
|
}
|
|
public class GameRoomModel
|
|
{
|
|
public int Id { get; set; }
|
|
public int RoomId { get; set; }
|
|
public string Name { get; set; }
|
|
public DateTime? StartTime { get; set; }
|
|
public DateTime? EndTime { get; set; }
|
|
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; }
|
|
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; }
|
|
public string Password { get; set; }
|
|
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; }
|
|
public List<RoomRankItem> RoomRankingList { get;set;}
|
|
public List<RoomPlayerModel> RoomPlayerList { get; set; }
|
|
public static List<GameRoomModel> Parse(string s)
|
|
{
|
|
if (s.Equals("l"))
|
|
return null;
|
|
List<GameRoomModel> list = new List<GameRoomModel>();
|
|
try
|
|
{
|
|
var arr = s.Replace("l[", "").Replace("[","").Split(']');
|
|
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; }
|
|
public string Country { get; set; }
|
|
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();
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
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; }
|
|
public string Power { get; set; }
|
|
public string WeightKG{ get; set; }
|
|
public string Gap { get; set; }
|
|
public string Source { get; set; }
|
|
public bool IsDNF { get; set; }
|
|
public double? HeartRate { get; set; }
|
|
}
|
|
}
|