Browse Source

创建房间接口相关信息修改

develop
杨栋梁 3 years ago
parent
commit
49daae5180
  1. 8
      AX.WebDrillServer/AX.WebDrillServer.sln
  2. 31
      AX.WebDrillServer/Hubs/FireDeductionHub.cs
  3. 4
      AX.WebDrillServer/Program.cs
  4. 16
      AX.WebDrillServer/Services/FireDeductionHub/FireDeductionRoom.cs
  5. 2
      AX.WebDrillServer/Services/FireDeductionHub/RoomCreateData.cs
  6. 2
      AX.WebDrillServer/Services/FireDeductionHub/RoomCreateResultData.cs
  7. 34
      AX.WebDrillServer/Services/FireDeductionHub/RoomManager.cs
  8. 25
      AX.WebDrillServer/Services/FireDeductionHub/RoomShowInfo.cs

8
AX.WebDrillServer/AX.WebDrillServer.sln

@ -5,8 +5,6 @@ VisualStudioVersion = 17.3.32825.248
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AX.WebDrillServer", "AX.WebDrillServer.csproj", "{B594C541-C030-412E-8B89-D38C24765D2D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestHub", "..\TestHub\TestHub.csproj", "{4B962EF6-1C2A-4283-B21D-46E6C57DD8D2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -20,12 +18,6 @@ Global
{B594C541-C030-412E-8B89-D38C24765D2D}.Release|Any CPU.Build.0 = Release|Any CPU
{B594C541-C030-412E-8B89-D38C24765D2D}.Test|Any CPU.ActiveCfg = Test|Any CPU
{B594C541-C030-412E-8B89-D38C24765D2D}.Test|Any CPU.Build.0 = Test|Any CPU
{4B962EF6-1C2A-4283-B21D-46E6C57DD8D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B962EF6-1C2A-4283-B21D-46E6C57DD8D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B962EF6-1C2A-4283-B21D-46E6C57DD8D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B962EF6-1C2A-4283-B21D-46E6C57DD8D2}.Release|Any CPU.Build.0 = Release|Any CPU
{4B962EF6-1C2A-4283-B21D-46E6C57DD8D2}.Test|Any CPU.ActiveCfg = Debug|Any CPU
{4B962EF6-1C2A-4283-B21D-46E6C57DD8D2}.Test|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

31
AX.WebDrillServer/Hubs/FireDeductionHub.cs

@ -34,11 +34,15 @@ namespace AX.WebDrillServer.Hubs
this.roomManager = roomManager;
}
public List<FireDeductionRoom> CallServer_GetRoomList(string userId)
public List<RoomShowInfo> CallServer_GetRoomList(string userId)
{
return roomManager.GetAllRooms();
}
/// <summary>
/// 根据Socket连接Id获取当前用户
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
public FireDeductionUser? CallServer_GetUser(string connectionId)
{
return roomManager.GetUserByConnectionId(connectionId);
@ -49,21 +53,32 @@ namespace AX.WebDrillServer.Hubs
/// <param name="createInfo"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public async Task<RoomCreateResultData> CallServer_CreateRoom(RoomCreateDto createInfo)
public async Task<RoomCreateResultData> CallServer_CreateRoom(RoomCreateData createInfo)
{
try
{
RoomCreateResultData resultData = new RoomCreateResultData();
var user = roomManager.GetUser(createInfo.UserId);
if (user == null)//如果查询不到创建房间的用户
if (user == null)//查询不到创建房间的用户
{
resultData.RoomCreateResult = RoomCreateResult.NoUserExist;
return resultData;
}
if (string.IsNullOrEmpty(createInfo.Name))//房间名称为空
{
resultData.RoomCreateResult = RoomCreateResult.RoomNameEmpty;
return resultData;
}
if (roomManager.IsRoomNameSame(user.UserId, createInfo.Name))//同一用户创建了相同名称的房间
{
resultData.RoomCreateResult = RoomCreateResult.;
resultData.RoomCreateResult = RoomCreateResult.RoomReName;
return resultData;
}
FireDeductionRoom room = new FireDeductionRoom();
room.Owner = createInfo.UserId;
room.OwnerName = user.UserName;
room.RoomId = Guid.NewGuid().ToString();
room.RoomName = createInfo.Name == null ? "未命名房间" : createInfo.Name;
room.RoomName = createInfo.Name = createInfo.Name;
room.Password = createInfo.Password;
roomManager.AddRoom(room);
@ -73,8 +88,8 @@ namespace AX.WebDrillServer.Hubs
await Groups.AddToGroupAsync(user.ConnectionId, room.RoomId);
await Clients.All.SendAsync("callWeb_refreshRoomList", roomManager.GetAllRooms());
resultData.CreatedRoom = room;
resultData.RoomCreateResult = RoomCreateResult.;
resultData.CreatedRoom = roomManager.RoomToInfo(room);
resultData.RoomCreateResult = RoomCreateResult.Success;
return resultData;
}
catch (Exception ex)

4
AX.WebDrillServer/Program.cs

@ -125,7 +125,7 @@ builder.Services
options.PayloadSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
options.PayloadSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
//全局配置signalr json 转枚举使用stringName还是intValue
//options.PayloadSerializerOptions.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));
options.PayloadSerializerOptions.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));
});
//#region Custom Services
@ -147,7 +147,7 @@ builder.Services
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
//全局配置Controller json 转枚举使用stringName还是intValue
//options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));
});
builder.Services.AddEndpointsApiExplorer();

