This commit is contained in:
youngq 2025-01-17 18:01:05 +08:00
parent e29665cd90
commit ac22e5097c
13 changed files with 185 additions and 22 deletions

View File

@ -108,7 +108,7 @@ namespace WGShare.API.Controllers
pipe.Del(RedisKeyConstant.Data.GetRefreshTokenKey(tokens.RefreshToken)); pipe.Del(RedisKeyConstant.Data.GetRefreshTokenKey(tokens.RefreshToken));
} }
// 设置新的刷新token // 设置新的刷新token
pipe.Set(RedisKeyConstant.Data.GetRefreshTokenKey(refreshToken), user, TimeSpan.FromDays(7).TotalSeconds.ToInt32()); pipe.Set(RedisKeyConstant.Data.GetRefreshTokenKey(refreshToken), user, TimeSpan.FromDays(360).TotalSeconds.ToInt32());
// 记录accessToken // 记录accessToken
pipe.Set(RedisKeyConstant.Data.GetAccessTokenKey(user.Id), new AccessAndRefreshToken pipe.Set(RedisKeyConstant.Data.GetAccessTokenKey(user.Id), new AccessAndRefreshToken
{ {
@ -177,7 +177,7 @@ namespace WGShare.API.Controllers
using (var pipe = RedisHelper.Instance.StartPipe()) using (var pipe = RedisHelper.Instance.StartPipe())
{ {
pipe.Del(RedisKeyConstant.Data.GetRefreshTokenKey(refreshToken)); pipe.Del(RedisKeyConstant.Data.GetRefreshTokenKey(refreshToken));
pipe.Set(RedisKeyConstant.Data.GetRefreshTokenKey(refreshTokenNew), user, TimeSpan.FromDays(7).TotalSeconds.ToInt32()); pipe.Set(RedisKeyConstant.Data.GetRefreshTokenKey(refreshTokenNew), user, TimeSpan.FromDays(360).TotalSeconds.ToInt32());
pipe.Set(RedisKeyConstant.Data.GetAccessTokenKey(user.Id), new AccessAndRefreshToken pipe.Set(RedisKeyConstant.Data.GetAccessTokenKey(user.Id), new AccessAndRefreshToken
{ {
AccessToken = accessToken, AccessToken = accessToken,

View File

@ -8,12 +8,14 @@ using MiniExcelLibs;
using MiniExcelLibs.Attributes; using MiniExcelLibs.Attributes;
using MiniExcelLibs.OpenXml; using MiniExcelLibs.OpenXml;
using SqlSugar; using SqlSugar;
using SqlSugar.Extensions;
using System.IO; using System.IO;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using WGShare.API.Controllers.Basic; using WGShare.API.Controllers.Basic;
using WGShare.API.Helpers; using WGShare.API.Helpers;
using WGShare.Domain.Constant; using WGShare.Domain.Constant;
using WGShare.Domain.DTOs.Home;
using WGShare.Domain.DTOs.MiniProgram; using WGShare.Domain.DTOs.MiniProgram;
using WGShare.Domain.DTOs.Room; using WGShare.Domain.DTOs.Room;
using WGShare.Domain.Entities; using WGShare.Domain.Entities;
@ -354,5 +356,20 @@ namespace WGShare.API.Controllers.Frontend
_logger.LogError("返回 ContentType 未命中"); _logger.LogError("返回 ContentType 未命中");
throw Oops.Oh("二维码生成失败"); throw Oops.Oh("二维码生成失败");
} }
/// <summary>
/// 反馈打分
/// </summary>
/// <returns></returns>
[HttpPost("feedback")]
public async Task FeedbackScoring([FromBody] FeedBackRequset requset)
{
var entity = requset.Adapt<FeedbackIssue>();
entity.UID = UId.ToInt64();
entity.Types = string.Join(",", requset.Types);
await _sqlSugar.Insertable(entity).ExecuteCommandAsync();
}
} }
} }

View File

@ -104,17 +104,27 @@ namespace WGShare.API.Controllers.Frontend
var showUserId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), inputDTO.RoomNum); var showUserId = RedisHelper.Instance.HGet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), inputDTO.RoomNum);
if (showUserId == inputDTO.UserId || showUserId == user.ScreenShareId) if (showUserId == inputDTO.UserId || showUserId == user.ScreenShareId)
{ {
if (UId == inputDTO.UserId)
//var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum)); {
//var showUser = users.FirstOrDefault(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager || x.RoleId == ((int)RoleEnums.RoomManager).ToString()); // 表示自己取消自己的发言权限
//if (showUser != null) var users = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum));
//{ var showUser = users.FirstOrDefault(x => x.RoleId == ((int)RoleEnums.Admin).ToString() || x.IsRoomManager || x.RoleId == ((int)RoleEnums.RoomManager).ToString());
if (showUser != null)
// 取消显示用户,设置显示当前操作的管理员 {
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), inputDTO.RoomNum, UId); RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), inputDTO.RoomNum, showUser.UID);
await _hubContext.Clients.Group(inputDTO.RoomNum).ShowUser(UId, UserName, string.Empty, string.Empty); await _hubContext.Clients.Group(inputDTO.RoomNum).ShowUser(showUser.UID, showUser.UserName, string.Empty, string.Empty);
//} }
else
{
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), inputDTO.RoomNum, 0);
}
}
else
{
// 取消显示用户,设置显示当前操作的管理员
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), inputDTO.RoomNum, UId);
await _hubContext.Clients.Group(inputDTO.RoomNum).ShowUser(UId, UserName, string.Empty, string.Empty);
}
} }
await _hubContext.Clients.Group(inputDTO.RoomNum).ManagerRefresh(user, UId); await _hubContext.Clients.Group(inputDTO.RoomNum).ManagerRefresh(user, UId);

