From 6e9ec1c080f1a2d8ea3f2e923acd807487ada271 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 21 十一月 2025 16:40:02 +0800
Subject: [PATCH] feat:开发

---
 ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs |   50 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 36 insertions(+), 14 deletions(-)

diff --git a/ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs b/ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs
index 3806ced..864a1d8 100644
--- a/ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs
+++ b/ApiTools.Core/Utils/WxmpUtils/WxmpUtils.cs
@@ -4,6 +4,7 @@
 using Azure.Core;
 using Furion.FriendlyException;
 using Furion.HttpRemote;
+using Furion.JsonSerialization;
 using Mapster;
 using Microsoft.Extensions.Caching.Distributed;
 using Microsoft.Extensions.Options;
@@ -15,8 +16,10 @@
 using System.Net.Http.Json;
 using System.Text;
 using System.Text.Json.Nodes;
+using System.Text.Unicode;
 using System.Threading;
 using System.Threading.Tasks;
+using static System.Net.Mime.MediaTypeNames;
 
 namespace ApiTools.Core
 {
@@ -127,19 +130,44 @@
         }
 
         /// <summary>
-        /// 璇ユ帴鍙g敤浜庡彂閫佽闃呮秷鎭�
+        /// 鏌ヨ璁㈤槄娑堟伅妯℃澘
         /// </summary>
         /// <param name="command"></param>
         /// <returns></returns>
-        public async Task<string> WxSend(SendRequest command)
+        public async Task<GetWxmpSubscribMessageTemplatesResponse> GetWxmpSubscribMessageTemplate(GetWxmpSubscribMessageTemplatesRequest command)
         {
             var option = options.Value.Items.FirstOrDefault(it => it.Code == command.WxmpCode);
             if (option == null || option.AppId.IsNull() || option.AppSecret.IsNull())
-                throw Oops.Oh(EnumErrorCodeType.s400, "鑾峰彇灏忕▼搴忕爜澶辫触锛岀己澶遍厤缃細WxmpOptions");
-            command.EnvVersion = option.EnvVersion;
+                throw Oops.Oh(EnumErrorCodeType.s400, "鍙戦�佽闃呮秷鎭け璐ワ紝缂哄け閰嶇疆锛歐xmpOptions");
             var accessToken = await GetAccessToken(command.WxmpCode);
-            var request = command.Adapt<SendRequest>();
-            var jsonContent = JsonConvert.SerializeObject(request, new JsonSerializerSettings
+            var jsonContent = JsonConvert.SerializeObject(command, new JsonSerializerSettings
+            {
+                NullValueHandling = NullValueHandling.Ignore
+            });
+            var response = await httpRemoteService.GetAsAsync<GetWxmpSubscribMessageTemplatesResponse>(
+                "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate",
+                builder => builder.WithQueryParameter("access_token", accessToken));
+            return response;
+        }
+
+        /// <summary>
+        /// 鍙戦�佽闃呮秷鎭�
+        /// </summary>
+        /// <param name="command"></param>
+        /// <returns></returns>
+        public async Task WxmpSendSubscribMessage(WxmpSendSubscribMessageRequest command)
+        {
+            var option = options.Value.Items.FirstOrDefault(it => it.Code == command.WxmpCode);
+            if (option == null || option.AppId.IsNull() || option.AppSecret.IsNull())
+                throw Oops.Oh(EnumErrorCodeType.s400, "鍙戦�佽闃呮秷鎭け璐ワ紝缂哄け閰嶇疆锛歐xmpOptions");
+            command.EnvVersion = option.EnvVersion;
+            //if (!options.Value.SubscribMessageTemplates.ContainsKey(command.TemplateId))
+            //    throw Oops.Oh(EnumErrorCodeType.s400, "鍙戦�佽闃呮秷鎭け璐ワ紝妯℃澘涓嶅瓨鍦�");
+            //var template = options.Value.SubscribMessageTemplates[command.TemplateId];
+            //command.TemplateId = template.TemplateId;
+            //if (command.Page.IsNull()) command.Page = template.Page;
+            var accessToken = await GetAccessToken(command.WxmpCode);
+            var jsonContent = JsonConvert.SerializeObject(command, new JsonSerializerSettings
             {
                 NullValueHandling = NullValueHandling.Ignore
             });
@@ -151,16 +179,10 @@
             if (response.Content.Headers.ContentType.ToString() == "application/json; charset=UTF-8")
             {
                 var jsonResult = await response.Content.ReadAsStringAsync();
-                var callback = jsonResult.JsonTo<SendResponse>();
+                var callback = jsonResult.JsonTo<WxmpSendSubscribMessageResponse>();
                 if (callback == null || callback.ErrorCode != 0)
-                    //throw Oops.Oh(EnumErrorCodeType.s510, $"鑾峰彇灏忕▼搴忕爜澶辫触锛歿callback.errmsg}锛岃鑱旂郴绠$悊鍛�");
-                return jsonResult;
+                    throw Oops.Oh(EnumErrorCodeType.s510, $"鍙戦�佽闃呮秷鎭け璐ワ細{callback.ErrorMessage}锛岃鑱旂郴绠$悊鍛�");
             }
-            //var stream = await response.Content.ReadAsStreamAsync();
-            //var result = AliyunOSSUtils.Upload(command, stream, command.OssFileName);
-            return "";
         }
-
-
     }
 }

--
Gitblit v1.9.1