16
AX.WebDrillServer/Services/FireDeductionHub/FireDeductionRoom.cs

@ -4,15 +4,16 @@ namespace AX.WebDrillServer.Services.FireDeductionHub
{
public enum RoomCreateResult
{
= 0,
,
Success = 0,//成功
RoomReName,//房间重名
RoomNameEmpty,//房间名为空
NoUserExist,//用户不存在
}
public enum RoomState
{
= 0,
,
Ready = 0,//准备
Playing,//进行中
Over,//结
}
/// <summary>
/// 沙盘推演房间
@ -25,7 +26,7 @@ namespace AX.WebDrillServer.Services.FireDeductionHub
/// 房间密码
/// </summary>
public string? Password;
public RoomState State { get; set; } = RoomState.;
public RoomState State { get; set; } = RoomState.Ready;
/// <summary>
/// 房间最大人数
/// </summary>
@ -34,6 +35,7 @@ namespace AX.WebDrillServer.Services.FireDeductionHub
/// 房间所属,默认是创建者
/// </summary>
public string Owner { get; set; } = null!;
public string OwnerName { get; set; } = null!;
public List<FireDeductionUser> Users { get; set; } = new List<FireDeductionUser>();
public Dictionary<DateTime, string>? FrameData { get; set; }
public Dictionary<DateTime, string>? EventData { get; set; }

2
AX.WebDrillServer/Services/FireDeductionHub/RoomCreateDto.cs → AX.WebDrillServer/Services/FireDeductionHub/RoomCreateData.cs

@ -1,6 +1,6 @@
namespace AX.WebDrillServer.Services.FireDeductionHub
{
public class RoomCreateDto
public class RoomCreateData
{
public string UserId { get; set; } = null!;
public string? Password { get; set; }

2
AX.WebDrillServer/Services/FireDeductionHub/RoomCreateResultData.cs

@ -3,6 +3,6 @@
public class RoomCreateResultData
{
public RoomCreateResult RoomCreateResult { get; set; }
public FireDeductionRoom? CreatedRoom { get; set; }
public RoomShowInfo? CreatedRoom { get; set; }
}
}

34
AX.WebDrillServer/Services/FireDeductionHub/RoomManager.cs

@ -5,11 +5,41 @@
private List<FireDeductionRoom> fireDeductionRooms = new List<FireDeductionRoom>();
private List<FireDeductionUser> fireDeductionUsers = new List<FireDeductionUser>();
public List<FireDeductionRoom> GetAllRooms()
public RoomShowInfo RoomToInfo(FireDeductionRoom source, RoomShowInfo info = null!)
{
if (info == null)
{
info = new RoomShowInfo();
}
info.RoomId = source.RoomId;
info.RoomName = source.RoomName;
info.Owner = source.Owner;
info.OwnerName = source.OwnerName;
info.IsLock = !string.IsNullOrEmpty(source.Password);
info.MaxPersons = source.MaxPersons;
info.State = source.State;
return info;
}
public bool IsRoomNameSame(string OwnerId, string RoomName)
{
lock (this)
{
return fireDeductionRooms;
var room = fireDeductionRooms.Where(r => r.Owner == OwnerId && r.RoomName == RoomName).SingleOrDefault();
return room != null;
}
}
public List<RoomShowInfo> GetAllRooms()
{
lock (this)
{
List<RoomShowInfo> infos = new List<RoomShowInfo>();
foreach (var item in fireDeductionRooms)
{
infos.Add(RoomToInfo(item));
}
return infos;
}
}
public List<FireDeductionUser> GetAllUsers()

25
AX.WebDrillServer/Services/FireDeductionHub/RoomShowInfo.cs

@ -0,0 +1,25 @@
namespace AX.WebDrillServer.Services.FireDeductionHub
{
/// <summary>
/// 给定的房间信息
/// </summary>
public class RoomShowInfo
{
public string RoomId { get; set; } = null!;
public string RoomName { get; set; } = null!;
public RoomState State { get; set; } = RoomState.Ready;
/// <summary>
/// 房间最大人数
/// </summary>
public int MaxPersons = 100;
/// <summary>
/// 房间所属,默认是创建者
/// </summary>
public string Owner { get; set; } = null!;
public string OwnerName { get; set; } = null!;
/// <summary>
/// 是否有密码
/// </summary>
public bool IsLock { get; set; }
}
}
Loading…
Cancel
Save