diff --git a/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/Imports/AppReceiverImportDto.cs b/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/Imports/AppReceiverImportDto.cs index f2c0e29c..89c5ffc6 100644 --- a/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/Imports/AppReceiverImportDto.cs +++ b/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/Imports/AppReceiverImportDto.cs @@ -5,7 +5,7 @@ namespace Masa.Mc.Contracts.Admin.Dtos.MessageTasks.Imports; public class AppReceiverImportDto { - [ImporterHeader(Name = "用户Id", IsAllowRepeat = false)] - [Required(ErrorMessage = "用户Id是必填的")] - public Guid UserId { get; set; } + [ImporterHeader(Name = "客户端注册Id", IsAllowRepeat = false)] + [Required(ErrorMessage = "客户端注册Id是必填的")] + public string ClientId { get; set; } } diff --git a/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/Imports/WeixinWorkReceiverImportDto.cs b/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/Imports/WeixinWorkReceiverImportDto.cs new file mode 100644 index 00000000..81c70d1b --- /dev/null +++ b/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/Imports/WeixinWorkReceiverImportDto.cs @@ -0,0 +1,11 @@ +// Copyright (c) MASA Stack All rights reserved. +// Licensed under the Apache License. See LICENSE.txt in the project root for license information. + +namespace Masa.Mc.Contracts.Admin.Dtos.MessageTasks.Imports; + +public class WeixinWorkReceiverImportDto +{ + [ImporterHeader(Name = "用户名", IsAllowRepeat = false)] + [Required(ErrorMessage = "用户名是必填的")] + public string Account { get; set; } +} diff --git a/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/MessageTaskReceiverDto.cs b/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/MessageTaskReceiverDto.cs index 5773d93f..d86d7189 100644 --- a/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/MessageTaskReceiverDto.cs +++ b/src/Contracts/Masa.Mc.Contracts.Admin/Dtos/MessageTasks/MessageTaskReceiverDto.cs @@ -7,6 +7,8 @@ public class MessageTaskReceiverDto { public Guid SubjectId { get; set; } + public string ChannelUserIdentity { get; set; } = string.Empty; + public string DisplayName { get; set; } = string.Empty; public string Account { get; set; } = string.Empty; diff --git a/src/Services/Masa.Mc.Service/Application/MessageTasks/ImportReceiversCommandHandler.cs b/src/Services/Masa.Mc.Service/Application/MessageTasks/ImportReceiversCommandHandler.cs index ed951df5..c6e40ed2 100644 --- a/src/Services/Masa.Mc.Service/Application/MessageTasks/ImportReceiversCommandHandler.cs +++ b/src/Services/Masa.Mc.Service/Application/MessageTasks/ImportReceiversCommandHandler.cs @@ -78,19 +78,15 @@ private string GetImporterHeaderDisplayName(Type type, string name) private async Task> GetDynamicImportDtos(ChannelTypes channelType, Stream stream) { - switch (channelType) + return channelType switch { - case ChannelTypes.Sms: - return await _importer.DynamicImport(stream); - case ChannelTypes.Email: - return await _importer.DynamicImport(stream); - case ChannelTypes.WebsiteMessage: - return await _importer.DynamicImport(stream); - case ChannelTypes.App: - return await _importer.DynamicImport(stream); - default: - throw new UserFriendlyException(errorCode: UserFriendlyExceptionCodes.UNKNOWN_CHANNEL_TYPE); - } + ChannelTypes.Sms => await _importer.DynamicImport(stream), + ChannelTypes.Email => await _importer.DynamicImport(stream), + ChannelTypes.WebsiteMessage => await _importer.DynamicImport(stream), + ChannelTypes.App => await _importer.DynamicImport(stream), + ChannelTypes.WeixinWork => await _importer.DynamicImport(stream), + _ => throw new UserFriendlyException(errorCode: UserFriendlyExceptionCodes.UNKNOWN_CHANNEL_TYPE) + }; } private MessageTaskReceiverDto GetMessageTaskReceiverDto(ChannelTypes channelType, ExpandoObject obj) @@ -99,26 +95,25 @@ private MessageTaskReceiverDto GetMessageTaskReceiverDto(ChannelTypes channelTyp switch (channelType) { case ChannelTypes.Sms: - receiver.PhoneNumber = obj?.GetOrDefault(GetImporterHeaderDisplayName(typeof(SmsReceiverImportDto), nameof(SmsReceiverImportDto.PhoneNumber)))?.ToString() ?? string.Empty; + receiver.ChannelUserIdentity = obj?.GetOrDefault(GetImporterHeaderDisplayName(typeof(SmsReceiverImportDto), nameof(SmsReceiverImportDto.PhoneNumber)))?.ToString() ?? string.Empty; + receiver.PhoneNumber = receiver.ChannelUserIdentity; break; case ChannelTypes.Email: - receiver.Email = obj?.GetOrDefault(GetImporterHeaderDisplayName(typeof(EmailReceiverImportDto), nameof(EmailReceiverImportDto.Email)))?.ToString() ?? string.Empty; + receiver.ChannelUserIdentity = obj?.GetOrDefault(GetImporterHeaderDisplayName(typeof(EmailReceiverImportDto), nameof(EmailReceiverImportDto.Email)))?.ToString() ?? string.Empty; + receiver.Email = receiver.ChannelUserIdentity; break; case ChannelTypes.WebsiteMessage: - receiver.SubjectId = Guid.Empty; - object? subjectIdObj = obj.GetOrDefault(GetImporterHeaderDisplayName(typeof(WebsiteMessageReceiverImportDto), nameof(WebsiteMessageReceiverImportDto.UserId))); - if (Guid.TryParse(subjectIdObj?.ToString(), out var subjectId)) + receiver.ChannelUserIdentity = obj?.GetOrDefault(GetImporterHeaderDisplayName(typeof(WebsiteMessageReceiverImportDto), nameof(WebsiteMessageReceiverImportDto.UserId)))?.ToString() ?? string.Empty; + if (Guid.TryParse(receiver.ChannelUserIdentity, out var subjectId)) { receiver.SubjectId = subjectId; } break; case ChannelTypes.App: - receiver.SubjectId = Guid.Empty; - object? userIdObj = obj.GetOrDefault(GetImporterHeaderDisplayName(typeof(AppReceiverImportDto), nameof(AppReceiverImportDto.UserId))); - if (Guid.TryParse(userIdObj?.ToString(), out var userId)) - { - receiver.SubjectId = userId; - } + receiver.ChannelUserIdentity = obj?.GetOrDefault(GetImporterHeaderDisplayName(typeof(AppReceiverImportDto), nameof(AppReceiverImportDto.ClientId)))?.ToString() ?? string.Empty; + break; + case ChannelTypes.WeixinWork: + receiver.ChannelUserIdentity = obj?.GetOrDefault(GetImporterHeaderDisplayName(typeof(WeixinWorkReceiverImportDto), nameof(WeixinWorkReceiverImportDto.Account)))?.ToString() ?? string.Empty; break; default: throw new UserFriendlyException(errorCode: UserFriendlyExceptionCodes.UNKNOWN_CHANNEL_TYPE); diff --git a/src/Services/Masa.Mc.Service/Application/MessageTasks/MessageTaskQueryHandler.cs b/src/Services/Masa.Mc.Service/Application/MessageTasks/MessageTaskQueryHandler.cs index 44f5690b..88808996 100644 --- a/src/Services/Masa.Mc.Service/Application/MessageTasks/MessageTaskQueryHandler.cs +++ b/src/Services/Masa.Mc.Service/Application/MessageTasks/MessageTaskQueryHandler.cs @@ -209,19 +209,15 @@ private async Task FillMessageTaskListDtos(List dtos) private Type GetReceiverImportDtoType(ChannelTypes channelType) { - switch (channelType) + return channelType switch { - case ChannelTypes.Sms: - return typeof(SmsReceiverImportDto); - case ChannelTypes.Email: - return typeof(EmailReceiverImportDto); - case ChannelTypes.WebsiteMessage: - return typeof(WebsiteMessageReceiverImportDto); - case ChannelTypes.App: - return typeof(AppReceiverImportDto); - default: - throw new UserFriendlyException(errorCode: UserFriendlyExceptionCodes.UNKNOWN_CHANNEL_TYPE); - } + ChannelTypes.Sms => typeof(SmsReceiverImportDto), + ChannelTypes.Email => typeof(EmailReceiverImportDto), + ChannelTypes.WebsiteMessage => typeof(WebsiteMessageReceiverImportDto), + ChannelTypes.App => typeof(AppReceiverImportDto), + ChannelTypes.WeixinWork => typeof(WeixinWorkReceiverImportDto), + _ => throw new UserFriendlyException(errorCode: UserFriendlyExceptionCodes.UNKNOWN_CHANNEL_TYPE) + }; } public async Task GetMessageContentAsync(MessageEntityTypes entityType, Guid entityId) diff --git a/src/Web/Masa.Mc.Web.Admin/Pages/MessageTasks/Modules/ImportReceiversDetailModal.razor b/src/Web/Masa.Mc.Web.Admin/Pages/MessageTasks/Modules/ImportReceiversDetailModal.razor index 9ca34fb1..d74a2a19 100644 --- a/src/Web/Masa.Mc.Web.Admin/Pages/MessageTasks/Modules/ImportReceiversDetailModal.razor +++ b/src/Web/Masa.Mc.Web.Admin/Pages/MessageTasks/Modules/ImportReceiversDetailModal.razor @@ -23,6 +23,18 @@ @T("Email") } + @if (ChannelType == ChannelTypes.App) + { + + @T("ClientId") + + } + @if (ChannelType == ChannelTypes.WeixinWork) + { + + @T("Account") + + } @if (Value.Count > 0) { foreach (var item in Value[0].Variables) @@ -38,18 +50,7 @@ @foreach (var item in _items) { - @if (ChannelType == ChannelTypes.WebsiteMessage) - { - @item.SubjectId - } - @if (ChannelType == ChannelTypes.Sms) - { - @item.PhoneNumber - } - @if (ChannelType == ChannelTypes.Email) - { - @item.Email - } + @item.ChannelUserIdentity @foreach (var v in item.Variables) { @v.Value diff --git a/src/Web/Masa.Mc.Web.Admin/wwwroot/i18n/zh-CN.json b/src/Web/Masa.Mc.Web.Admin/wwwroot/i18n/zh-CN.json index 90a755a5..e4bd7da9 100644 --- a/src/Web/Masa.Mc.Web.Admin/wwwroot/i18n/zh-CN.json +++ b/src/Web/Masa.Mc.Web.Admin/wwwroot/i18n/zh-CN.json @@ -415,5 +415,6 @@ "production": "生产环境", "TemplateType": "模板类型", "Text": "文本", - "TextCard": "文本卡片" + "TextCard": "文本卡片", + "ClientId": "客户端注册Id" }