|
|
@ -9,9 +9,11 @@ using Microsoft.EntityFrameworkCore; |
|
|
|
using Microsoft.Extensions.Caching.Memory; |
|
|
|
using Microsoft.Extensions.Caching.Memory; |
|
|
|
using Microsoft.VisualBasic; |
|
|
|
using Microsoft.VisualBasic; |
|
|
|
using NPOI.SS.Util; |
|
|
|
using NPOI.SS.Util; |
|
|
|
|
|
|
|
using System; |
|
|
|
using System.Collections.Concurrent; |
|
|
|
using System.Collections.Concurrent; |
|
|
|
using System.Runtime.CompilerServices; |
|
|
|
using System.Runtime.CompilerServices; |
|
|
|
using System.Security.Claims; |
|
|
|
using System.Security.Claims; |
|
|
|
|
|
|
|
using System.Text.Json; |
|
|
|
|
|
|
|
|
|
|
|
namespace AX.WebDrillServer.Hubs |
|
|
|
namespace AX.WebDrillServer.Hubs |
|
|
|
{ |
|
|
|
{ |
|
|
@ -33,6 +35,7 @@ namespace AX.WebDrillServer.Hubs |
|
|
|
_logger = logger; |
|
|
|
_logger = logger; |
|
|
|
this.roomManager = roomManager; |
|
|
|
this.roomManager = roomManager; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#region 房间相关API |
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// 获取当前房间列表 |
|
|
|
/// 获取当前房间列表 |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
@ -210,18 +213,149 @@ namespace AX.WebDrillServer.Hubs |
|
|
|
throw; |
|
|
|
throw; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
public async Task RoomSendMessage(string RoomId, string Message) |
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 推演API |
|
|
|
|
|
|
|
public async Task<StartDrillResultData> CallServer_StartDrill(StartDrillData startData) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
StartDrillResultData resultData = new(); |
|
|
|
|
|
|
|
var userId = Context.UserIdentifier; |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//通过用户id查询用户所在房间,如果用户可以同时存在两个或以上房间会有问题,建议web端传入RoomId |
|
|
|
|
|
|
|
var room = roomManager.GetRoomByUserId(userId!); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (room == null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
resultData.ResultType = DrillResult.Failed; |
|
|
|
|
|
|
|
return resultData; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (room.RoomId == userId)//判断是否是房主 |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
resultData.ResultType = DrillResult.Success; |
|
|
|
|
|
|
|
resultData.StartData = new() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Name = startData.Name, |
|
|
|
|
|
|
|
StartTime = DateTime.Now.Ticks, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
room.State = RoomState.Playing; |
|
|
|
|
|
|
|
room.DrillName = startData.Name; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await Clients.Group(room.RoomId).SendAsync("CallWeb_StartDrill", resultData); |
|
|
|
|
|
|
|
return resultData; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
resultData.ResultType = DrillResult.Failed; |
|
|
|
|
|
|
|
return resultData; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception e) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
throw new Exception(e.Message); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public async Task<EndDrillResultData> CallServer_EndDrill() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
EndDrillResultData resultData = new(); |
|
|
|
|
|
|
|
var userId = Context.UserIdentifier; |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var room = roomManager.GetRoomByUserId(userId!); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (room == null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
resultData.ResultType = DrillResult.Failed; |
|
|
|
|
|
|
|
return resultData; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (room.RoomId == userId) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
resultData.ResultType = DrillResult.Success; |
|
|
|
|
|
|
|
resultData.EndData = new() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
Name = room.DrillName!, |
|
|
|
|
|
|
|
StartTime = DateTime.Now.Ticks, |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
room.State = RoomState.Over; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await Clients.Group(room.RoomId).SendAsync("CallWeb_EndDrill", resultData); |
|
|
|
|
|
|
|
return resultData; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
await Clients.Group(RoomId).SendAsync(Message); |
|
|
|
resultData.ResultType = DrillResult.Failed; |
|
|
|
//TODO:保存数据 |
|
|
|
return resultData; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception e) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
throw new Exception(e.Message); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public async Task SendMessage(string user, string Message) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task CallServer_GetDrillShowData() |
|
|
|
{ |
|
|
|
{ |
|
|
|
await Clients.All.SendAsync(Message); |
|
|
|
|
|
|
|
//TODO:保存数据 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public async Task CallServer_SendOrder(object data) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//callWeb_sendOthersOrder |
|
|
|
|
|
|
|
var userId = Context.UserIdentifier; |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//通过用户id查询用户所在房间,如果用户可以同时存在两个或以上房间会有问题,建议web端传入RoomId |
|
|
|
|
|
|
|
var room = roomManager.GetRoomByUserId(userId!); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (room != null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
await Clients.Group(room.RoomId).SendAsync("callWeb_sendOthersOrder", userId, data); |
|
|
|
|
|
|
|
var info = new RoomSendInfo() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
RoomId = room.RoomId, |
|
|
|
|
|
|
|
UserId = userId!, |
|
|
|
|
|
|
|
InfoData = data.ToJson(), |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
roomManager.SaveRoomSendInfo(info); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception e) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
throw new Exception(e.Message); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public async Task<List<RoomSendInfo>> CallServer_GetCurrentState() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var userId = Context.UserIdentifier; |
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//通过用户id查询用户所在房间,如果用户可以同时存在两个或以上房间会有问题,建议web端传入RoomId |
|
|
|
|
|
|
|
var room = roomManager.GetRoomByUserId(userId!); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (room != null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return roomManager.GetRoomSendInfoByRoomId(room.RoomId); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
throw (new Exception("房间信息有误!")); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (Exception e) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
throw new Exception(e.Message); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
#region 上线下线处理 |
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// 上线处理 |
|
|
|
/// 上线处理 |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
@ -315,4 +449,5 @@ namespace AX.WebDrillServer.Hubs |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endregion |
|
|
|
} |
|
|
|
} |
|
|
|