From 33160fd311f9c5a0af56badf170a197e3dde0e71 Mon Sep 17 00:00:00 2001 From: colin Date: Sat, 23 Sep 2023 18:21:27 +0800 Subject: [PATCH 1/2] WeCom integration Add a group chat api --- .../src/api/auditing/model/auditLogModel.ts | 5 + apps/vue/src/store/modules/settings.ts | 2 +- .../src/views/feature/src/FeatureModal.vue | 2 +- .../resources/components/ResourceTable.vue | 3 +- .../texts/components/ModalData.ts | 6 +- .../texts/components/TextModal.vue | 4 +- aspnet-core/LINGYUN.MicroService.All.sln | 3 +- .../EntityChange/EntityRestoreAppService.cs | 4 - .../OssManagement/GetFileMultiTenancyInput.cs | 7 +- .../WeChatWorkAuthorizeAppService.cs | 6 +- .../Message/WeChatWorkMessageAppService.cs | 1 + .../WeChatWorkAuthorizeController.cs | 25 +++ .../LINGYUN.Abp.WeChat.Work.csproj | 1 + .../Abp/WeChat/Work/AbpWeChatWorkModule.cs | 2 + .../Authorize/WeChatWorkAuthorizeGenerator.cs | 6 +- .../Work/Authorize/WeChatWorkUserFinder.cs | 11 +- .../Work/Chat/IWeChatWorkAppChatManager.cs | 43 ++++ .../Work/Chat/Models/WeChatWorkAppChatInfo.cs | 32 +++ .../Request/WeChatWorkAppChatCreateRequest.cs | 56 +++++ .../Chat/Request/WeChatWorkAppChatRequest.cs | 17 ++ .../Request/WeChatWorkAppChatUpdateRequest.cs | 61 ++++++ .../WeChatWorkAppChatCreateResponse.cs | 14 ++ .../Response/WeChatWorkAppChatInfoResponse.cs | 14 ++ .../Work/Chat/WeChatWorkAppChatManager.cs | 60 ++++++ .../WeChatWorkFeatureDefinitionProvider.cs | 46 +++- .../Work/Features/WeChatWorkFeatureNames.cs | 24 ++- .../Work/Localization/Resources/en.json | 15 +- .../Work/Localization/Resources/zh-Hans.json | 19 +- .../Work/Media/IWeChatWorkMediaProvider.cs | 3 +- .../{ => Models}/WeChatWorkImageResponse.cs | 2 +- .../{ => Models}/WeChatWorkMediaRequest.cs | 2 +- .../{ => Models}/WeChatWorkMediaResponse.cs | 2 +- .../Work/Media/WeChatWorkMediaProvider.cs | 13 +- .../Work/Message/IWeChatWorkMessageManager.cs | 22 ++ .../Work/Message/IWeChatWorkMessageSender.cs | 20 +- .../Work/Message/Models/MiniProgramMessage.cs | 90 ++++++++ .../Models/WeChatWorkAppChatFileMessage.cs | 34 +++ .../Models/WeChatWorkAppChatImageMessage.cs | 34 +++ .../WeChatWorkAppChatMarkdownMessage.cs | 34 +++ .../Models/WeChatWorkAppChatMpNewMessage.cs | 34 +++ .../Models/WeChatWorkAppChatNewMessage.cs | 34 +++ .../WeChatWorkAppChatTextCardMessage.cs | 34 +++ .../Models/WeChatWorkAppChatTextMessage.cs | 35 +++ .../Models/WeChatWorkAppChatVideoMessage.cs | 34 +++ .../Models/WeChatWorkAppChatVoiceMessage.cs | 25 +++ .../{ => Models}/WeChatWorkFileMessage.cs | 3 +- .../{ => Models}/WeChatWorkImageMessage.cs | 3 +- .../{ => Models}/WeChatWorkMarkdownMessage.cs | 3 +- .../Models/WeChatWorkMiniProgramMessage.cs | 84 ++++++++ .../{ => Models}/WeChatWorkMpNewMessage.cs | 3 +- .../{ => Models}/WeChatWorkNewMessage.cs | 3 +- .../{ => Models}/WeChatWorkTextCardMessage.cs | 3 +- .../{ => Models}/WeChatWorkTextMessage.cs | 3 +- .../{ => Models}/WeChatWorkVideoMessage.cs | 3 +- .../{ => Models}/WeChatWorkVoiceMessage.cs | 3 +- .../Request/WeChatWorkMessageReCallRequest.cs | 27 +++ .../Request/WeChatWorkMessageRequest.cs | 11 + .../WeChatWorkMessageResponse.cs | 2 +- .../Work/Message/Templates/TemplateCard.cs | 28 +++ .../Message/Templates/TemplateCardAction.cs | 31 +++ .../Templates/TemplateCardActionMenu.cs | 31 +++ .../Templates/TemplateCardCardAction.cs | 50 +++++ .../Templates/TemplateCardEmphasisContent.cs | 33 +++ .../TemplateCardHorizontalContent.cs | 93 ++++++++ .../Message/Templates/TemplateCardJump.cs | 62 ++++++ .../Templates/TemplateCardMainTitle.cs | 33 +++ .../Templates/TemplateCardQuoteArea.cs | 68 ++++++ .../Message/Templates/TemplateCardSource.cs | 52 +++++ .../Message/Templates/TextTemplateCard.cs | 81 +++++++ .../WeChatWorkTemplateCardMessage.cs | 47 ++++ .../Work/Message/WeChatWorkAppChatMessage.cs | 45 ++++ .../WeChat/Work/Message/WeChatWorkMessage.cs | 11 +- .../Work/Message/WeChatWorkMessageManager.cs | 43 ++++ .../Work/Message/WeChatWorkMessageRequest.cs | 11 - .../Work/Message/WeChatWorkMessageSender.cs | 38 +++- .../Work/Security/IWeChatWorkCryptoService.cs | 4 +- .../{ => Models}/WeChatWorkCryptoData.cs | 12 +- .../WeChatWorkCryptoDecryptData.cs | 2 +- .../{ => Models}/WeChatWorkCryptoEchoData.cs | 2 +- .../Work/Security/WeChatWorkCryptoService.cs | 4 +- .../Work/Token/IWeChatWorkTokenProvider.cs | 35 ++- .../Token/{ => Models}/WeChatWorkToken.cs | 2 +- .../{ => Models}/WeChatWorkTokenCacheItem.cs | 2 +- .../{ => Models}/WeChatWorkTokenRequest.cs | 2 +- .../{ => Models}/WeChatWorkTokenResponse.cs | 2 +- .../Work/Token/WeChatWorkTokenProvider.cs | 201 +++++++++++------- .../Abp/WeChat/Work/WeChatWorkRequest.cs | 12 ++ .../Abp/WeChat/Work/WeChatWorkResponse.cs | 2 + ...pClientWeChatWorkRequestExtensions.Auth.cs | 46 ++++ ...pClientWeChatWorkRequestExtensions.Chat.cs | 68 ++++++ ...ClientWeChatWorkRequestExtensions.Media.cs | 70 ++++++ ...ientWeChatWorkRequestExtensions.Message.cs | 68 ++++++ .../HttpClientWeChatWorkRequestExtensions.cs | 123 +---------- .../Http/HttpResponseDeserializeExtensions.cs | 18 ++ .../System/WeChatObjectSerializeExtensions.cs | 10 + ...WeChatWorkResponseDeserializeExtensions.cs | 11 + ...roService.BackendAdmin.HttpApi.Host.csproj | 6 + .../appsettings.Development.json | 20 +- .../GlobalUsings.cs | 3 +- .../WeChat/Work/AbpWeChatWorkTestModule.cs | 20 +- .../Message/WeChatWorkMessageManager_Tests.cs | 31 +++ .../Message/WeChatWorkMessageSender_Tests.cs | 76 ++++++- 102 files changed, 2367 insertions(+), 334 deletions(-) create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Chat/IWeChatWorkAppChatManager.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Chat/Models/WeChatWorkAppChatInfo.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Chat/Request/WeChatWorkAppChatCreateRequest.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Chat/Request/WeChatWorkAppChatRequest.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Chat/Request/WeChatWorkAppChatUpdateRequest.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Chat/Response/WeChatWorkAppChatCreateResponse.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Chat/Response/WeChatWorkAppChatInfoResponse.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Chat/WeChatWorkAppChatManager.cs rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Media/{ => Models}/WeChatWorkImageResponse.cs (83%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Media/{ => Models}/WeChatWorkMediaRequest.cs (87%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Media/{ => Models}/WeChatWorkMediaResponse.cs (93%) create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/IWeChatWorkMessageManager.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/MiniProgramMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatFileMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatImageMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatMarkdownMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatMpNewMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatNewMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatTextCardMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatTextMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatVideoMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkAppChatVoiceMessage.cs rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkFileMessage.cs (93%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkImageMessage.cs (94%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkMarkdownMessage.cs (92%) create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Models/WeChatWorkMiniProgramMessage.cs rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkMpNewMessage.cs (95%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkNewMessage.cs (94%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkTextCardMessage.cs (94%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkTextMessage.cs (95%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkVideoMessage.cs (93%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Models}/WeChatWorkVoiceMessage.cs (92%) create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Request/WeChatWorkMessageReCallRequest.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Request/WeChatWorkMessageRequest.cs rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/{ => Response}/WeChatWorkMessageResponse.cs (96%) create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCard.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardAction.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardActionMenu.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardCardAction.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardEmphasisContent.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardHorizontalContent.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardJump.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardMainTitle.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardQuoteArea.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TemplateCardSource.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/TextTemplateCard.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/Templates/WeChatWorkTemplateCardMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/WeChatWorkAppChatMessage.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/WeChatWorkMessageManager.cs delete mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Message/WeChatWorkMessageRequest.cs rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Security/{ => Models}/WeChatWorkCryptoData.cs (73%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Security/{ => Models}/WeChatWorkCryptoDecryptData.cs (89%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Security/{ => Models}/WeChatWorkCryptoEchoData.cs (88%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Token/{ => Models}/WeChatWorkToken.cs (91%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Token/{ => Models}/WeChatWorkTokenCacheItem.cs (92%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Token/{ => Models}/WeChatWorkTokenRequest.cs (74%) rename aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Token/{ => Models}/WeChatWorkTokenResponse.cs (93%) create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/WeChatWorkRequest.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/System/Net/Http/HttpClientWeChatWorkRequestExtensions.Auth.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/System/Net/Http/HttpClientWeChatWorkRequestExtensions.Chat.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/System/Net/Http/HttpClientWeChatWorkRequestExtensions.Media.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/System/Net/Http/HttpClientWeChatWorkRequestExtensions.Message.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/System/Net/Http/HttpResponseDeserializeExtensions.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/System/WeChatObjectSerializeExtensions.cs create mode 100644 aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Work/System/WeChatWorkResponseDeserializeExtensions.cs create mode 100644 aspnet-core/tests/LINGYUN.Abp.WeChat.Work.Tests/LINGYUN/Abp/WeChat/Work/Message/WeChatWorkMessageManager_Tests.cs diff --git a/apps/vue/src/api/auditing/model/auditLogModel.ts b/apps/vue/src/api/auditing/model/auditLogModel.ts index ac69dfbac..2d470ce85 100644 --- a/apps/vue/src/api/auditing/model/auditLogModel.ts +++ b/apps/vue/src/api/auditing/model/auditLogModel.ts @@ -91,3 +91,8 @@ export interface EntityChangeGetWithUsernameInput { entityId?: string; entityTypeFullName?: string; } + +export interface RestoreEntityInput { + entityId: string; + entityChangeId?: string; +} diff --git a/apps/vue/src/store/modules/settings.ts b/apps/vue/src/store/modules/settings.ts index 8806e22de..38149c1b4 100644 --- a/apps/vue/src/store/modules/settings.ts +++ b/apps/vue/src/store/modules/settings.ts @@ -27,7 +27,7 @@ export const useSettingManagementStore = defineStore({ initlize(settingKey: string, api: (...args) => Promise>) { this.settingKey = settingKey; if (this.settings.length === 0) { - ls.get(this.settingKey) || this.refreshSettings(api); + this.settings = ls.get(this.settingKey) || this.refreshSettings(api); } }, refreshSettings(api: (...args) => Promise>) { diff --git a/apps/vue/src/views/feature/src/FeatureModal.vue b/apps/vue/src/views/feature/src/FeatureModal.vue index 179a90a14..a6ab724f6 100644 --- a/apps/vue/src/views/feature/src/FeatureModal.vue +++ b/apps/vue/src/views/feature/src/FeatureModal.vue @@ -9,7 +9,7 @@ @ok="handleSubmit" @cancel="onGroupChange(0)" > -
+
diff --git a/apps/vue/src/views/localization/resources/components/ResourceTable.vue b/apps/vue/src/views/localization/resources/components/ResourceTable.vue index b4ef0dc49..37cde5f4c 100644 --- a/apps/vue/src/views/localization/resources/components/ResourceTable.vue +++ b/apps/vue/src/views/localization/resources/components/ResourceTable.vue @@ -7,7 +7,7 @@ type="primary" @click="handleAddNew" > - {{ L('Language:AddNew') }} + {{ L('Resource:AddNew') }}