2020-09-17 10:23:26 +08:00
|
|
|
|
using OnlineUserPool.Model;
|
|
|
|
|
|
using OnlineUserPool.Unility;
|
|
|
|
|
|
|
|
|
|
|
|
using Serilog;
|
|
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
|
|
namespace OnlineUserPool.Hander
|
|
|
|
|
|
{
|
|
|
|
|
|
public class MapRecordRankingHander
|
|
|
|
|
|
{
|
|
|
|
|
|
private static List<MapRecordRanking> mapRecordRankings;
|
2020-09-22 15:59:41 +08:00
|
|
|
|
private static object locker = new object();//防止服务端响应慢,多次加载
|
2020-09-17 10:23:26 +08:00
|
|
|
|
private int top = int.Parse(ConfigHelp.Top);
|
|
|
|
|
|
|
|
|
|
|
|
public MapRecordRankingHander()
|
2020-09-22 15:59:41 +08:00
|
|
|
|
{
|
|
|
|
|
|
Init();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Init()
|
2020-09-17 10:23:26 +08:00
|
|
|
|
{
|
|
|
|
|
|
var randomUser = WebService.GetMapRouteRandomUser(new RandomRankingUserRequestVM() { top = top });
|
|
|
|
|
|
mapRecordRankings = WebService.GetRecordFileFromServer(randomUser.Select(n => n.RankingId).ToList());
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取虚拟人物数据
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public List<MsgModel> GetVirtualUserData()
|
|
|
|
|
|
{
|
|
|
|
|
|
List<MsgModel> msgModels = new List<MsgModel>();
|
|
|
|
|
|
if (mapRecordRankings != null && mapRecordRankings.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < mapRecordRankings.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
var item = mapRecordRankings[i];
|
|
|
|
|
|
TargetData targetData = item.GetCurrentTargetData();
|
|
|
|
|
|
List<string> prop = new List<string>()
|
|
|
|
|
|
{
|
|
|
|
|
|
Math.Round(targetData._Speed, 2).ToString(),
|
|
|
|
|
|
targetData._Power.ToString(),
|
|
|
|
|
|
targetData._Cadence.ToString()
|
|
|
|
|
|
};
|
|
|
|
|
|
msgModels.Add(new MsgModel()
|
|
|
|
|
|
{
|
|
|
|
|
|
exit = item.End,
|
|
|
|
|
|
IsCompleted = item.End,
|
2020-09-22 09:33:52 +08:00
|
|
|
|
MemberId = -item.UserId,//虚拟的人Id变为负数
|
2020-10-13 08:54:24 +08:00
|
|
|
|
Point = new double[] { Math.Round(targetData._Lat, 6), Math.Round(targetData._Lon, 6) },
|
2020-09-17 10:23:26 +08:00
|
|
|
|
Prop = string.Join(',', prop),
|
|
|
|
|
|
RouteId = item.RouteId,
|
|
|
|
|
|
EndDistance = targetData._Distance,
|
|
|
|
|
|
ShowVirtual = true,
|
|
|
|
|
|
CommandType = 1,
|
|
|
|
|
|
IsVirtual = true,
|
|
|
|
|
|
Speed = targetData._Speed
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Log.Error("加载虚拟人物错误:" + e.Message);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return msgModels;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 删除已经骑行完的人,添加新的人物进去
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void RemoveEndAndAddNewVirtualUser()
|
|
|
|
|
|
{
|
2020-09-22 15:59:41 +08:00
|
|
|
|
lock (locker)
|
2020-09-17 10:23:26 +08:00
|
|
|
|
{
|
|
|
|
|
|
var end = mapRecordRankings.FindAll(n => n.End);
|
2020-09-22 15:59:41 +08:00
|
|
|
|
if (end.Count == mapRecordRankings.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
Init();
|
|
|
|
|
|
}
|
2020-09-17 10:23:26 +08:00
|
|
|
|
if (end.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
mapRecordRankings.RemoveAll(n => n.End);
|
|
|
|
|
|
var randomUser = WebService.GetMapRouteRandomUser(new RandomRankingUserRequestVM()
|
|
|
|
|
|
{
|
|
|
|
|
|
top = int.Parse(ConfigHelp.Top) - end.Count,
|
|
|
|
|
|
ids = mapRecordRankings.Select(n => n.UserId.ToString()).ToList()
|
|
|
|
|
|
});
|
|
|
|
|
|
var addRankings = WebService.GetRecordFileFromServer(randomUser.Select(n => n.RankingId).ToList());
|
|
|
|
|
|
mapRecordRankings.AddRange(addRankings);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|