View File

@ -1,4 +1,5 @@
using WGShare.Domain.DTOs.User; using SignalRSwaggerGen.Attributes;
using WGShare.Domain.DTOs.User;
using WGShare.Domain.Entities; using WGShare.Domain.Entities;
namespace WGShare.API.Hubs namespace WGShare.API.Hubs
@ -6,6 +7,7 @@ namespace WGShare.API.Hubs
/// <summary> /// <summary>
/// 客户端消息 /// 客户端消息
/// </summary> /// </summary>
[SignalRHub]
public interface IMessageClient public interface IMessageClient
{ {
/// <summary> /// <summary>

View File

@ -99,7 +99,6 @@ namespace WGShare.API
options.SwaggerEndpoint($"/swagger/frontend/swagger.json", "前端"); options.SwaggerEndpoint($"/swagger/frontend/swagger.json", "前端");
options.SwaggerEndpoint($"/swagger/backend/swagger.json", "后端"); options.SwaggerEndpoint($"/swagger/backend/swagger.json", "后端");
options.SwaggerEndpoint($"/swagger/public/swagger.json", "公共接口"); options.SwaggerEndpoint($"/swagger/public/swagger.json", "公共接口");
}); });
app.UseCustomCors(); app.UseCustomCors();
} }

View File

@ -22,6 +22,7 @@ namespace WGShare.API.ServiceConfigs
{ {
services.AddSwaggerGen(w => services.AddSwaggerGen(w =>
{ {
w.AddSignalRSwaggerGen();
w.SwaggerDoc("frontend", new OpenApiInfo { Title = "前端", Version = "frontend" }); w.SwaggerDoc("frontend", new OpenApiInfo { Title = "前端", Version = "frontend" });
w.SwaggerDoc("backend", new OpenApiInfo { Title = "后端", Version = "backend" }); w.SwaggerDoc("backend", new OpenApiInfo { Title = "后端", Version = "backend" });
w.SwaggerDoc("public", new OpenApiInfo { Title = "公共接口", Version = "public" }); w.SwaggerDoc("public", new OpenApiInfo { Title = "公共接口", Version = "public" });

View File

@ -15,6 +15,7 @@
<PackageReference Include="Hangfire.AspNetCore" Version="1.8.14" /> <PackageReference Include="Hangfire.AspNetCore" Version="1.8.14" />
<PackageReference Include="Hangfire.Core" Version="1.8.14" /> <PackageReference Include="Hangfire.Core" Version="1.8.14" />
<PackageReference Include="Hangfire.MemoryStorage" Version="1.8.1.1" /> <PackageReference Include="Hangfire.MemoryStorage" Version="1.8.1.1" />
<PackageReference Include="SignalRSwaggerGen" Version="4.7.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
</ItemGroup> </ItemGroup>

View File

@ -156,6 +156,12 @@
<param name="roomNum"></param> <param name="roomNum"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WGShare.API.Controllers.Frontend.HomeController.FeedbackScoring(WGShare.Domain.DTOs.Home.FeedBackRequset)">
<summary>
反馈打分
</summary>
<returns></returns>
</member>
<member name="T:WGShare.API.Controllers.Frontend.RoomController"> <member name="T:WGShare.API.Controllers.Frontend.RoomController">
<summary> <summary>
会议室接口 会议室接口

View File

@ -36,12 +36,12 @@
"Issuer": "WGshareApi", "Issuer": "WGshareApi",
"Audience": "WGshareClient", "Audience": "WGshareClient",
// //
"Expires": 86400 "Expires": 600000
}, },
"Agora": { "Agora": {
"appId": "4a4f7be64fa1404ebda74784fe9ac381", "appId": "4a4f7be64fa1404ebda74784fe9ac381",
"appSecret": "255e05d96c794251b282a0de84242355", "appSecret": "255e05d96c794251b282a0de84242355",
"tokenExpireTimeInSecond": 7200, "tokenExpireTimeInSecond": 300,
"apiPrefix": "https://api.sd-rtn.com/", "apiPrefix": "https://api.sd-rtn.com/",
"clientId": "80cdc24f7dfa4497a37d98da95a3c4a4", "clientId": "80cdc24f7dfa4497a37d98da95a3c4a4",
"clientSecret": "8323581d4d464114b1f324b26cc62e09", "clientSecret": "8323581d4d464114b1f324b26cc62e09",

View File

@ -13,8 +13,8 @@
"SecretKey": "apDbztyqjSNuvWnezhbdUxduhDidZbF897t2uTJs53RMdY9Cai7eexavBhka3HN6mcTe9oohjFg6bNffRRkcfMqnVKNBnmyPzkRgNopHGJAL7KMwkeZdZ7BaWnT57jCi11", "SecretKey": "apDbztyqjSNuvWnezhbdUxduhDidZbF897t2uTJs53RMdY9Cai7eexavBhka3HN6mcTe9oohjFg6bNffRRkcfMqnVKNBnmyPzkRgNopHGJAL7KMwkeZdZ7BaWnT57jCi11",
"Issuer": "WGshareApi", "Issuer": "WGshareApi",
"Audience": "WGshareClient", "Audience": "WGshareClient",
// // 360
"Expires": 86400 "Expires": 31104000
}, },
"ConnectionStrings": { "ConnectionStrings": {
"metting": "Database=metting;Server=rm-2vc20nd3d11g0oh6g.rwlb.cn-chengdu.rds.aliyuncs.com;Port=3306;Uid=marking;Pwd=poiuytPOIUYT098765)(*&^%;AllowZeroDateTime=True;ConvertZeroDateTime=True;", "metting": "Database=metting;Server=rm-2vc20nd3d11g0oh6g.rwlb.cn-chengdu.rds.aliyuncs.com;Port=3306;Uid=marking;Pwd=poiuytPOIUYT098765)(*&^%;AllowZeroDateTime=True;ConvertZeroDateTime=True;",
@ -26,7 +26,7 @@
"Agora": { "Agora": {
"appId": "dcfc466a6ecb4a1f972630065dfb1e75", "appId": "dcfc466a6ecb4a1f972630065dfb1e75",
"appSecret": "fc77000e329b4be7a0e26fa789e20d00", "appSecret": "fc77000e329b4be7a0e26fa789e20d00",
"tokenExpireTimeInSecond": 7200, "tokenExpireTimeInSecond": 72000,
"apiPrefix": "https://api.sd-rtn.com/", "apiPrefix": "https://api.sd-rtn.com/",
"clientId": "80cdc24f7dfa4497a37d98da95a3c4a4", "clientId": "80cdc24f7dfa4497a37d98da95a3c4a4",
"clientSecret": "8323581d4d464114b1f324b26cc62e09", "clientSecret": "8323581d4d464114b1f324b26cc62e09",

View File

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WGShare.Domain.Enums;
namespace WGShare.Domain.DTOs.Home
{
public class FeedBackRequset
{
/// <summary>
/// 分值
/// </summary>
public double Score { get; set; }
/// <summary>
/// 反馈内容
/// </summary>
public string OtherContent { get; set; }
/// <summary>
/// 反馈类型
/// </summary>
public List<int> Types { get; set; }
}
}

View File

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
using WGShare.Domain.Enums;
using Yitter.IdGenerator;
namespace WGShare.Domain.Entities
{
/// <summary>
/// 反馈问题表
///</summary>
[SugarTable("feedback_issue")]
public class FeedbackIssue
{
/// <summary>
///
///</summary>
[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
public string Id { get; set; } = YitIdHelper.NextId().ToString();
/// <summary>
/// 创建时间
/// 默认值: CURRENT_TIMESTAMP
///</summary>
[SugarColumn(ColumnName = "create_time", IsOnlyIgnoreInsert = true, IsOnlyIgnoreUpdate = true)]
public DateTime CreateTime { get; set; }
/// <summary>
/// 用户id
///</summary>
[SugarColumn(ColumnName = "uid")]
public long UID { get; set; }
/// <summary>
/// 分值
///</summary>
[SugarColumn(ColumnName = "score")]
public double Score { get; set; }
/// <summary>
/// 反馈其他
///</summary>
[SugarColumn(ColumnName = "other_content")]
public string OtherContent { get; set; }
/// <summary>
/// 反馈其他
///</summary>
[SugarColumn(ColumnName = "types")]
public string Types { get; set; }
}
}

View File

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WGShare.Domain.Enums
{
/// <summary>
/// 反馈问题枚举
/// </summary>
public enum FeedbackIssueEnums
{
/// <summary>
/// 其他
/// </summary>
Other = 1,
/// <summary>
/// 软件卡顿
/// </summary>
SoftwareLag = 2,
/// <summary>
/// 设计不合理
/// </summary>
UnreasonableDesign = 3,
/// <summary>
/// 功能太少
/// </summary>
TooLittleFeatures = 4,
/// <summary>
/// 通话不流畅
/// </summary>
CallIsNotSmooth = 5,
/// <summary>
/// 视频卡顿
/// </summary>
VideoLag = 6,
/// <summary>
/// 操作麻烦
/// </summary>
OperationTrouble
}
}