using Aop.Api.Domain; using ApiTools.Core; using ApiTools.Core.Entities.LogRecords; using Furion; using Furion.DatabaseAccessor; using Furion.HttpRemote; using log4net.Core; using MediatR; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ApiTools.Application { public class WxmpSubscribMessageCommandHandler( IRepository repWxmpSubscribMessageLog, ILogger logger, WxmpUtils utils, IHttpRemoteService httpRemoteService ) : IRequestHandler, IRequestHandler { private readonly IRepository repWxmpSubscribMessageLog = repWxmpSubscribMessageLog; private readonly ILogger logger = logger; private readonly WxmpUtils utils = utils; private readonly IHttpRemoteService httpRemoteService = httpRemoteService; /// /// 微信小程序发送订阅消息 /// /// /// /// public async Task Handle(SendWxmpSubscribMessageCommand request, CancellationToken cancellationToken) { await utils.WxmpSendSubscribMessage(new WxmpSendSubscribMessageRequest { Data = request.Data, TemplateId = request.TemplateId, Page = request.Page, WxmpCode = request.WxmpCode, Touser = request.Touser, }); var log = new WxmpSubscribMessageLog { Code = request.WxmpCode, OpenId = request.Touser, SubscribeStatusString = "send", TemplateId = request.TemplateId, Page = request.Page, Data = request.Data.ToJson() }; await repWxmpSubscribMessageLog.InsertNowAsync(log); return log.Id; } /// /// 微信小程序订阅消息通知 /// /// /// /// public async Task Handle(WxmpSubscribMessageNotifyCommand request, CancellationToken cancellationToken) { var env = App.GetConfig("Environment"); if (env == "Product") { try { var json = request.ToJson(); await httpRemoteService.PostAsStringAsync("http://118.178.252.28:8780/api/common/wxmp/wxmpSubscribMessageNotify", builder => builder.SetJsonContent(json)); } catch { } } var log = new WxmpSubscribMessageLog { Code = request.Code, OpenId = request.OpenId, PopupScene = request.Content.PopupScene, SubscribeStatusString = request.Content.SubscribeStatusString, TemplateId = request.Content.TemplateId }; await repWxmpSubscribMessageLog.InsertNowAsync(log); return log.Id; } } }