parent
ea382b1aa1
commit
bc901d928f
|
|
@ -115,11 +115,11 @@
|
||||||
"DockerConfig": {
|
"DockerConfig": {
|
||||||
"Prot": "5192:5192",
|
"Prot": "5192:5192",
|
||||||
"AspNetCoreEnv": "",
|
"AspNetCoreEnv": "",
|
||||||
"LastEnvName": "marking001",
|
"LastEnvName": "29dev",
|
||||||
"RemoveDaysFromPublished": "10",
|
"RemoveDaysFromPublished": "10",
|
||||||
"WorkDir": "",
|
"WorkDir": "",
|
||||||
"Volume": "",
|
"Volume": "",
|
||||||
"Other": "--name wgshare-api -e ASPNETCORE_ENVIRONMENT=Production -e TZ=Asia/Shanghai",
|
"Other": "--name wgshare-api -e ASPNETCORE_ENVIRONMENT=Development -e TZ=Asia/Shanghai",
|
||||||
"EnvPairList": [
|
"EnvPairList": [
|
||||||
{
|
{
|
||||||
"EnvName": "29dev",
|
"EnvName": "29dev",
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,7 @@ namespace WGShare.API.Controllers
|
||||||
btnAutn.Add(new Claim("ssid", user.ScreenShareId));
|
btnAutn.Add(new Claim("ssid", user.ScreenShareId));
|
||||||
btnAutn.Add(new Claim("year", user.Year.ToString()));
|
btnAutn.Add(new Claim("year", user.Year.ToString()));
|
||||||
btnAutn.Add(new Claim("subject", ((int)user.Subject).ToString()));
|
btnAutn.Add(new Claim("subject", ((int)user.Subject).ToString()));
|
||||||
|
btnAutn.Add(new Claim("anonymous", user.IsAnonymous ? "1" : "0"));
|
||||||
|
|
||||||
// 获取已登录的token
|
// 获取已登录的token
|
||||||
var tokens = RedisHelper.Instance.Get<AccessAndRefreshToken>(RedisKeyConstant.Data.GetAccessTokenKey(user.Id));
|
var tokens = RedisHelper.Instance.Get<AccessAndRefreshToken>(RedisKeyConstant.Data.GetAccessTokenKey(user.Id));
|
||||||
|
|
@ -169,6 +170,7 @@ namespace WGShare.API.Controllers
|
||||||
btnAutn.Add(new Claim("ssid", user.ScreenShareId));
|
btnAutn.Add(new Claim("ssid", user.ScreenShareId));
|
||||||
btnAutn.Add(new Claim("year", user.Year.ToString()));
|
btnAutn.Add(new Claim("year", user.Year.ToString()));
|
||||||
btnAutn.Add(new Claim("subject", ((int)user.Subject).ToString()));
|
btnAutn.Add(new Claim("subject", ((int)user.Subject).ToString()));
|
||||||
|
btnAutn.Add(new Claim("anonymous", user.IsAnonymous ? "1" : "0"));
|
||||||
|
|
||||||
var accessToken = _jwtHelper.CreateToken(user.Id, btnAutn);
|
var accessToken = _jwtHelper.CreateToken(user.Id, btnAutn);
|
||||||
var refreshTokenNew = Guid.NewGuid().ToString();
|
var refreshTokenNew = Guid.NewGuid().ToString();
|
||||||
|
|
@ -264,6 +266,7 @@ namespace WGShare.API.Controllers
|
||||||
btnAutn.Add(new Claim("account", user.Account));
|
btnAutn.Add(new Claim("account", user.Account));
|
||||||
btnAutn.Add(new Claim("uname", loginDTO.NickName));
|
btnAutn.Add(new Claim("uname", loginDTO.NickName));
|
||||||
btnAutn.Add(new Claim("ssid", user.ScreenShareId));
|
btnAutn.Add(new Claim("ssid", user.ScreenShareId));
|
||||||
|
btnAutn.Add(new Claim("anonymous", user.IsAnonymous ? "1" : "0"));
|
||||||
|
|
||||||
var accessToken = _jwtHelper.CreateToken(user.Id, btnAutn);
|
var accessToken = _jwtHelper.CreateToken(user.Id, btnAutn);
|
||||||
return Ok(new
|
return Ok(new
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ namespace WGShare.API.Controllers.Basic
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var roleId = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "roleid").Value;
|
var roleId = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "roleid")?.Value;
|
||||||
if (string.IsNullOrWhiteSpace(roleId) || !int.TryParse(roleId, out int role) || role == 0)
|
if (string.IsNullOrWhiteSpace(roleId) || !int.TryParse(roleId, out int role) || role == 0)
|
||||||
{
|
{
|
||||||
throw Oops.Oh("用户信息有误,请重新登录");
|
throw Oops.Oh("用户信息有误,请重新登录");
|
||||||
|
|
@ -72,7 +72,7 @@ namespace WGShare.API.Controllers.Basic
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var tenant = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "tenant").Value;
|
var tenant = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "tenant")?.Value;
|
||||||
if (string.IsNullOrWhiteSpace(tenant))
|
if (string.IsNullOrWhiteSpace(tenant))
|
||||||
{
|
{
|
||||||
throw Oops.Oh("用户信息有误,请重新登录");
|
throw Oops.Oh("用户信息有误,请重新登录");
|
||||||
|
|
@ -85,7 +85,7 @@ namespace WGShare.API.Controllers.Basic
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var ssId = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "ssid").Value;
|
var ssId = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "ssid")?.Value;
|
||||||
if (string.IsNullOrWhiteSpace(ssId))
|
if (string.IsNullOrWhiteSpace(ssId))
|
||||||
{
|
{
|
||||||
throw Oops.Oh("用户信息有误,请重新登录");
|
throw Oops.Oh("用户信息有误,请重新登录");
|
||||||
|
|
@ -121,7 +121,7 @@ namespace WGShare.API.Controllers.Basic
|
||||||
return year;
|
return year;
|
||||||
}
|
}
|
||||||
|
|
||||||
var year_str = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "year").Value;
|
var year_str = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "year")?.Value;
|
||||||
if (string.IsNullOrWhiteSpace(year_str) || !int.TryParse(year_str, out year))
|
if (string.IsNullOrWhiteSpace(year_str) || !int.TryParse(year_str, out year))
|
||||||
{
|
{
|
||||||
throw Oops.Oh("用户信息有误,请重新登录");
|
throw Oops.Oh("用户信息有误,请重新登录");
|
||||||
|
|
@ -140,7 +140,7 @@ namespace WGShare.API.Controllers.Basic
|
||||||
return (SubjectType)subject;
|
return (SubjectType)subject;
|
||||||
}
|
}
|
||||||
|
|
||||||
var subject_str = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "subject").Value;
|
var subject_str = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "subject")?.Value;
|
||||||
if (string.IsNullOrWhiteSpace(subject_str) || !int.TryParse(subject_str, out subject))
|
if (string.IsNullOrWhiteSpace(subject_str) || !int.TryParse(subject_str, out subject))
|
||||||
{
|
{
|
||||||
throw Oops.Oh("用户信息有误,请重新登录");
|
throw Oops.Oh("用户信息有误,请重新登录");
|
||||||
|
|
@ -149,5 +149,25 @@ namespace WGShare.API.Controllers.Basic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 匿名用户
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAnonymous
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (!HttpContext.User.Identity.IsAuthenticated)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
var anonymous_str = HttpContext.User.Claims.FirstOrDefault(x => x.Type == "anonymous")?.Value;
|
||||||
|
if (string.IsNullOrWhiteSpace(anonymous_str) || !int.TryParse(anonymous_str, out int anonymous))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return anonymous == 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,9 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
entity.Id = YitIdHelper.NextId().ToString();
|
entity.Id = YitIdHelper.NextId().ToString();
|
||||||
entity.TenantId = TenantId;
|
entity.TenantId = TenantId;
|
||||||
|
|
||||||
if (await _sqlSugar.Queryable<Room>().AnyAsync(x => x.RoomNum == inputDTO.RoomNum))
|
|
||||||
|
var room = await _sqlSugar.Queryable<Room>().FirstAsync(x => x.RoomNum == inputDTO.RoomNum);
|
||||||
|
if (room == null)
|
||||||
{
|
{
|
||||||
throw Oops.Oh("无效会议号,请重新输入");
|
throw Oops.Oh("无效会议号,请重新输入");
|
||||||
}
|
}
|
||||||
|
|
@ -127,7 +129,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
{
|
{
|
||||||
var entity = inputDTO.Adapt<Room>();
|
var entity = inputDTO.Adapt<Room>();
|
||||||
return await _sqlSugar.Updateable(entity)
|
return await _sqlSugar.Updateable(entity)
|
||||||
.UpdateColumns(x => new { x.Year, x.Subject })
|
.UpdateColumns(x => new { x.Year, x.Subject, x.RoomName, x.AllowAnonymous })
|
||||||
.ExecuteCommandHasChangeAsync();
|
.ExecuteCommandHasChangeAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ using Hangfire.MemoryStorage.Database;
|
||||||
using Mapster;
|
using Mapster;
|
||||||
using Masuit.Tools;
|
using Masuit.Tools;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Components.Forms;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
|
@ -63,9 +64,9 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
public async Task SetRoomManager([FromBody] RoomManagerInputDTO inputDTO)
|
public async Task SetRoomManager([FromBody] RoomManagerInputDTO inputDTO)
|
||||||
{
|
{
|
||||||
var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum));
|
var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum));
|
||||||
if (users.Count(x => x.IsRoomManager || x.RoleId == ((int)RoleEnums.Admin).ToString() || x.RoleId == ((int)RoleEnums.RoomManager).ToString()) >= 12)
|
if (users.Count(x => x.IsRoomManager || x.RoleId == ((int)RoleEnums.Admin).ToString() || x.RoleId == ((int)RoleEnums.RoomManager).ToString()) >= 32)
|
||||||
{
|
{
|
||||||
throw Oops.Oh("房间已达到12个发言人限制。请移除一位发言人");
|
throw Oops.Oh("房间已达到32个发言人限制。请移除一位发言人");
|
||||||
}
|
}
|
||||||
var user = users.FirstOrDefault(x => x.UID == inputDTO.UserId);
|
var user = users.FirstOrDefault(x => x.UID == inputDTO.UserId);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
|
|
@ -192,7 +193,34 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
[HttpGet("checkout"), AllowAnonymous]
|
[HttpGet("checkout"), AllowAnonymous]
|
||||||
public async Task<bool> ExistsRoom([FromQuery] string roomNum)
|
public async Task<bool> ExistsRoom([FromQuery] string roomNum)
|
||||||
{
|
{
|
||||||
return await _sqlSugar.Queryable<Room>().AnyAsync(x => x.RoomNum == roomNum && x.IsDelete == false);
|
if (IsAnonymous)
|
||||||
|
{
|
||||||
|
// 匿名用户
|
||||||
|
var room = await _sqlSugar.Queryable<Room>().FirstAsync(x => x.RoomNum == roomNum && x.IsDelete == false);
|
||||||
|
if (room == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!room.AllowAnonymous)
|
||||||
|
{
|
||||||
|
throw Oops.Oh("房间不允许匿名用户进入");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 非匿名用户
|
||||||
|
var room = await _sqlSugar.Queryable<Room>()
|
||||||
|
.WhereIF(Year > 0 && RoleId == RoleEnums.User, x => x.Year == Year || x.Year == 0)
|
||||||
|
.WhereIF(Subject > 0 && RoleId == RoleEnums.User, x => x.Subject == Subject || x.Subject == 0)
|
||||||
|
.FirstAsync(x => x.RoomNum == roomNum && x.IsDelete == false);
|
||||||
|
if (room == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -688,5 +716,21 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
|
|
||||||
await _sqlSugar.Insertable(entitys).ExecuteCommandAsync();
|
await _sqlSugar.Insertable(entitys).ExecuteCommandAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改昵称
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPut("alter-uname")]
|
||||||
|
public async Task ModifyNickName([FromBody] UserModifyNickNameDto dto)
|
||||||
|
{
|
||||||
|
var user = RedisHelper.Instance.HGet<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, dto.RoomNum), dto.UId.ToString());
|
||||||
|
user.UserName = dto.NickName;
|
||||||
|
|
||||||
|
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, dto.RoomNum), dto.UId.ToString(), user);
|
||||||
|
|
||||||
|
await _hubContext.Clients.Group(dto.RoomNum).ModifyNickName(dto.UId, dto.NickName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,5 +144,13 @@ namespace WGShare.API.Hubs
|
||||||
/// <param name="driversJsonString"></param>
|
/// <param name="driversJsonString"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task ShowDriverList(string driversJsonString);
|
Task ShowDriverList(string driversJsonString);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改昵称
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="UId"></param>
|
||||||
|
/// <param name="NickName"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task ModifyNickName(long UId, string NickName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,11 @@
|
||||||
<param name="file"></param>
|
<param name="file"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:WGShare.API.Controllers.Basic.BasicController.IsAnonymous">
|
||||||
|
<summary>
|
||||||
|
匿名用户
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:WGShare.API.Controllers.Frontend.AgoraCallbackController">
|
<member name="T:WGShare.API.Controllers.Frontend.AgoraCallbackController">
|
||||||
<summary>
|
<summary>
|
||||||
Agora接口
|
Agora接口
|
||||||
|
|
@ -323,6 +328,13 @@
|
||||||
<param name="list"></param>
|
<param name="list"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.ModifyNickName(WGShare.Domain.DTOs.User.UserModifyNickNameDto)">
|
||||||
|
<summary>
|
||||||
|
修改昵称
|
||||||
|
</summary>
|
||||||
|
<param name="dto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.UserController.GetUserList(System.String,System.Nullable{System.Boolean},WGShare.Domain.GeneralModel.PagedBaseDto)">
|
<member name="M:WGShare.API.Controllers.Frontend.UserController.GetUserList(System.String,System.Nullable{System.Boolean},WGShare.Domain.GeneralModel.PagedBaseDto)">
|
||||||
<summary>
|
<summary>
|
||||||
获取用户列表
|
获取用户列表
|
||||||
|
|
@ -676,6 +688,14 @@
|
||||||
<param name="driversJsonString"></param>
|
<param name="driversJsonString"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WGShare.API.Hubs.IMessageClient.ModifyNickName(System.Int64,System.String)">
|
||||||
|
<summary>
|
||||||
|
修改昵称
|
||||||
|
</summary>
|
||||||
|
<param name="UId"></param>
|
||||||
|
<param name="NickName"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.SessionManageHub.JoinChannel(System.String,System.Boolean,System.Boolean,System.Boolean)">
|
<member name="M:WGShare.API.Hubs.SessionManageHub.JoinChannel(System.String,System.Boolean,System.Boolean,System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
加入频道
|
加入频道
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ namespace WGShare.Domain.DTOs.Room
|
||||||
/// 科目
|
/// 科目
|
||||||
///</summary>
|
///</summary>
|
||||||
public SubjectType Subject { get; set; }
|
public SubjectType Subject { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -47,5 +48,10 @@ namespace WGShare.Domain.DTOs.Room
|
||||||
/// 会议室名称
|
/// 会议室名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string RoomName { get; set; }
|
public string RoomName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否允许匿名
|
||||||
|
/// </summary>
|
||||||
|
public bool AllowAnonymous { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WGShare.Domain.DTOs.User
|
||||||
|
{
|
||||||
|
public class UserModifyNickNameDto
|
||||||
|
{
|
||||||
|
public string RoomNum { get; set; }
|
||||||
|
public string NickName { get; set; }
|
||||||
|
public long UId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -62,5 +62,11 @@ namespace WGShare.Domain.Entities
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName = "subject")]
|
[SugarColumn(ColumnName = "subject")]
|
||||||
public SubjectType Subject { get; set; }
|
public SubjectType Subject { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否允许匿名
|
||||||
|
///</summary>
|
||||||
|
[SugarColumn(ColumnName = "allow_anonymous")]
|
||||||
|
public bool AllowAnonymous { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue