Browse Source

Merge pull request #910 from colinin/upt-2

改善不合理的接口提示
pull/914/head
yx lin 2 years ago
committed by GitHub
parent
commit
828f136a7b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      apps/vue/src/views/account/setting/SecureSetting.vue
  2. 11
      apps/vue/src/views/auditing/components/ModalData.ts
  3. 11
      apps/vue/src/views/sys/logging/datas/ModalData.ts
  4. 6
      aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Common/LINGYUN/Abp/WeChat/Common/Messages/MessageResolver.cs
  5. 2
      aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official.Application.Contracts/LINGYUN/Abp/WeChat/Official/Message/Dto/MessageHandleInput.cs
  6. 9
      aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/AbpWeChatOfficialModule.cs
  7. 4
      aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Messages/WeChatOfficialEventResolveContributor.cs
  8. 4
      aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Messages/WeChatOfficialMessageResolveContributor.cs
  9. 18
      aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Messages/WeChatOfficialMessageResolveContributorBase.cs
  10. 2
      aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work.Application.Contracts/LINGYUN/Abp/WeChat/Work/Message/Dto/MessageHandleInput.cs
  11. 4
      aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/IdentityErrorCodes.cs
  12. 1
      aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/en.json
  13. 1
      aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/zh-Hans.json
  14. 6
      aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/IdentityUserManagerExtensions.cs
  15. 21
      aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.Configure.cs
  16. 1
      aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.cs
  17. 8
      aspnet-core/services/LY.MicroService.Applications.Single/WeChat/Official/Messages/TextMessageReplyContributor.cs
  18. 8
      aspnet-core/services/LY.MicroService.Applications.Single/WeChat/Official/Messages/UserSubscribeEventContributor.cs
  19. 24
      aspnet-core/services/LY.MicroService.Applications.Single/WeChat/Work/Messages/TextMessageReplyContributor.cs

1
apps/vue/src/views/account/setting/SecureSetting.vue

@ -95,6 +95,7 @@
createMessage.success(L('Successful')); createMessage.success(L('Successful'));
}).finally(() => { }).finally(() => {
item.loading = false; item.loading = false;
item.switch!.checked = false;
}); });
break; break;
} }

11
apps/vue/src/views/auditing/components/ModalData.ts

