From e55edf4c63175c8f86de072dc2b78d7a85c8a527 Mon Sep 17 00:00:00 2001 From: youngq Date: Fri, 29 Nov 2024 14:25:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96OpenId=20=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=8F=91=E8=A8=80=E4=BA=BA=EF=BC=8C=E8=AE=BE=E7=BD=AE=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E9=BA=A6=E5=85=8B=E9=A3=8E=E5=92=8C=E6=91=84=E5=83=8F?= =?UTF-8?q?=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WGShare.API/AntDeploy.json | 4 +-- .../Controllers/Frontend/HomeController.cs | 2 +- .../Controllers/Frontend/RoomController.cs | 2 ++ WGShare.API/Controllers/PublicController.cs | 33 ++++++++++++++++++- WGShare.API/WGShare.API.xml | 6 ++++ WGShare.API/appsettings.json | 4 +++ .../MiniProgram/JsCode2SessionApiResult.cs | 17 ++++++++++ WGShare.Domain/GeneralModel/PagedResult.cs | 16 +++++++-- 8 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 WGShare.Domain/DTOs/MiniProgram/JsCode2SessionApiResult.cs diff --git a/WGShare.API/AntDeploy.json b/WGShare.API/AntDeploy.json index 20d2005..83bbf8a 100644 --- a/WGShare.API/AntDeploy.json +++ b/WGShare.API/AntDeploy.json @@ -115,11 +115,11 @@ "DockerConfig": { "Prot": "5192:5192", "AspNetCoreEnv": "", - "LastEnvName": "29dev", + "LastEnvName": "marking001", "RemoveDaysFromPublished": "10", "WorkDir": "", "Volume": "", - "Other": "--name wgshare-api -e ASPNETCORE_ENVIRONMENT=Development -e TZ=Asia/Shanghai", + "Other": "--name wgshare-api -e ASPNETCORE_ENVIRONMENT=Production -e TZ=Asia/Shanghai", "EnvPairList": [ { "EnvName": "29dev", diff --git a/WGShare.API/Controllers/Frontend/HomeController.cs b/WGShare.API/Controllers/Frontend/HomeController.cs index c2873e2..d2b6a4d 100644 --- a/WGShare.API/Controllers/Frontend/HomeController.cs +++ b/WGShare.API/Controllers/Frontend/HomeController.cs @@ -83,7 +83,7 @@ namespace WGShare.API.Controllers.Frontend //} } - return PagedResult.Create(result, total.Value); + return PagedResult.Create(result, total.Value, dto.PageSize); } /// diff --git a/WGShare.API/Controllers/Frontend/RoomController.cs b/WGShare.API/Controllers/Frontend/RoomController.cs index 613b835..1296ac1 100644 --- a/WGShare.API/Controllers/Frontend/RoomController.cs +++ b/WGShare.API/Controllers/Frontend/RoomController.cs @@ -95,6 +95,8 @@ namespace WGShare.API.Controllers.Frontend } user.IsRoomManager = false; + user.EnableCamera = false; + user.EnableMicr = false; RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, inputDTO.RoomNum), inputDTO.UserId, user); // 判断是否显示用户 diff --git a/WGShare.API/Controllers/PublicController.cs b/WGShare.API/Controllers/PublicController.cs index 78fff28..74b123b 100644 --- a/WGShare.API/Controllers/PublicController.cs +++ b/WGShare.API/Controllers/PublicController.cs @@ -11,6 +11,7 @@ using System.Text.RegularExpressions; using WGShare.API.Controllers.Basic; using WGShare.API.Helpers; using WGShare.Domain.DTOs.Login; +using WGShare.Domain.DTOs.MiniProgram; using WGShare.Domain.DTOs.User; using WGShare.Domain.Entities; using WGShare.Domain.Enums; @@ -26,10 +27,19 @@ namespace WGShare.API.Controllers public class PublicController : BasicController { private readonly ISqlSugarClient _sqlSugar; + private readonly IHttpClientFactory _httpClientFactory; + private readonly Microsoft.Extensions.Configuration.IConfiguration _configuration; + private readonly ILogger _logger; - public PublicController(ISqlSugarClient sqlSugar) + public PublicController(ISqlSugarClient sqlSugar, + IHttpClientFactory httpClientFactory, + Microsoft.Extensions.Configuration.IConfiguration configuration, + ILogger logger) { _sqlSugar = sqlSugar; + this._httpClientFactory = httpClientFactory; + this._configuration = configuration; + this._logger = logger; } /// @@ -69,5 +79,26 @@ namespace WGShare.API.Controllers else return value.ToString(); } + + /// + /// 获取小程序openid + /// + /// + [HttpGet("mini-openid"), AllowAnonymous] + public async Task GetOpenId(string js_code) + { + var queryString = $@"appid={_configuration["miniProgram:appId"]}&secret={_configuration["miniProgram:appSecret"]}&js_code={js_code}&grant_type=authorization_code"; + + var httpclient = _httpClientFactory.CreateClient(); + var result = await httpclient.GetFromJsonAsync($@"https://api.weixin.qq.com/sns/jscode2session?{queryString}"); + if (result == null || result.errorcode != 0 || string.IsNullOrWhiteSpace(result.openid)) + { + _logger.LogError($"获取openid失败,错误码:{result?.errorcode},错误信息:{result?.errmsg}"); + + throw Oops.Oh("小程序登录失败"); + } + + return result.openid; + } } } diff --git a/WGShare.API/WGShare.API.xml b/WGShare.API/WGShare.API.xml index 95c3f6f..82721a4 100644 --- a/WGShare.API/WGShare.API.xml +++ b/WGShare.API/WGShare.API.xml @@ -402,6 +402,12 @@ + + + 获取小程序openid + + + Redis 键,hash ,每个频道用户数量 diff --git a/WGShare.API/appsettings.json b/WGShare.API/appsettings.json index 8601f1f..ecd6315 100644 --- a/WGShare.API/appsettings.json +++ b/WGShare.API/appsettings.json @@ -38,5 +38,9 @@ "Endpoint": "oss-cn-chengdu.aliyuncs.com", "Host": "https://wgshare.oss-cn-chengdu.aliyuncs.com/", "BucketName": "wgshare" + }, + "miniProgram": { + "appId": "wx99885b1c181cda72", + "appSecret": "edd9cdb04c3f59fe70f2a70c396e5b0d" } } diff --git a/WGShare.Domain/DTOs/MiniProgram/JsCode2SessionApiResult.cs b/WGShare.Domain/DTOs/MiniProgram/JsCode2SessionApiResult.cs new file mode 100644 index 0000000..cc8b578 --- /dev/null +++ b/WGShare.Domain/DTOs/MiniProgram/JsCode2SessionApiResult.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WGShare.Domain.DTOs.MiniProgram +{ + public class JsCode2SessionApiResult + { + public string openid { get; set; } + public string seesionkey { get; set; } + public string unionid { get; set; } + public int errorcode { get; set; } + public string errmsg { get; set; } + } +} diff --git a/WGShare.Domain/GeneralModel/PagedResult.cs b/WGShare.Domain/GeneralModel/PagedResult.cs index 0a43033..2228a75 100644 --- a/WGShare.Domain/GeneralModel/PagedResult.cs +++ b/WGShare.Domain/GeneralModel/PagedResult.cs @@ -11,7 +11,7 @@ namespace WGShare.Domain.GeneralModel public class PagedResult { public PagedResult() { } - public PagedResult(IEnumerable list, int total) + public PagedResult(IEnumerable list, int total, int pageSize = 10) { Total = total; Items = list; @@ -20,9 +20,19 @@ namespace WGShare.Domain.GeneralModel public int Total { get; set; } public IEnumerable Items { get; private set; } - public static PagedResult Create(IEnumerable list, int total) + private int pageSize = 10; + + public int TotalPage { - return new PagedResult(list, total); + get + { + return (int)Math.Ceiling(Total / (double)pageSize); + } + } + + public static PagedResult Create(IEnumerable list, int total, int pageSize = 10) + { + return new PagedResult(list, total, pageSize); } } }