forked from powerfun/udpservice
细节调整
This commit is contained in:
1 parent
a9e8137aaa
commit
fec18db7a8
10 files changed
+135
-72
No files matched your search
@@ -14,7 +14,7 @@ namespace OnlineUserPool.Hander
|
||||
{
|
||||
private static List<MapRecordRanking> mapRecordRankings;
|
||||
private static object locker = new object();//防止服务端响应慢,多次加载
|
||||
private int top = int.Parse(ConfigHelp.Top);
|
||||
private int top = ConfigHelp.Top;
|
||||
|
||||
public MapRecordRankingHander()
|
||||
{
|
||||
@@ -23,7 +23,7 @@ namespace OnlineUserPool.Hander
|
||||
|
||||
private void Init()
|
||||
{
|
||||
var randomUser = WebService.GetMapRouteRandomUser(new RandomRankingUserRequestVM() { top = top });
|
||||
var randomUser = WebService.GetMapRouteRandomUser(top, null);
|
||||
mapRecordRankings = WebService.GetRecordFileFromServer(randomUser.Select(n => n.RankingId).ToList());
|
||||
}
|
||||
/// <summary>
|
||||
@@ -33,40 +33,44 @@ namespace OnlineUserPool.Hander
|
||||
public List<MsgModel> GetVirtualUserData()
|
||||
{
|
||||
List<MsgModel> msgModels = new List<MsgModel>();
|
||||
if (mapRecordRankings != null && mapRecordRankings.Count > 0)
|
||||
if (mapRecordRankings != null)
|
||||
{
|
||||
for (int i = 0; i < mapRecordRankings.Count; i++)
|
||||
{
|
||||
try
|
||||
{
|
||||
var item = mapRecordRankings[i];
|
||||
item.CurrentIndex++;
|
||||
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()
|
||||
//List<string> prop = new List<string>()
|
||||
//{
|
||||
// Math.Round(targetData._Speed, 2).ToString(),
|
||||
// targetData._Power.ToString(),
|
||||
// targetData._Cadence.ToString()
|
||||
//};
|
||||
var info = new MsgModel()
|
||||
{
|
||||
exit = item.End,
|
||||
IsCompleted = item.End,
|
||||
MemberId = -item.UserId,//虚拟的人Id变为负数
|
||||
MemberId = item.UserId,//虚拟的人Id变为负数
|
||||
Point = new double[] { Math.Round(targetData._Lat, 6), Math.Round(targetData._Lon, 6) },
|
||||
Prop = string.Join(',', prop),
|
||||
//Prop = string.Join(',', prop),
|
||||
RouteId = item.RouteId,
|
||||
EndDistance = targetData._Distance,
|
||||
EndDistance = Math.Round(targetData._Distance, 6),
|
||||
ShowVirtual = true,
|
||||
CommandType = 1,
|
||||
IsVirtual = true,
|
||||
Speed = targetData._Speed
|
||||
});
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error("加载虚拟人物错误:" + e.Message);
|
||||
}
|
||||
Speed = targetData._Speed,
|
||||
WeightKg = Math.Round(targetData._Power / item.Weight, 2),
|
||||
PreDistance = item.GetPreDistance()
|
||||
};
|
||||
msgModels.Add(info);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error("加载虚拟人物错误:" + e.Message + "\r\n" + e.StackTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
return msgModels;
|
||||
}
|
||||
@@ -79,20 +83,25 @@ namespace OnlineUserPool.Hander
|
||||
lock (locker)
|
||||
{
|
||||
var end = mapRecordRankings.FindAll(n => n.End);
|
||||
if (end.Count == mapRecordRankings.Count)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
//if (end.Count == mapRecordRankings.Count)
|
||||
//{
|
||||
// Init();
|
||||
//}
|
||||
if (end.Count > 0)
|
||||
{
|
||||
var virutalEndCount = mapRecordRankings.Count(d => d.UserId < 0 && d.End);
|
||||
var routeIds = mapRecordRankings.Select(n => n.RouteId).ToList();
|
||||
mapRecordRankings.RemoveAll(n => n.End);
|
||||
var randomUser = WebService.GetMapRouteRandomUser(new RandomRankingUserRequestVM()
|
||||
if (virutalEndCount > 0)
|
||||
{
|
||||
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);
|
||||
var randomUser = WebService.GetMapRouteRandomUser(ConfigHelp.Top - virutalEndCount, routeIds);
|
||||
|
||||
var str = "参数:" + (ConfigHelp.Top - virutalEndCount) + "," + string.Join(",",routeIds) + "\r\n";
|
||||
str += "服务端返回:" + Newtonsoft.Json.JsonConvert.SerializeObject(randomUser) +"\r\n";
|
||||
Log.Information(str);
|
||||
var addRankings = WebService.GetRecordFileFromServer(randomUser.Select(n => n.RankingId).ToList());
|
||||
mapRecordRankings.AddRange(addRankings);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user