From 64571676f04796bfa615bf0949b2e96783729a4a Mon Sep 17 00:00:00 2001 From: zpc Date: Sun, 7 Sep 2025 21:46:48 +0800 Subject: [PATCH] 333 --- .../Controllers/UserController.cs | 50 +++++++++++++++++++ CoreCms.Net.Web.WebApi/Doc.xml | 7 +++ 2 files changed, 57 insertions(+) diff --git a/CoreCms.Net.Web.WebApi/Controllers/UserController.cs b/CoreCms.Net.Web.WebApi/Controllers/UserController.cs index 54594a7..39d4a1f 100644 --- a/CoreCms.Net.Web.WebApi/Controllers/UserController.cs +++ b/CoreCms.Net.Web.WebApi/Controllers/UserController.cs @@ -155,6 +155,50 @@ namespace CoreCms.Net.Web.WebApi.Controllers _weChatOptions = weChatOptions.Value; } + /// + /// wx.login登陆成功之后发送的请求 + /// + /// + /// + [HttpPost] + public async Task GetWxUserId([FromBody] FMWxPost entity) + { + var jm = new WebApiCallBack(); + + var client = _weChatApiHttpClientFactory.CreateWxOpenClient(); + var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken(); + var request = new SnsJsCode2SessionRequest(); + request.JsCode = entity.code; + request.AccessToken = accessToken; + + var response = await client.ExecuteSnsJsCode2SessionAsync(request, HttpContext.RequestAborted); + if (response.ErrorCode == (int)WeChatReturnCode.ReturnCode.请求成功) + { + var userInfo = await _userWeChatInfoServices.QueryByClauseAsync(p => p.openid == response.OpenId); + if (userInfo != null) + { + if (userInfo.sessionKey != response.SessionKey) + { + await _userWeChatInfoServices.UpdateAsync( + p => new CoreCmsUserWeChatInfo() { sessionKey = response.SessionKey, updateTime = DateTime.Now }, + p => p.openid == userInfo.openid); + } + return new WebApiDto { Code = 0, Msg = "OK", Data = new { user = userInfo.userId, isMobile = userInfo.mobile?.Length > 0 } }; + } + userInfo = new CoreCmsUserWeChatInfo(); + userInfo.openid = response.OpenId; + userInfo.type = (int)GlobalEnumVars.UserAccountTypes.微信小程序; + userInfo.sessionKey = response.SessionKey; + userInfo.gender = 1; + userInfo.createTime = DateTime.Now; + await _userWeChatInfoServices.InsertAsync(userInfo); + if (userInfo is { userId: > 0 }) + { + return new WebApiDto { Code = 0, Msg = "OK", Data = new { user = userInfo.userId, isMobile = false } }; + } + } + return new WebApiDto { Code = -2, Msg = "", Data = new { user = 0, isMobile = false } }; + } #region wx.login登陆成功之后发送的请求========================================================= @@ -175,6 +219,12 @@ namespace CoreCms.Net.Web.WebApi.Controllers request.AccessToken = accessToken; var response = await client.ExecuteSnsJsCode2SessionAsync(request, HttpContext.RequestAborted); + //wxa/business/getuserphonenumber + //client.ExecuteWxaBusinessGetUserPhoneNumberAsync(new SKIT.FlurlHttpClient.Wechat.Api.Models.WxaBusinessGetUserPhoneNumberRequest() + //{ + // AccessToken = accessToken, + // Code = "" + //}, HttpContext.RequestAborted).GetAwaiter().GetResult(); if (response.ErrorCode == (int)WeChatReturnCode.ReturnCode.请求成功) { using (await _mutex.LockAsync()) diff --git a/CoreCms.Net.Web.WebApi/Doc.xml b/CoreCms.Net.Web.WebApi/Doc.xml index e678ff9..807222c 100644 --- a/CoreCms.Net.Web.WebApi/Doc.xml +++ b/CoreCms.Net.Web.WebApi/Doc.xml @@ -855,6 +855,13 @@ 构造函数 + + + wx.login登陆成功之后发送的请求 + + + + wx.login登陆成功之后发送的请求