@ -64,7 +64,7 @@ export function getSearchFormSchemas(): Partial<FormProps> {
labelWidth: 100, labelWidth: 100,
alwaysShowLines: 3, alwaysShowLines: 3,
fieldMapToTime: [ fieldMapToTime: [
['dateRange', ['startTime', 'endTime'], ['YYYY-MM-DDT00:00:00', 'YYYY-MM-DDT00:00:00']], ['executionTime', ['startTime', 'endTime'], ['YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm:ss']],
], ],
schemas: [ schemas: [
{ {
@ -116,11 +116,12 @@ export function getSearchFormSchemas(): Partial<FormProps> {
colProps: { span: 12 }, colProps: { span: 12 },
}, },
{ {
field: 'dateRange', field: 'executionTime',
component: 'RangePicker', component: 'RangePicker',
label: L('StartTime'), label: L('ExecutionTime'),
colProps: { span: 6 }, colProps: { span: 8 },
componentProps: { componentProps: {
showTime: true,
style: { style: {
width: '100%' width: '100%'
}, },
@ -130,7 +131,7 @@ export function getSearchFormSchemas(): Partial<FormProps> {
field: 'correlationId', field: 'correlationId',
component: 'Input', component: 'Input',
label: L('CorrelationId'), label: L('CorrelationId'),
colProps: { span: 12 }, colProps: { span: 10 },
}, },
{ {
field: 'hasException', field: 'hasException',

11
apps/vue/src/views/sys/logging/datas/ModalData.ts

@ -9,7 +9,7 @@ export function getSearchFormSchemas(): Partial<FormProps> {
labelWidth: 100, labelWidth: 100,
alwaysShowLines: 3, alwaysShowLines: 3,
fieldMapToTime: [ fieldMapToTime: [
['dateRange', ['startTime', 'endTime'], ['YYYY-MM-DDT00:00:00', 'YYYY-MM-DDT00:00:00']], ['timeStamp', ['startTime', 'endTime'], ['YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm:ss']],
], ],
schemas: [ schemas: [
{ {
@ -51,11 +51,12 @@ export function getSearchFormSchemas(): Partial<FormProps> {
}, },
}, },
{ {
field: 'dateRange', field: 'timeStamp',
component: 'RangePicker', component: 'RangePicker',
label: L('StartTime'), label: L('TimeStamp'),
colProps: { span: 6 }, colProps: { span: 8 },
componentProps: { componentProps: {
showTime: true,
style: { style: {
width: '100%', width: '100%',
}, },
@ -71,7 +72,7 @@ export function getSearchFormSchemas(): Partial<FormProps> {
field: 'requestPath', field: 'requestPath',
component: 'Input', component: 'Input',
label: L('RequestPath'), label: L('RequestPath'),
colProps: { span: 12 }, colProps: { span: 10 },
}, },
{ {
field: 'hasException', field: 'hasException',

6
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Common/LINGYUN/Abp/WeChat/Common/Messages/MessageResolver.cs

@ -3,6 +3,7 @@ using LINGYUN.Abp.WeChat.Common.Crypto.Models;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using System; using System;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Xml.Linq; using System.Xml.Linq;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -45,8 +46,7 @@ public class MessageResolver : IMessageResolver, ITransientDependency
</xml> </xml>
*/ */
var xmlDocument = XDocument.Parse(messageData.Data); var xmlDocument = XDocument.Parse(messageData.Data);
var encryptData = xmlDocument.Root.Element("Encrypt")?.Value; if (!xmlDocument.Elements("Encrypt").Any())
if (!encryptData.IsNullOrWhiteSpace())
{ {
/* /*
* <xml> * <xml>
@ -55,7 +55,7 @@ public class MessageResolver : IMessageResolver, ITransientDependency
</xml> </xml>
*/ */
var cryptoDecryptData = new WeChatCryptoDecryptData( var cryptoDecryptData = new WeChatCryptoDecryptData(
encryptData, messageData.Data,
messageData.AppId, messageData.AppId,
messageData.Token, messageData.Token,
messageData.EncodingAESKey, messageData.EncodingAESKey,

2
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official.Application.Contracts/LINGYUN/Abp/WeChat/Official/Message/Dto/MessageHandleInput.cs

@ -1,10 +1,12 @@
using LINGYUN.Abp.WeChat.Official.Models; using LINGYUN.Abp.WeChat.Official.Models;
using System; using System;
using Volo.Abp.Auditing;
namespace LINGYUN.Abp.WeChat.Official.Message; namespace LINGYUN.Abp.WeChat.Official.Message;
[Serializable] [Serializable]
public class MessageHandleInput : WeChatMessage public class MessageHandleInput : WeChatMessage
{ {
[DisableAuditing]
public string Data { get; set; } public string Data { get; set; }
} }

9
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/AbpWeChatOfficialModule.cs

@ -52,15 +52,6 @@ namespace LINGYUN.Abp.WeChat.Official
options.MessageResolvers.AddIfNotContains(new WeChatOfficialMessageResolveContributor()); options.MessageResolvers.AddIfNotContains(new WeChatOfficialMessageResolveContributor());
}); });
Configure<AbpWeChatMessageHandleOptions>(options =>
{
// 回复文本消息
options.MapMessage<TextMessage, TextMessageReplyContributor>();
// 处理关注事件
options.MapEvent<UserSubscribeEvent, UserSubscribeEventContributor>();
});
Configure<AbpVirtualFileSystemOptions>(options => Configure<AbpVirtualFileSystemOptions>(options =>
{ {
options.FileSets.AddEmbedded<AbpWeChatOfficialModule>(); options.FileSets.AddEmbedded<AbpWeChatOfficialModule>();

4
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Messages/WeChatOfficialEventResolveContributor.cs

@ -8,11 +8,11 @@ namespace LINGYUN.Abp.WeChat.Official.Messages;
/// <summary> /// <summary>
/// 微信公众号事件处理器 /// 微信公众号事件处理器
/// </summary> /// </summary>
public class WeChatOfficialEventResolveContributor : MessageResolveContributorBase public class WeChatOfficialEventResolveContributor : WeChatOfficialMessageResolveContributorBase
{ {
public override string Name => "WeChat.Official.Event"; public override string Name => "WeChat.Official.Event";
public override Task ResolveAsync(IMessageResolveContext context) protected override Task ResolveWeChatMessageAsync(IMessageResolveContext context)
{ {
var options = context.ServiceProvider.GetRequiredService<IOptions<AbpWeChatOfficialMessageResolveOptions>>().Value; var options = context.ServiceProvider.GetRequiredService<IOptions<AbpWeChatOfficialMessageResolveOptions>>().Value;
var messageType = context.GetMessageData("MsgType"); var messageType = context.GetMessageData("MsgType");

4
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Messages/WeChatOfficialMessageResolveContributor.cs

@ -7,11 +7,11 @@ namespace LINGYUN.Abp.WeChat.Official.Messages;
/// <summary> /// <summary>
/// 微信公众号消息处理器 /// 微信公众号消息处理器
/// </summary> /// </summary>
public class WeChatOfficialMessageResolveContributor : MessageResolveContributorBase public class WeChatOfficialMessageResolveContributor : WeChatOfficialMessageResolveContributorBase
{ {
public override string Name => "WeChat.Official.Message"; public override string Name => "WeChat.Official.Message";
public override Task ResolveAsync(IMessageResolveContext context) protected override Task ResolveWeChatMessageAsync(IMessageResolveContext context)
{ {
var options = context.ServiceProvider.GetRequiredService<IOptions<AbpWeChatOfficialMessageResolveOptions>>().Value; var options = context.ServiceProvider.GetRequiredService<IOptions<AbpWeChatOfficialMessageResolveOptions>>().Value;
var messageType = context.GetMessageData("MsgType"); var messageType = context.GetMessageData("MsgType");

18
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Messages/WeChatOfficialMessageResolveContributorBase.cs

@ -0,0 +1,18 @@
using LINGYUN.Abp.WeChat.Common.Messages;
using System.Threading.Tasks;
namespace LINGYUN.Abp.WeChat.Official.Messages;
public abstract class WeChatOfficialMessageResolveContributorBase : MessageResolveContributorBase
{
public override Task ResolveAsync(IMessageResolveContext context)
{
if (!context.HasMessageKey("AgentID"))
{
return ResolveWeChatMessageAsync(context);
}
return Task.CompletedTask;
}
protected abstract Task ResolveWeChatMessageAsync(IMessageResolveContext context);
}

2
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work.Application.Contracts/LINGYUN/Abp/WeChat/Work/Message/Dto/MessageHandleInput.cs

@ -1,10 +1,12 @@
using LINGYUN.Abp.WeChat.Work.Models; using LINGYUN.Abp.WeChat.Work.Models;
using System; using System;
using Volo.Abp.Auditing;
namespace LINGYUN.Abp.WeChat.Work.Message; namespace LINGYUN.Abp.WeChat.Work.Message;
[Serializable] [Serializable]
public class MessageHandleInput : WeChatWorkMessage public class MessageHandleInput : WeChatWorkMessage
{ {
[DisableAuditing]
public string Data { get; set; } public string Data { get; set; }
} }

4
aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/IdentityErrorCodes.cs

@ -26,5 +26,9 @@
/// 重复确认的邮件地址 /// 重复确认的邮件地址
/// </summary> /// </summary>
public const string DuplicateConfirmEmailAddress = "Volo.Abp.Identity:020010"; public const string DuplicateConfirmEmailAddress = "Volo.Abp.Identity:020010";
/// <summary>
/// 尝试在未绑定MFA设备时启用二次认证
/// </summary>
public const string ChangeTwoFactorWithMFANotBound = "Volo.Abp.Identity:020011";
} }
} }

1
aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/en.json

@ -47,6 +47,7 @@
"Volo.Abp.Identity:020008": "You can't modify your phone's binding information!", "Volo.Abp.Identity:020008": "You can't modify your phone's binding information!",
"Volo.Abp.Identity:020009": "You cannot modify your email binding information!", "Volo.Abp.Identity:020009": "You cannot modify your email binding information!",
"Volo.Abp.Identity:020010": "The email address is bound!", "Volo.Abp.Identity:020010": "The email address is bound!",
"Volo.Abp.Identity:020011": "Secondary authentication cannot be enabled when an MFA device is not attached!",
"Volo.Abp.Identity:DuplicatePhoneNumber": "Phone number '{0}' is already taken.", "Volo.Abp.Identity:DuplicatePhoneNumber": "Phone number '{0}' is already taken.",
"DisplayName:Abp.Identity.User.SmsNewUserRegister": "Register sms template", "DisplayName:Abp.Identity.User.SmsNewUserRegister": "Register sms template",
"Description:Abp.Identity.User.SmsNewUserRegister": "When the user registers, he/she should send the template number of the SMS verification code and fill in the template number of the corresponding cloud platform registration", "Description:Abp.Identity.User.SmsNewUserRegister": "When the user registers, he/she should send the template number of the SMS verification code and fill in the template number of the corresponding cloud platform registration",

1
aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/zh-Hans.json

@ -47,6 +47,7 @@
"Volo.Abp.Identity:020008": "你不能修改你的手机绑定信息!", "Volo.Abp.Identity:020008": "你不能修改你的手机绑定信息!",
"Volo.Abp.Identity:020009": "你不能修改你的邮件绑定信息!", "Volo.Abp.Identity:020009": "你不能修改你的邮件绑定信息!",
"Volo.Abp.Identity:020010": "邮件地址已绑定!", "Volo.Abp.Identity:020010": "邮件地址已绑定!",
"Volo.Abp.Identity:020011": "未绑定MFA设备时无法启用二次认证!",
"Volo.Abp.Identity:DuplicatePhoneNumber": "手机号 '{0}' 已存在.", "Volo.Abp.Identity:DuplicatePhoneNumber": "手机号 '{0}' 已存在.",
"DisplayName:Abp.Identity.User.SmsNewUserRegister": "新用户注册模板", "DisplayName:Abp.Identity.User.SmsNewUserRegister": "新用户注册模板",
"Description:Abp.Identity.User.SmsNewUserRegister": "新用户通过手机注册账号验证码模板", "Description:Abp.Identity.User.SmsNewUserRegister": "新用户通过手机注册账号验证码模板",

6
aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain/Microsoft/AspNetCore/Identity/IdentityUserManagerExtensions.cs

@ -1,7 +1,7 @@
using JetBrains.Annotations; using JetBrains.Annotations;
using LINGYUN.Abp.Identity;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Identity;
namespace Microsoft.AspNetCore.Identity namespace Microsoft.AspNetCore.Identity
{ {
@ -27,8 +27,8 @@ namespace Microsoft.AspNetCore.Identity
//var error = new IdentityError(); //var error = new IdentityError();
//return IdentityResult.Failed(error); //return IdentityResult.Failed(error);
throw new LINGYUN.Abp.Identity.IdentityException( throw new IdentityException(
IdentityErrorCodes.CanNotChangeTwoFactor, IdentityErrorCodes.ChangeTwoFactorWithMFANotBound,
details: phoneNumberConfirmed ? "phone number not confirmed" : "email address not confirmed"); details: phoneNumberConfirmed ? "phone number not confirmed" : "email address not confirmed");
} }
} }

21
aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.Configure.cs

@ -15,8 +15,10 @@ using LINGYUN.Abp.Serilog.Enrichers.Application;
using LINGYUN.Abp.Serilog.Enrichers.UniqueId; using LINGYUN.Abp.Serilog.Enrichers.UniqueId;
using LINGYUN.Abp.TextTemplating; using LINGYUN.Abp.TextTemplating;
using LINGYUN.Abp.WebhooksManagement; using LINGYUN.Abp.WebhooksManagement;
using LINGYUN.Abp.WeChat.Common.Messages.Handlers;
using LINGYUN.Abp.Wrapper; using LINGYUN.Abp.Wrapper;
using LY.MicroService.Applications.Single.IdentityResources; using LY.MicroService.Applications.Single.IdentityResources;
using LY.MicroService.Applications.Single.WeChat.Official.Messages;
using Medallion.Threading; using Medallion.Threading;
using Medallion.Threading.Redis; using Medallion.Threading.Redis;
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authentication.JwtBearer;
@ -764,4 +766,23 @@ public partial class MicroServiceApplicationsSingleModule
}); });
}); });
} }
private void ConfigureWeChat()
{
Configure<AbpWeChatMessageHandleOptions>(options =>
{
// 回复文本消息
options.MapMessage<
LINGYUN.Abp.WeChat.Official.Messages.Models.TextMessage,
LY.MicroService.Applications.Single.WeChat.Official.Messages.TextMessageReplyContributor>();
// 处理关注事件
options.MapEvent<
LINGYUN.Abp.WeChat.Official.Messages.Models.UserSubscribeEvent,
LY.MicroService.Applications.Single.WeChat.Official.Messages.UserSubscribeEventContributor>();
options.MapMessage<
LINGYUN.Abp.WeChat.Work.Common.Messages.Models.TextMessage,
LY.MicroService.Applications.Single.WeChat.Work.Messages.TextMessageReplyContributor>();
});
}
} }

1
aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.cs

@ -289,6 +289,7 @@ public partial class MicroServiceApplicationsSingleModule : AbpModule
var hostingEnvironment = context.Services.GetHostingEnvironment(); var hostingEnvironment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
ConfigureWeChat();
ConfigureWrapper(); ConfigureWrapper();
ConfigureAuditing(); ConfigureAuditing();
ConfigureDbContext(); ConfigureDbContext();

8
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Messages/Handlers/TextMessageReplyContributor.cs → aspnet-core/services/LY.MicroService.Applications.Single/WeChat/Official/Messages/TextMessageReplyContributor.cs

@ -1,10 +1,8 @@
using LINGYUN.Abp.WeChat.Common.Messages.Handlers; using LINGYUN.Abp.WeChat.Common.Messages.Handlers;
using LINGYUN.Abp.WeChat.Official.Messages.Models; using LINGYUN.Abp.WeChat.Official.Messages.Models;
using LINGYUN.Abp.WeChat.Official.Services; using LINGYUN.Abp.WeChat.Official.Services;
using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;
namespace LINGYUN.Abp.WeChat.Official.Messages.Handlers; namespace LY.MicroService.Applications.Single.WeChat.Official.Messages;
/// <summary> /// <summary>
/// 文本消息客服回复 /// 文本消息客服回复
/// </summary> /// </summary>
@ -15,9 +13,9 @@ public class TextMessageReplyContributor : IMessageHandleContributor<TextMessage
var messageSender = context.ServiceProvider.GetRequiredService<IServiceCenterMessageSender>(); var messageSender = context.ServiceProvider.GetRequiredService<IServiceCenterMessageSender>();
await messageSender.SendAsync( await messageSender.SendAsync(
new Services.Models.TextMessageModel( new LINGYUN.Abp.WeChat.Official.Services.Models.TextMessageModel(
context.Message.FromUserName, context.Message.FromUserName,
new Services.Models.TextMessage( new LINGYUN.Abp.WeChat.Official.Services.Models.TextMessage(
context.Message.Content))); context.Message.Content)));
} }
} }

8
aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Messages/Handlers/UserSubscribeEventContributor.cs → aspnet-core/services/LY.MicroService.Applications.Single/WeChat/Official/Messages/UserSubscribeEventContributor.cs

@ -1,10 +1,8 @@
using LINGYUN.Abp.WeChat.Common.Messages.Handlers; using LINGYUN.Abp.WeChat.Common.Messages.Handlers;
using LINGYUN.Abp.WeChat.Official.Messages.Models; using LINGYUN.Abp.WeChat.Official.Messages.Models;
using LINGYUN.Abp.WeChat.Official.Services; using LINGYUN.Abp.WeChat.Official.Services;
using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;
namespace LINGYUN.Abp.WeChat.Official.Messages.Handlers; namespace LY.MicroService.Applications.Single.WeChat.Official.Messages;
/// <summary> /// <summary>
/// 用户关注回复消息 /// 用户关注回复消息
/// </summary> /// </summary>
@ -15,9 +13,9 @@ public class UserSubscribeEventContributor : IEventHandleContributor<UserSubscri
var messageSender = context.ServiceProvider.GetRequiredService<IServiceCenterMessageSender>(); var messageSender = context.ServiceProvider.GetRequiredService<IServiceCenterMessageSender>();
await messageSender.SendAsync( await messageSender.SendAsync(
new Services.Models.TextMessageModel( new LINGYUN.Abp.WeChat.Official.Services.Models.TextMessageModel(
context.Message.FromUserName, context.Message.FromUserName,
new Services.Models.TextMessage( new LINGYUN.Abp.WeChat.Official.Services.Models.TextMessage(
"感谢您的关注, 点击菜单了解更多."))); "感谢您的关注, 点击菜单了解更多.")));
} }
} }

24
aspnet-core/services/LY.MicroService.Applications.Single/WeChat/Work/Messages/TextMessageReplyContributor.cs

@ -0,0 +1,24 @@
using LINGYUN.Abp.WeChat.Common.Messages.Handlers;
using LINGYUN.Abp.WeChat.Work.Common.Messages.Models;
using LINGYUN.Abp.WeChat.Work.Messages;
namespace LY.MicroService.Applications.Single.WeChat.Work.Messages;
/// <summary>
/// 文本消息客服回复
/// </summary>
public class TextMessageReplyContributor : IMessageHandleContributor<TextMessage>
{
public async virtual Task HandleAsync(MessageHandleContext<TextMessage> context)
{
var messageSender = context.ServiceProvider.GetRequiredService<IWeChatWorkMessageSender>();
await messageSender.SendAsync(
new LINGYUN.Abp.WeChat.Work.Messages.Models.WeChatWorkTextMessage(
context.Message.AgentId.ToString(),
new LINGYUN.Abp.WeChat.Work.Messages.Models.TextMessage(
context.Message.Content))
{
ToUser = context.Message.FromUserName,
});
}
}
Loading…
Cancel
Save