schangxiang@126.com
2025-05-08 9cc9187d1d56332ab06620ae5bce8a9d0d2045bd
增加 公共工具api
已添加104个文件
已重命名36个文件
已删除225个文件
已复制2个文件
18615 ■■■■ 文件已修改
Weben_CMS专用代码生成器/UtilityApi/CMS.Plugin.UtilityApi.sln 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/README.md 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/publish.ps1 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsAbstractionsModule.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsExtensions.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsFeatures.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsOptions.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsSettings.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/HIAWmsActivity.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/IHIAWmsFlowService.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMS.Plugin.HIAWms.Application.Contracts.csproj 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginApplicationContractsModule.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginDtoExtensions.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/GetWmsAreasInput.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateOrUpdateDtoBase.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasExportModel.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateOrUpdateDtoBase.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersExportModel.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateOrUpdateDtoBase.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordExportModel.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordUpdateDto.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordsImportModel.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs 301 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateOrUpdateDtoBase.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesExportModel.cs 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/GetWmsStoresInput.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateOrUpdateDtoBase.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreDto.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresExportModel.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/ICMSPluginQueryAppService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsAreaAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockRecordAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsStoreAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMS.Plugin.HIAWms.Application.csproj 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginAppService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginApplicationModule.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginQueryAppService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs 324 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs 436 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs 445 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsStoreAppService.cs 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockRecordAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainErrorCodes.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainSharedModule.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaStatusEnum.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaTypeEnum.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerStatusEnum.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerTypeEnum.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/HIAWmsStatus.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialTypeEnum.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceStatusEnum.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceTypeEnum.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/SonTaskTypeEnum.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/StockTypeEnum.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/TaskTypeEnum.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/WmsTaskStatus.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/en.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/zh-Hans.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWmsResource.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaConsts.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerConsts.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialConsts.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceConsts.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreConsts.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMS.Plugin.HIAWms.Domain.csproj 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDbProperties.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDomainModule.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/CMSPluginDbMigrationService.cs 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDapperRepository.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDbSchemaMigrator.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/NullCMSPluginDbSchemaMigrator.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsAreaEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsContainerEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsPlaceEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsStoreEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Settings/CMSPluginSettingDefinitionProvider.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/IWmsAreaRepository.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsArea.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainer.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/IWmsInOutStockRecordRepository.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/WmsInOutStockRecord.cs 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/IWmsMaterialRepository.cs 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterial.cs 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlace.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/IWmsStoreRepository.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStore.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreDataSeedContributor.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.Domain/新文件夹/WmsTask.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMS.Plugin.HIAWms.EntityFrameworkCore.csproj 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDapperRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsArea.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainer.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsInOutStockRecord.cs 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsPlace.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsStore.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/ICMSPluginDbContext.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockRecordRepository.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/appsettings.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMS.Plugin.HIAWms.MySQL.csproj 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginMySQLModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMS.Plugin.HIAWms.PostgreSql.csproj 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginPostgreSqlModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMS.Plugin.HIAWms.SqlServer.csproj 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginSqlServerModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Apis/IHIAWmsExternalApi.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/CMS.Plugin.UtilityApi.csproj 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginEntry.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginRuntimeMigrator.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsAreaController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsContainerController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockRecordController.cs 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsStoreController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/EventHandlers/HIAWmsEventHandler.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/FlowProcessors/HIAWmsFlowProcessor.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Flows/50001_1.pfd 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/FodyWeavers.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsArgs.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsJob.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/ProjectService/HIAWmsProjectService.cs 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsArea导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainer导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterial导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlace导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStore导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Services/HIAWmsFlowService.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/Workers/HIAWmsWorker.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/src/CMS.Plugin.HIAWms/appsettings.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/CMS.Plugin.HIAWms.Application.Tests.csproj 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestBase.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestModule.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/CMS.Plugin.HIAWms.Domain.Tests.csproj 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestBase.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestModule.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsEntityFrameworkTestBase.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsTestEntityFrameworkCoreModule.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/CMS.Plugin.HIAWms.TestBase.csproj 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsDataSeedContributor.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBase.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBaseModule.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestData.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/build-server.ps1 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/build-web.ps1 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/.idea/.idea.CMS.Plugin.WareCmsUtilityApi/.idea/encodings.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/.idea/.idea.CMS.Plugin.WareCmsUtilityApi/.idea/indexLayout.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/.idea/.idea.CMS.Plugin.WareCmsUtilityApi/.idea/vcs.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/CMS.Plugin.WareCmsUtilityApi.sln 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/Directory.Build.props 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/NuGet.config 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/README.md 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/common.props 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/common.test.props 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/configureawait.props 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/delete-bin-obj-folders.bat 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/doc/Domain-Drive-Design.md 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/package.reference.props 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/publish.ps1 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMS.Plugin.WareCmsUtilityApi.Abstractions.csproj 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiAbstractionsModule.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiExtensions.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiFeatures.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiOptions.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiSettings.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/IWareCmsUtilityApiFlowService.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/Properties/AssemblyInfo.cs 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/WareCmsUtilityApiActivity.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/CMS.Plugin.WareCmsUtilityApi.Application.Contracts.csproj 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/CMSPluginApplicationContractsModule.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/CMSPluginDtoExtensions.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/GetSamplesInput.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SampleCreateDto.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SampleCreateOrUpdateDtoBase.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SampleDto.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SampleUpdateDto.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SamplesExportModel.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SamplesImportModel.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/ICMSPluginQueryAppService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Services/ISampleAppService.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMS.Plugin.WareCmsUtilityApi.Application.csproj 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMSPluginAppService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMSPluginApplicationModule.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMSPluginQueryAppService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/Implements/SampleAppService.cs 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/MapperProfiles/SampleAutoMapperProfile.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/Properties/AssemblyInfo.cs 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/CMS.Plugin.WareCmsUtilityApi.Domain.Shared.csproj 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/CMSPluginDomainErrorCodes.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/CMSPluginDomainSharedModule.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Enums/WareCmsUtilityApiStatus.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Localization/WareCmsUtilityApi/en.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Localization/WareCmsUtilityApi/zh-Hans.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Localization/WareCmsUtilityApiResource.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Samples/SampleConsts.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Samples/SampleEto.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/CMS.Plugin.WareCmsUtilityApi.Domain.csproj 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/CMSPluginDbProperties.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/CMSPluginDomainModule.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Data/CMSPluginDbMigrationService.cs 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Data/ICMSPluginDapperRepository.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Data/ICMSPluginDbSchemaMigrator.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Data/NullCMSPluginDbSchemaMigrator.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/EventHandlers/SampleEventHandler.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Properties/AssemblyInfo.cs 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Samples/ISampleRepository.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Samples/Sample.cs 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Samples/SampleDataSeedContributor.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Samples/SampleSpecification.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Settings/CMSPluginSettingDefinitionProvider.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.csproj 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMSPluginDapperRepository.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.Sample.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/ICMSPluginDbContext.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/Properties/AssemblyInfo.cs 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/Repositories/EfCoreSampleRepository.cs 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/appsettings.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/CMS.Plugin.WareCmsUtilityApi.MySQL.csproj 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/CMSPluginDbContext.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/CMSPluginMySQLModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/Properties/AssemblyInfo.cs 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/Scripts/UpdateDB.bat 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/Scripts/UpdateMigrations.bat 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/CMS.Plugin.WareCmsUtilityApi.PostgreSql.csproj 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/CMSPluginDbContext.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/CMSPluginPostgreSqlModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/Properties/AssemblyInfo.cs 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/Scripts/UpdateDB.bat 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/Scripts/UpdateMigrations.bat 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/CMS.Plugin.WareCmsUtilityApi.SqlServer.csproj 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/CMSPluginDbContext.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/CMSPluginDbContextFactory.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/CMSPluginSqlServerModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/Properties/AssemblyInfo.cs 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/Scripts/UpdateDB.bat 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/Scripts/UpdateMigrations.bat 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Apis/IWareCmsUtilityApiExternalApi.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMS.Plugin.WareCmsUtilityApi.csproj 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMSPluginEntry.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMSPluginModule.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMSPluginRuntimeMigrator.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Controller/SampleController.cs 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/EventHandlers/WareCmsUtilityApiEventHandler.cs 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/FlowProcessors/WareCmsUtilityApiFlowProcessor.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Flows/50001_1.pfd 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Flows/FlowInfo.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/FodyWeavers.xml 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Jobs/WareCmsUtilityApiArgs.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Jobs/WareCmsUtilityApiJob.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/ProjectService/WareCmsUtilityApiProjectService.cs 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Properties/launchSettings.json 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Resources/Templates/Sample导出模板.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Services/WareCmsUtilityApiFlowService.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Workers/WareCmsUtilityApiWorker.cs 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/appsettings.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/stylecop.json 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Application.Tests/CMS.Plugin.WareCmsUtilityApi.Application.Tests.csproj 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Application.Tests/WareCmsUtilityApiApplicationTestBase.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Application.Tests/WareCmsUtilityApiApplicationTestModule.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Domain.Tests/CMS.Plugin.WareCmsUtilityApi.Domain.Tests.csproj 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Domain.Tests/WareCmsUtilityApiDomainTestBase.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Domain.Tests/WareCmsUtilityApiDomainTestModule.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests.csproj 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests/WareCmsUtilityApiEntityFrameworkTestBase.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests/WareCmsUtilityApiTestEntityFrameworkCoreModule.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/CMS.Plugin.WareCmsUtilityApi.TestBase.csproj 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/WareCmsUtilityApiDataSeedContributor.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/WareCmsUtilityApiTestBase.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/WareCmsUtilityApiTestBaseModule.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/WareCmsUtilityApiTestData.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/CMS.Plugin.UtilityApi.sln
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/README.md
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/publish.ps1
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsAbstractionsModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsExtensions.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsFeatures.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsOptions.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/CMSPluginHIAWmsSettings.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/HIAWmsActivity.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/IHIAWmsFlowService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMS.Plugin.HIAWms.Application.Contracts.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginApplicationContractsModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/CMSPluginDtoExtensions.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/GetWmsAreasInput.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaCreateOrUpdateDtoBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreaUpdateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasExportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsAreas/WmsAreasImportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/GetWmsContainersInput.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerCreateOrUpdateDtoBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainerUpdateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersExportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsContainers/WmsContainersImportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/GetWmsInOutStockRecordInput.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordCreateOrUpdateDtoBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordExportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordUpdateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsInOutStockRecord/WmsInOutStockRecordsImportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/GetWmsMaterialInput.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialCreateOrUpdateDtoBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialExportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialUpdateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsMaterial/WmsMaterialsImportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/GetWmsPlacesInput.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceCreateOrUpdateDtoBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlaceUpdateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesExportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsPlaces/WmsPlacesImportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/GetWmsStoresInput.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreCreateOrUpdateDtoBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoreUpdateDto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresExportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Dtos/WmsStores/WmsStoresImportModel.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/ICMSPluginQueryAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsAreaAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsContainerAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsEnumAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsInOutStockRecordAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsMaterialAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsPlaceAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application.Contracts/Services/IWmsStoreAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMS.Plugin.HIAWms.Application.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginApplicationModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/CMSPluginQueryAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsAreaAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsContainerAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsEnumAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsInOutStockRecordAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsPlaceAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/Implements/WmsStoreAppService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsAreaAutoMapperProfile.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsContainerAutoMapperProfile.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsInOutStockRecordAutoMapperProfile.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsMaterialAutoMapperProfile.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsPlaceAutoMapperProfile.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Application/MapperProfiles/WmsStoreAutoMapperProfile.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMS.Plugin.HIAWms.Domain.Shared.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainErrorCodes.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginDomainSharedModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaStatusEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/AreaTypeEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerStatusEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/ContainerTypeEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/HIAWmsStatus.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/MaterialTypeEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceStatusEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PlaceTypeEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/PurchaseTypeEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/SonTaskTypeEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/StockTypeEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/TaskTypeEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/WmsTaskStatus.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Enums/YesNoEnum.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/en.json
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWms/zh-Hans.json
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Localization/HIAWmsResource.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/EnumHelper.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/ExportHelper.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/Util/GetEnumDescriptionUtil.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaConsts.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsAreas/WmsAreaEto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerConsts.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsContainers/WmsContainerEto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialConsts.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsMaterial/WmsMaterialEto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceConsts.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsPlaces/WmsPlaceEto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreConsts.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain.Shared/WmsStores/WmsStoreEto.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMS.Plugin.HIAWms.Domain.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDbProperties.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/CMSPluginDomainModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/CMSPluginDbMigrationService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDapperRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/ICMSPluginDbSchemaMigrator.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Data/NullCMSPluginDbSchemaMigrator.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsAreaEventHandler.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsContainerEventHandler.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsMaterialEventHandler.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsPlaceEventHandler.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/EventHandlers/WmsStoreEventHandler.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/Settings/CMSPluginSettingDefinitionProvider.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/IWmsAreaRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsArea.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaDataSeedContributor.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsAreas/WmsAreaSpecification.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/IWmsContainerRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainer.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerDataSeedContributor.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsContainers/WmsContainerSpecification.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/IWmsInOutStockRecordRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsInOutStockRecord/WmsInOutStockRecord.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/IWmsMaterialRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterial.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialDataSeedContributor.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsMaterial/WmsMaterialSpecification.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/IWmsPlaceRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlace.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceDataSeedContributor.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsPlaces/WmsPlaceSpecification.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/IWmsStoreRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStore.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreDataSeedContributor.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/WmsStores/WmsStoreSpecification.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.Domain/ÐÂÎļþ¼Ð/WmsTask.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMS.Plugin.HIAWms.EntityFrameworkCore.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDapperRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsArea.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsContainer.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsInOutStockRecord.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsMaterial.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsPlace.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsStore.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.WmsTask.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/ICMSPluginDbContext.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsAreaRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsContainerRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsInOutStockRecordRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsPlaceRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsStoreRepository.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.EntityFrameworkCore/appsettings.json
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMS.Plugin.HIAWms.MySQL.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContext.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginDbContextFactory.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/CMSPluginMySQLModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.MySQL/Scripts/UpdateMigrations.bat
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMS.Plugin.HIAWms.PostgreSql.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContext.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginDbContextFactory.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/CMSPluginPostgreSqlModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMS.Plugin.HIAWms.SqlServer.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContext.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginDbContextFactory.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms.SqlServer/CMSPluginSqlServerModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Apis/IHIAWmsExternalApi.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/CMS.Plugin.UtilityApi.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginEntry.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/CMSPluginRuntimeMigrator.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsAreaController.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsContainerController.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsEnumController.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsInOutStockRecordController.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsMaterialController.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsPlaceController.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Controller/WmsStoreController.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/EventHandlers/HIAWmsEventHandler.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/FlowProcessors/HIAWmsFlowProcessor.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Flows/50001_1.pfd
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/FodyWeavers.xml
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsArgs.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Jobs/HIAWmsJob.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/ProjectService/HIAWmsProjectService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsAreaµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsContainerµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsMaterialµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsPlaceµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Resources/Templates/WmsStoreµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Services/HIAWmsFlowService.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/Workers/HIAWmsWorker.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/src/CMS.Plugin.HIAWms/appsettings.json
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/CMS.Plugin.HIAWms.Application.Tests.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.Application.Tests/HIAWmsApplicationTestModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/CMS.Plugin.HIAWms.Domain.Tests.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.Domain.Tests/HIAWmsDomainTestModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsEntityFrameworkTestBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.EntityFrameworkCore.Tests/HIAWmsTestEntityFrameworkCoreModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/CMS.Plugin.HIAWms.TestBase.csproj
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsDataSeedContributor.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBase.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestBaseModule.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/UtilityApi/test/CMS.Plugin.HIAWms.TestBase/HIAWmsTestData.cs
ÎļþÒÑɾ³ý
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/build-server.ps1
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
# Paths
$rootFolder = (Get-Item -Path "./" -Verbose).FullName
$serverFolder = Join-Path $rootFolder ("/server")
Set-Location $serverFolder
& dotnet tool install --global dotnet-ef
& dotnet restore -s https://nexus.sycdev.com/repository/nuget-group/index.json
$migrationFolder = Join-Path $serverFolder ("/src/CMS.Plugin.WareCmsUtilityApi.MySQL")
Set-Location $migrationFolder
dotnet ef migrations add InitialCreate -c CMSPluginDbContext -o Migrations
Set-Location $serverFolder
& dotnet build
Set-Location $rootFolder
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/build-web.ps1
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
# Paths
$rootFolder = (Get-Item -Path "./" -Verbose).FullName
$webFolder = Join-Path $rootFolder ("/web")
Set-Location $rootFolder
& npm install yarn -g
& npm install lmes-cli -g
& lmes-cli create web
Set-Location $webFolder
& yarn
& npm run build
Set-Location $rootFolder
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/.idea/.idea.CMS.Plugin.WareCmsUtilityApi/.idea/encodings.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/.idea/.idea.CMS.Plugin.WareCmsUtilityApi/.idea/indexLayout.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/.idea/.idea.CMS.Plugin.WareCmsUtilityApi/.idea/vcs.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/CMS.Plugin.WareCmsUtilityApi.sln
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33110.190
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "解决方案项", "解决方案项", "{28C418E6-AF1D-4B74-ACDF-7B81FA4C256E}"
    ProjectSection(SolutionItems) = preProject
        .editorconfig = .editorconfig
        .gitignore = .gitignore
        common.props = common.props
        common.test.props = common.test.props
        configureawait.props = configureawait.props
        delete-bin-obj-folders.bat = delete-bin-obj-folders.bat
        Directory.Build.props = Directory.Build.props
        NuGet.config = NuGet.config
        package.reference.props = package.reference.props
        publish.ps1 = publish.ps1
        README.md = README.md
        stylecop.json = stylecop.json
    EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{19F68F40-2A05-48EB-86F0-56928B3CCE9C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{5632E2B3-5592-4C6A-9493-768E5B04804D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi", "src\CMS.Plugin.WareCmsUtilityApi\CMS.Plugin.WareCmsUtilityApi.csproj", "{9926DE4C-376D-487E-9C64-494913D94379}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore", "src\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.csproj", "{0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.Domain", "src\CMS.Plugin.WareCmsUtilityApi.Domain\CMS.Plugin.WareCmsUtilityApi.Domain.csproj", "{8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.Domain.Shared", "src\CMS.Plugin.WareCmsUtilityApi.Domain.Shared\CMS.Plugin.WareCmsUtilityApi.Domain.Shared.csproj", "{F405C633-8100-49B8-A270-D5340A165742}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.Application.Contracts", "src\CMS.Plugin.WareCmsUtilityApi.Application.Contracts\CMS.Plugin.WareCmsUtilityApi.Application.Contracts.csproj", "{D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.Application", "src\CMS.Plugin.WareCmsUtilityApi.Application\CMS.Plugin.WareCmsUtilityApi.Application.csproj", "{02CB86F3-E614-4193-8B7F-C2FB665C8A5A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{A68B3B6B-DDE8-431E-90F3-A9FEE1D14A53}"
    ProjectSection(SolutionItems) = preProject
        doc\Domain-Drive-Design.md = doc\Domain-Drive-Design.md
    EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.TestBase", "test\CMS.Plugin.WareCmsUtilityApi.TestBase\CMS.Plugin.WareCmsUtilityApi.TestBase.csproj", "{33999EE8-73A1-4CF2-BDFD-CE353B05A727}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests", "test\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests.csproj", "{C6AFC427-C51D-4BD2-BBA6-8841D3495077}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.Domain.Tests", "test\CMS.Plugin.WareCmsUtilityApi.Domain.Tests\CMS.Plugin.WareCmsUtilityApi.Domain.Tests.csproj", "{74E86B03-F185-47B2-A4C3-04C1CEC84F14}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.Application.Tests", "test\CMS.Plugin.WareCmsUtilityApi.Application.Tests\CMS.Plugin.WareCmsUtilityApi.Application.Tests.csproj", "{731DE36F-27F5-48B8-865D-DA43C8910010}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.Abstractions", "src\CMS.Plugin.WareCmsUtilityApi.Abstractions\CMS.Plugin.WareCmsUtilityApi.Abstractions.csproj", "{87D957E4-FE12-4432-9B7B-827A98DD41D1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.MySQL", "src\CMS.Plugin.WareCmsUtilityApi.MySQL\CMS.Plugin.WareCmsUtilityApi.MySQL.csproj", "{2F71D6DF-F19A-410C-BD79-F2F871E63902}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.PostgreSql", "src\CMS.Plugin.WareCmsUtilityApi.PostgreSql\CMS.Plugin.WareCmsUtilityApi.PostgreSql.csproj", "{698D9FFA-080C-4F22-9FBF-B9509B28A954}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMS.Plugin.WareCmsUtilityApi.SqlServer", "src\CMS.Plugin.WareCmsUtilityApi.SqlServer\CMS.Plugin.WareCmsUtilityApi.SqlServer.csproj", "{521D17FF-BD3A-43B4-9BEE-183FDE3522F4}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {9926DE4C-376D-487E-9C64-494913D94379}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {9926DE4C-376D-487E-9C64-494913D94379}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {9926DE4C-376D-487E-9C64-494913D94379}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {9926DE4C-376D-487E-9C64-494913D94379}.Release|Any CPU.Build.0 = Release|Any CPU
        {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A}.Release|Any CPU.Build.0 = Release|Any CPU
        {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37}.Release|Any CPU.Build.0 = Release|Any CPU
        {F405C633-8100-49B8-A270-D5340A165742}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {F405C633-8100-49B8-A270-D5340A165742}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {F405C633-8100-49B8-A270-D5340A165742}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {F405C633-8100-49B8-A270-D5340A165742}.Release|Any CPU.Build.0 = Release|Any CPU
        {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2}.Release|Any CPU.Build.0 = Release|Any CPU
        {02CB86F3-E614-4193-8B7F-C2FB665C8A5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {02CB86F3-E614-4193-8B7F-C2FB665C8A5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {02CB86F3-E614-4193-8B7F-C2FB665C8A5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {02CB86F3-E614-4193-8B7F-C2FB665C8A5A}.Release|Any CPU.Build.0 = Release|Any CPU
        {33999EE8-73A1-4CF2-BDFD-CE353B05A727}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {33999EE8-73A1-4CF2-BDFD-CE353B05A727}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {33999EE8-73A1-4CF2-BDFD-CE353B05A727}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {33999EE8-73A1-4CF2-BDFD-CE353B05A727}.Release|Any CPU.Build.0 = Release|Any CPU
        {C6AFC427-C51D-4BD2-BBA6-8841D3495077}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {C6AFC427-C51D-4BD2-BBA6-8841D3495077}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {C6AFC427-C51D-4BD2-BBA6-8841D3495077}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {C6AFC427-C51D-4BD2-BBA6-8841D3495077}.Release|Any CPU.Build.0 = Release|Any CPU
        {74E86B03-F185-47B2-A4C3-04C1CEC84F14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {74E86B03-F185-47B2-A4C3-04C1CEC84F14}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {74E86B03-F185-47B2-A4C3-04C1CEC84F14}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {74E86B03-F185-47B2-A4C3-04C1CEC84F14}.Release|Any CPU.Build.0 = Release|Any CPU
        {731DE36F-27F5-48B8-865D-DA43C8910010}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {731DE36F-27F5-48B8-865D-DA43C8910010}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {731DE36F-27F5-48B8-865D-DA43C8910010}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {731DE36F-27F5-48B8-865D-DA43C8910010}.Release|Any CPU.Build.0 = Release|Any CPU
        {87D957E4-FE12-4432-9B7B-827A98DD41D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {87D957E4-FE12-4432-9B7B-827A98DD41D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {87D957E4-FE12-4432-9B7B-827A98DD41D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {87D957E4-FE12-4432-9B7B-827A98DD41D1}.Release|Any CPU.Build.0 = Release|Any CPU
        {2F71D6DF-F19A-410C-BD79-F2F871E63902}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {2F71D6DF-F19A-410C-BD79-F2F871E63902}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {2F71D6DF-F19A-410C-BD79-F2F871E63902}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {2F71D6DF-F19A-410C-BD79-F2F871E63902}.Release|Any CPU.Build.0 = Release|Any CPU
        {698D9FFA-080C-4F22-9FBF-B9509B28A954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {698D9FFA-080C-4F22-9FBF-B9509B28A954}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {698D9FFA-080C-4F22-9FBF-B9509B28A954}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {698D9FFA-080C-4F22-9FBF-B9509B28A954}.Release|Any CPU.Build.0 = Release|Any CPU
        {521D17FF-BD3A-43B4-9BEE-183FDE3522F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {521D17FF-BD3A-43B4-9BEE-183FDE3522F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {521D17FF-BD3A-43B4-9BEE-183FDE3522F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {521D17FF-BD3A-43B4-9BEE-183FDE3522F4}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(NestedProjects) = preSolution
        {9926DE4C-376D-487E-9C64-494913D94379} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {0022A80F-6D52-4B58-B2B3-F029DB4AEC0A} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {8B2BED13-2B0E-49B5-8B0A-F272D27B2F37} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {F405C633-8100-49B8-A270-D5340A165742} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {D65BB57E-618A-468C-AA28-BD8C9EBF0AF2} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {02CB86F3-E614-4193-8B7F-C2FB665C8A5A} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {33999EE8-73A1-4CF2-BDFD-CE353B05A727} = {5632E2B3-5592-4C6A-9493-768E5B04804D}
        {C6AFC427-C51D-4BD2-BBA6-8841D3495077} = {5632E2B3-5592-4C6A-9493-768E5B04804D}
        {74E86B03-F185-47B2-A4C3-04C1CEC84F14} = {5632E2B3-5592-4C6A-9493-768E5B04804D}
        {731DE36F-27F5-48B8-865D-DA43C8910010} = {5632E2B3-5592-4C6A-9493-768E5B04804D}
        {87D957E4-FE12-4432-9B7B-827A98DD41D1} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {2F71D6DF-F19A-410C-BD79-F2F871E63902} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {698D9FFA-080C-4F22-9FBF-B9509B28A954} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
        {521D17FF-BD3A-43B4-9BEE-183FDE3522F4} = {19F68F40-2A05-48EB-86F0-56928B3CCE9C}
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {220123E7-A888-4DE7-8F9A-8FE271543889}
    EndGlobalSection
EndGlobal
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/Directory.Build.props
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/NuGet.config
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/README.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
# WareCmsUtilityApi
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/common.props
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/common.test.props
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/configureawait.props
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/delete-bin-obj-folders.bat
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/doc/Domain-Drive-Design.md
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/package.reference.props
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/publish.ps1
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
# publishFolder
$publishFolder= $args[0]
# Paths
$rootFolder = (Get-Item -Path "./" -Verbose).FullName
if ([String]::IsNullOrEmpty($publishFolder)) {
    $publishFolder = Join-Path $rootFolder "output/publish"
    $hasPath = Test-Path($publishFolder)
    if (-Not $hasPath) {
        new-item -path $rootFolder -name "output/publish" -type directory
    }
}
Write-Host ("Publish Output " + $publishFolder)
# List of projects
$projects = (
    "src/CMS.Plugin.WareCmsUtilityApi"
)
# Rebuild solution
Set-Location $rootFolder
dotnet restore -s https://nexus.sycdev.com/repository/nuget-hosted/  --runtime win-x64
# dotnet restore --configfile NuGet.config  --runtime win-x64
Write-Host ("Restore Completed ! ")
# Publish all projects
foreach($project in $projects) {
    $projectFolder = Join-Path $rootFolder $project
    $projectName = $project.Substring($project.LastIndexOf("/") + 1)
    Set-Location $projectFolder
    Write-Host ("Publish " + $projectName)
   #  & dotnet publish ($projectName + ".csproj ") --configuration Release --output (Join-Path $publishFolder ("/" + $projectName.ToLower()))  --nologo --verbosity quiet --no-restore
    & dotnet publish ($projectName + ".csproj ") --configuration Release --output (Join-Path $publishFolder ("/" + $projectName.ToLower()))  --nologo --verbosity quiet --no-restore  --runtime win-x64
}
Write-Host ("Publish Completed ! ")
# Go back to the root folder
Set-Location $rootFolder
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMS.Plugin.WareCmsUtilityApi.Abstractions.csproj
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiAbstractionsModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
namespace CMS.Plugin.WareCmsUtilityApi.Abstractions;
/// <summary>
/// æµç¨‹ä¸šåŠ¡æ‰©å±•æ¨¡å—
/// </summary>
public class CMSPluginWareCmsUtilityApiAbstractionsModule
{
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiExtensions.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
using Microsoft.Extensions.DependencyInjection;
namespace CMS.Plugin.WareCmsUtilityApi.Abstractions
{
    /// <summary>
    /// æ‰©å±•方法
    /// </summary>
    public static class CMSPluginWareCmsUtilityApiExtensions
    {
        /// <summary>
        /// Tries the add setting management.
        /// </summary>
        /// <param name="services">The services.</param>
        /// <param name="configureOptions">The configure options.</param>
        /// <returns></returns>
        public static IServiceCollection TryAddWareCmsUtilityApi(this IServiceCollection services, Action<CMSPluginWareCmsUtilityApiOptions>? configureOptions = null)
        {
            if (configureOptions == null)
            {
                services.AddOptions().Configure<CMSPluginWareCmsUtilityApiOptions>(options => {});
            }
            else
            {
                services.AddOptions().PostConfigure(configureOptions);
            }
            return services;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiFeatures.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
namespace CMS.Plugin.WareCmsUtilityApi.Abstractions
{
    /// <summary>
    /// åŠŸèƒ½å®šä¹‰.
    /// </summary>
    public class CMSPluginWareCmsUtilityApiFeatures
    {
        /// <summary>
        /// The prefix
        /// </summary>
        private const string Prefix = "LMES";
        /// <summary>
        /// GroupName
        /// </summary>
        public const string GroupName = Prefix + ".WareCmsUtilityApi";
        /// <summary>
        /// æ˜¯å¦å¼€å¯
        /// </summary>
        public const string Enable = GroupName + ".Enable";
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiOptions.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using CMS.Plugin.MesSuite.Abstractions.Models;
namespace CMS.Plugin.WareCmsUtilityApi.Abstractions
{
    public class CMSPluginWareCmsUtilityApiOptions
    {
        public CMSPluginWareCmsUtilityApiOptions()
        {
        }
        /// <summary>
        /// æ‰©å±•属性
        /// </summary>
        public List<ExtraProperty> ExtraProperties { get; set; } = new();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/CMSPluginWareCmsUtilityApiSettings.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
namespace CMS.Plugin.WareCmsUtilityApi.Abstractions
{
    /// <summary>
    /// CMSSettingNames
    /// </summary>
    public static class CMSPluginWareCmsUtilityApiSettings
    {
        /// <summary>
        /// The prefix
        /// </summary>
        private const string Prefix = "SCMS";
        /// <summary>
        /// The application settings prefix
        /// </summary>
        private const string AppSettingsPrefix = Prefix + ".AppSettings";
        /// <summary>
        /// ç»„件状态:0=关闭,1=开启
        /// </summary>
        public const string PluginState = AppSettingsPrefix + ".WareCmsUtilityApi.PluginState";
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/IWareCmsUtilityApiFlowService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
using SYC.Flow.Kernel;
namespace CMS.Plugin.WareCmsUtilityApi.Abstractions
{
    /// <summary>
    /// WareCmsUtilityApi æµç¨‹æœåŠ¡
    /// </summary>
    public interface IWareCmsUtilityApiFlowService
    {
        /// <summary>
        /// å·¥è‰ºæµç¨‹å¤„理
        /// </summary>
        Task ProcessAsync(ProcessflowEventArgs args);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/Properties/AssemblyInfo.cs
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Abstractions/WareCmsUtilityApiActivity.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
using System.ComponentModel;
using System.Runtime.Serialization;
using CMS.Plugin.FlowManagement.Abstractions.Enums;
using CMS.Plugin.FlowManagement.Abstractions.FlowBusiness.Activitys;
using CMS.Plugin.MesSuite.Abstractions.Models;
using CMS.Plugin.OrderManagement.Abstractions.Models;
using CMS.Plugin.ProcessManagement.Abstractions.Models;
using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SYC.Flow.Kernel;
namespace CMS.Plugin.WareCmsUtilityApi.Abstractions
{
    /// <summary>
    /// WareCmsUtilityApi ä¸šåŠ¡æ­¥éª¤
    /// </summary>
    [Design("WareCmsUtilityApi", "WareCmsUtilityApi ä¸šåŠ¡æ­¥éª¤", Sort = 99), Category("定制步骤")]
    [Serializable]
    public class WareCmsUtilityApiActivity : BusinessActivity
    {
        /// <summary>
        /// é…ç½®å±žæ€§1
        /// </summary>
        [Design("配置属性1", "配置属性1", Sort = 1), Category("配置信息")]
        [DataMember]
        public string MyProperty1 { get; set; }
        /// <summary>
        /// é…ç½®å±žæ€§2
        /// </summary>
        [Design("配置属性2", "配置属性2", Sort = 2), Category("配置信息")]
        [DataMember]
        public int MyProperty2 { get; set; }
        /// <summary>
        /// æµç¨‹ä¸Šä¸‹æ–‡æ ‡è¯†é›†åˆ
        /// </summary>
        public override List<FlowItemKey> FlowItemKeys => GetFlowItemKeys();
        /// <summary>
        /// å·¥è‰ºæµç¨‹å¤„理
        /// </summary>
        public override async Task ProcessAsync(ProcessflowEventArgs args)
        {
            // å·¥è‰ºæ¨¡åž‹
            var processModel = Flow.DataItems.ApplicationData as ProcessModel;
            // å·¥å•模型
            var orderModel = Flow.DataItems[FlowItemCollection.OrderModel] as OrderModel;
            // äº§å“æ¨¡åž‹
            var productModel = Flow.DataItems[FlowItemCollection.ProductModel] as AssociationProductModel;
            // è¿½æº¯æ¨¡åž‹
            var traceModel = Flow.DataItems[FlowItemCollection.TraceModel] as TraceModel;
            Flow.Logger.LogInformation($"执行流程:实例={Flow.Instance.ProcID} -> {Flow.Name} -> {Name} WareCmsUtilityApiActivity");
            // ä¸šåŠ¡å¤„ç†
            // ç”±äºŽServiceProvider来源于Flow组件,此处需共享CMS.Plugin.WareCmsUtilityApi.Abstractions程序集,否则无法调用,修改CMS.Plugin.WareCmsUtilityApi项目中的CMSPluginModule.cs文件,取消注释GetSharedAssemblies()方法
            var warecmsutilityapiFlowService = Flow.ServiceProvider.GetService<IWareCmsUtilityApiFlowService>();
            if (warecmsutilityapiFlowService != null)
            {
                await warecmsutilityapiFlowService.ProcessAsync(args);
            }
        }
        /// <summary>
        /// Gets the flow item keys.
        /// </summary>
        protected virtual List<FlowItemKey> GetFlowItemKeys()
        {
            var result = new List<FlowItemKey>();
            return result;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/CMS.Plugin.WareCmsUtilityApi.Application.Contracts.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.props" />
    <Import Project="../../configureawait.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <GenerateDocumentationFile>True</GenerateDocumentationFile>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Volo.Abp.Ddd.Application.Contracts" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.Authorization.Abstractions" Version="$(ABPPackageVersion)" />
        <PackageReference Include="MiniExcel" Version="1.31.3" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Domain.Shared\CMS.Plugin.WareCmsUtilityApi.Domain.Shared.csproj" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/CMSPluginApplicationContractsModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared;
using Volo.Abp.Application;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts;
/// <summary>
/// æ’件应用服务契约模块
/// </summary>
[DependsOn(
    typeof(CMSPluginDomainSharedModule),
    typeof(AbpDddApplicationContractsModule)
)]
public class CMSPluginApplicationContractsModule : AbpModule
{
    /// <inheritdoc />
    public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        CMSPluginDtoExtensions.Configure();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/CMSPluginDtoExtensions.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
using Volo.Abp.Threading;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts;
/// <summary>
/// Dto扩展
/// </summary>
public static class CMSPluginDtoExtensions
{
    private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
    /// <summary>
    /// Configures this instance.
    /// </summary>
    public static void Configure()
    {
        OneTimeRunner.Run(() =>
        {
                /* You can add extension properties to DTOs
                 * defined in the depended modules.
                 *
                 * Example:
                 *
                 * ObjectExtensionManager.Instance
                 *   .AddOrUpdateProperty<IdentityRoleDto, string>("Title");
                 *
                 * See the documentation for more:
                 * https://docs.abp.io/en/abp/latest/Object-Extensions
                 */
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/GetSamplesInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
/// <summary>
/// Sample查询参数对象
/// </summary>
public class GetSamplesInput : ExtensiblePagedAndSortedResultRequestDto
{
    /// <summary>
    /// Gets or sets the filter.
    /// </summary>
    public string Filter { get; set; }
    /// <summary>
    /// Gets or sets the name.
    /// </summary>
    public string Name { get; set; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SampleCreateDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
/// <summary>
/// Sample创建参数对象
/// </summary>
public class SampleCreateDto : SampleCreateOrUpdateDtoBase
{
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int? Sort { get; set; }
    /// <summary>
    /// æ˜¯å¦ç¦ç”¨
    /// </summary>
    public bool? IsDisabled { get; set; } = false;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SampleCreateOrUpdateDtoBase.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
/// <summary>
/// Sample创建或更新基类
/// </summary>
public abstract class SampleCreateOrUpdateDtoBase : ExtensibleEntityDto
{
    /// <summary>
    /// ç¼–号
    /// </summary>
    public virtual string Code { get; set; }
    /// <summary>
    /// åç§°
    /// </summary>
    public virtual string Name { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public virtual string Remark { get; set; }
    /// <summary>
    /// Initializes a new instance of the <see cref="SampleCreateOrUpdateDtoBase"/> class.
    /// </summary>
    public SampleCreateOrUpdateDtoBase() : base(false)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SampleDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
/// <summary>
/// Sample数据参数对象
/// </summary>
public class SampleDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
{
    /// <summary>
    /// ç¼–号
    /// </summary>
    public virtual string Code { get; set; }
    /// <summary>
    /// åç§°
    /// </summary>
    public virtual string Name { get; set; }
    /// <summary>
    /// æŽ’序
    /// </summary>
    public virtual int Sort { get; set; }
    /// <summary>
    /// å¤‡æ³¨
    /// </summary>
    public virtual string Remark { get; set; }
    /// <summary>
    /// æ˜¯å¦ç¦ç”¨
    /// </summary>
    public virtual bool? IsDisabled { get; set; }
    /// <summary>
    /// å¹¶å‘戳
    /// </summary>
    public string ConcurrencyStamp { get; set; }
    /// <summary>
    /// Gets the export data.
    /// </summary>
    /// <returns></returns>
    public Dictionary<string, object> GetExportData()
    {
        var exportData = new Dictionary<string, object>();
        foreach (var property in this.GetType().GetProperties())
        {
            exportData.Add(property.Name, property.GetValue(this));
        }
        return exportData;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SampleUpdateDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using Volo.Abp.Domain.Entities;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
/// <summary>
/// Sample更新参数对象
/// </summary>
public class SampleUpdateDto : SampleCreateOrUpdateDtoBase, IHasConcurrencyStamp
{
    /// <summary>
    /// å¹¶å‘戳
    /// </summary>
    public string ConcurrencyStamp { get; set; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SamplesExportModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
using MiniExcelLibs.Attributes;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples
{
    /// <summary>
    /// Samples导出模型
    /// </summary>
    public class SamplesExportModel
    {
        /// <summary>
        /// Sample导出模型
        /// </summary>
        public class WorkSectionExportModel
        {
            [ExcelColumn(Name = "名称", Width = 25)]
            public virtual string Name { get; set; }
            [ExcelColumn(Name = "编号", Width = 25)]
            public virtual string Code { get; set; }
            [ExcelColumn(Name = "备注", Width = 25)]
            public virtual string Remark { get; set; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/Samples/SamplesImportModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
using static CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples.SamplesExportModel;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples
{
    /// <summary>
    /// Samples导入模型
    /// </summary>
    public class SamplesImportModel
    {
        private List<SampleImportModel> _samples = new();
        public List<SampleImportModel> Samples
        {
            get => _samples;
            set
            {
                _samples = value;
                var rowIndex = 2;
                _samples?.ForEach(x => x.RowIndex = rowIndex++);
            }
        }
        /// <summary>
        /// Sample导入模型
        /// </summary>
        public class SampleImportModel : WorkSectionExportModel
        {
            /// <summary>
            /// è¡Œå·
            /// </summary>
            public int RowIndex { get; set; }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/ICMSPluginQueryAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
using Volo.Abp.Application.Services;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts;
/// <summary>
/// æŸ¥è¯¢åº”用服务
/// </summary>
public interface ICMSPluginQueryAppService : IApplicationService
{
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Services/ISampleAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
using Volo.Abp.Application.Services;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Services;
/// <summary>
/// Sample应用服务
/// </summary>
public interface ISampleAppService : ICrudAppService<SampleDto, Guid, GetSamplesInput, SampleCreateDto, SampleUpdateDto>
{
    /// <summary>
    /// Clones the asynchronous.
    /// </summary>
    /// <param name="ids">The ids.</param>
    /// <returns></returns>
    Task<List<SampleDto>> CloneAsync(IEnumerable<Guid> ids);
    /// <summary>
    /// Deletes the many asynchronous.
    /// </summary>
    /// <param name="ids">The ids.</param>
    /// <returns></returns>
    Task DeleteManyAsync(IEnumerable<Guid> ids);
    /// <summary>
    /// Adjusts the sort asynchronous.
    /// </summary>
    /// <param name="id">The identifier.</param>
    /// <param name="sort">The sort.</param>
    /// <returns></returns>
    Task AdjustSortAsync(Guid id, int sort);
    /// <summary>
    /// Imports the asynchronous.
    /// </summary>
    /// <param name="input">The input.</param>
    /// <returns></returns>
    Task ImportAsync(SamplesImportModel input);
    /// <summary>
    /// Exports the asynchronous.
    /// </summary>
    /// <param name="input">The input.</param>
    /// <returns></returns>
    Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetSamplesInput input);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMS.Plugin.WareCmsUtilityApi.Application.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.props" />
    <Import Project="../../configureawait.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Volo.Abp.Dapper" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.AutoMapper" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.Ddd.Application" Version="$(ABPPackageVersion)" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Application.Contracts\CMS.Plugin.WareCmsUtilityApi.Application.Contracts.csproj" />
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Domain\CMS.Plugin.WareCmsUtilityApi.Domain.csproj" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMSPluginAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Localization;
using Volo.Abp.Application.Services;
namespace CMS.Plugin.WareCmsUtilityApi.Application;
/// <summary>
/// Inherit your application services from this class.
/// </summary>
public abstract class CMSPluginAppService : ApplicationService
{
    /// <summary>
    /// Initializes a new instance of the <see cref="CMSPluginAppService"/> class.
    /// </summary>
    protected CMSPluginAppService()
    {
        ObjectMapperContext = typeof(CMSPluginApplicationModule);
        LocalizationResource = typeof(WareCmsUtilityApiResource);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMSPluginApplicationModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts;
using CMS.Plugin.WareCmsUtilityApi.Domain;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Application;
using Volo.Abp.AutoMapper;
using Volo.Abp.EventBus;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.Application;
/// <summary>
/// æ’件应用服务模块
/// </summary>
[DependsOn(
    typeof(CMSPluginDomainModule),
    typeof(CMSPluginApplicationContractsModule),
    typeof(AbpAutoMapperModule),
    typeof(AbpEventBusModule),
    typeof(AbpDddApplicationModule)
    )]
public class CMSPluginApplicationModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        context.Services.AddAutoMapperObjectMapper<CMSPluginApplicationModule>();
        Configure<AbpAutoMapperOptions>(options =>
        {
            options.AddMaps<CMSPluginApplicationModule>(validate: true);
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMSPluginQueryAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts;
using CMS.Plugin.WareCmsUtilityApi.Domain.Data;
namespace CMS.Plugin.WareCmsUtilityApi.Application;
/// <inheritdoc />
public class CMSPluginQueryAppService : CMSPluginAppService, ICMSPluginQueryAppService
{
    private readonly ICMSPluginDapperRepository _dapperRepository;
    /// <summary>
    /// Initializes a new instance of the <see cref="CMSPluginQueryAppService"/> class.
    /// </summary>
    /// <param name="dapperRepository">The dapper repository.</param>
    public CMSPluginQueryAppService(ICMSPluginDapperRepository dapperRepository)
    {
        _dapperRepository = dapperRepository;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/Implements/SampleAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,308 @@
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Services;
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared;
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Samples;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.ObjectExtending;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Implements;
/// <inheritdoc />
public class SampleAppService : CMSPluginAppService, ISampleAppService
{
    private readonly ISampleRepository _sampleRepository;
    /// <summary>
    /// Initializes a new instance of the <see cref="SampleAppService"/> class.
    /// </summary>
    /// <param name="sampleRepository">The task job repository.</param>
    public SampleAppService(ISampleRepository sampleRepository)
    {
        _sampleRepository = sampleRepository;
    }
    /// <inheritdoc />
    public virtual async Task<SampleDto> GetAsync(Guid id)
    {
        return ObjectMapper.Map<Sample, SampleDto>(await _sampleRepository.GetAsync(id));
    }
    /// <inheritdoc />
    public virtual async Task<PagedResultDto<SampleDto>> GetListAsync(GetSamplesInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(Sample.Sort);
        }
        var specification = new SampleSpecification(input.Name);
        var count = await _sampleRepository.GetCountAsync(input.Filter, specification);
        var list = await _sampleRepository.GetListAsync(input.Sorting, input.MaxResultCount,  input.SkipCount, input.Filter, specification);
        return new PagedResultDto<SampleDto>(count, ObjectMapper.Map<List<Sample>, List<SampleDto>>(list));
    }
    /// <inheritdoc />
    public virtual async Task<SampleDto> CreateAsync(SampleCreateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var exist = await _sampleRepository.NameExistAsync(input.Name);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.Name]);
        }
        var maxSort = await _sampleRepository.GetMaxSortAsync();
        var sort = input.Sort ?? maxSort;
        var sample = new Sample(GuidGenerator.Create(), input.Code, input.Name, sort, input.Remark);
        input.MapExtraPropertiesTo(sample, MappingPropertyDefinitionChecks.None);
        await _sampleRepository.InsertAsync(sample);
        if (input.Sort.HasValue && sample.Sort != maxSort)
        {
            await AdjustSortAsync(sample.Id, sample.Sort);
        }
        return ObjectMapper.Map<Sample, SampleDto>(sample);
    }
    /// <inheritdoc />
    public virtual async Task<SampleDto> UpdateAsync(Guid id, SampleUpdateDto input)
    {
        await CheckCreateOrUpdateDtoAsync(input);
        var sample = await _sampleRepository.GetAsync(id);
        var exist = await _sampleRepository.NameExistAsync(input.Name, sample.Id);
        if (exist)
        {
            throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.Name]);
        }
        sample.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
        input.MapExtraPropertiesTo(sample, MappingPropertyDefinitionChecks.None);
        sample.Update(input.Code, input.Name, input.Remark);
        await _sampleRepository.UpdateAsync(sample);
        return ObjectMapper.Map<Sample, SampleDto>(sample);
    }
    /// <inheritdoc />
    public async Task<List<SampleDto>> CloneAsync(IEnumerable<Guid> ids)
    {
        var samples = new List<Sample>();
        if (ids != null)
        {
            var sort = await _sampleRepository.GetMaxSortAsync();
            foreach (var id in ids)
            {
                var sample = await _sampleRepository.FindAsync(id);
                if (sample != null)
                {
                    var name = sample.Name + SampleConsts.CloneTag;
                    var notExist = false;
                    while (!notExist)
                    {
                        var exist = await _sampleRepository.NameExistAsync(name);
                        if (exist || samples.Any(x => x.Name == name))
                        {
                            name += SampleConsts.CloneTag;
                            continue;
                        }
                        notExist = true;
                    }
                    sample = await _sampleRepository.InsertAsync(sample.Clone(GuidGenerator.Create(), name, sort++));
                    samples.Add(sample);
                }
            }
        }
        return ObjectMapper.Map<List<Sample>, List<SampleDto>>(samples);
    }
    /// <inheritdoc />
    public virtual Task DeleteAsync(Guid id)
    {
        return _sampleRepository.DeleteAsync(id);
    }
    /// <inheritdoc />
    public async Task DeleteManyAsync(IEnumerable<Guid> ids)
    {
        foreach (var id in ids)
        {
            await DeleteAsync(id);
        }
    }
    /// <inheritdoc />
    public virtual async Task AdjustSortAsync(Guid id, int sort)
    {
        var list = await _sampleRepository.GetListAsync(nameof(Sample.Sort));
        if (list != null && list.Any())
        {
            var initSort = 1;
            list.ForEach(x => x.AdjustSort(initSort++));
            var entity = list.FirstOrDefault(x => x.Id == id);
            if (entity != null)
            {
                if (sort == 1)
                {
                    list.Where(x => x.Id != id).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                }
                else if (entity.Sort > sort)
                {
                    list.Where(x => x.Id != id && x.Sort >= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort < sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                else if (entity.Sort < sort)
                {
                    list.Where(x => x.Id != id && x.Sort > sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort + 1));
                    list.Where(x => x.Id != id && x.Sort <= sort).ToList()?.ForEach(x => x.AdjustSort(x.Sort - 1));
                }
                entity.AdjustSort(sort);
            }
        }
        await _sampleRepository.UpdateManyAsync(list);
    }
    /// <inheritdoc />
    public async Task ImportAsync(SamplesImportModel input)
    {
        Check.NotNull(input, nameof(input));
        var sampleCreateDtos = new List<(int RowIndex, SampleCreateDto Item)>();
        var sampleUpdateDtos = new List<(int RowIndex, Guid Id, SampleUpdateDto Item)>();
        var samples = input.Samples;
        if (samples != null && samples.Any())
        {
            #region å¯¼å…¥æ ¡éªŒ
            // åˆ¤æ–­åç§°æ˜¯å¦é‡å¤ï¼Œå¹¶è¾“出第几行重复
            var duplicateSamples = samples.GroupBy(x => x.Name).Where(x => x.Count() > 1).ToList();
            if (duplicateSamples?.Any() == true)
            {
                var duplicateSampleMsgs = duplicateSamples.Select(x => $"第 {string.Join(",", x.Select(x => x.RowIndex))} è¡Œï¼š{x.Key}  åç§°é‡å¤");
                var errorMsg = $"导入失败!配置, {string.Join(",", duplicateSampleMsgs)},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
            #endregion
            foreach (var sample in samples)
            {
                if (sample.Code.IsNullOrWhiteSpace() && sample.Name.IsNullOrWhiteSpace())
                {
                    continue;
                }
                if (sample.Name.IsNullOrWhiteSpace())
                {
                    var errorMsg = $"导入失败!配置,第{sample.RowIndex}行:Sample名称不能为空";
                    throw new UserFriendlyException(errorMsg);
                }
                var oldSample = await _sampleRepository.FindByNameAsync(sample.Name);
                if (oldSample != null)
                {
                    var sampleUpdateDto = new SampleUpdateDto
                    {
                        Code = sample.Code,
                        Name = sample.Name,
                        Remark = sample.Remark,
                    };
                    sampleUpdateDtos.Add((sample.RowIndex, oldSample.Id, sampleUpdateDto));
                }
                else
                {
                    var sampleCreateDto = new SampleCreateDto
                    {
                        Code = sample.Code,
                        Name = sample.Name,
                        Remark = sample.Remark,
                    };
                    sampleCreateDtos.Add((sample.RowIndex, sampleCreateDto));
                }
            }
        }
        // æ–°å¢ž
        foreach (var sampleDto in sampleCreateDtos)
        {
            try
            {
                await CreateAsync(sampleDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{sampleDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
        // æ›´æ–°
        foreach (var sampleDto in sampleUpdateDtos)
        {
            try
            {
                await UpdateAsync(sampleDto.Id, sampleDto.Item);
            }
            catch (Exception e)
            {
                var errorMsg = $"导入失败!配置,第{sampleDto.RowIndex}行:{e.Message},终止导入";
                throw new UserFriendlyException(errorMsg);
            }
        }
    }
    /// <inheritdoc />
    public async Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetSamplesInput input)
    {
        Check.NotNull(input, nameof(input));
        if (input.Sorting.IsNullOrWhiteSpace())
        {
            input.Sorting = nameof(Sample.Sort);
        }
        var specification = new SampleSpecification(input.Name);
        var list = await _sampleRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter, specification, includeDetails: true);
        var result = ObjectMapper.Map<List<Sample>, List<SampleDto>>(list);
        var sheets = new Dictionary<string, object>
        {
            ["配置"] = result.Select(x => x.GetExportData()).ToList(),
        };
        var fileName = result.Count > 1 ? "Sample列表" : result.Count == 1 ? result.First()?.Name : "Sample模版";
        return (sheets, fileName);
    }
    /// <summary>
    /// Checks the create or update dto asynchronous.
    /// </summary>
    /// <param name="input">The input.</param>
    protected Task CheckCreateOrUpdateDtoAsync(SampleCreateOrUpdateDtoBase input)
    {
        Check.NotNull(input, nameof(input));
        Check.NotNullOrWhiteSpace(input.Code, "编号", SampleConsts.MaxCodeLength);
        Check.NotNullOrWhiteSpace(input.Name, "名称", SampleConsts.MaxNameLength);
        Check.Length(input.Remark, "备注", SampleConsts.MaxRemarkLength);
        return Task.CompletedTask;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/MapperProfiles/SampleAutoMapperProfile.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using AutoMapper;
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using Volo.Abp.ObjectExtending;
namespace CMS.Plugin.WareCmsUtilityApi.Application.MapperProfiles;
/// <summary>
/// AutoMapper配置
/// </summary>
/// <seealso cref="AutoMapper.Profile" />
public class SampleAutoMapperProfile : Profile
{
    /// <summary>
    /// Initializes a new instance of the <see cref="SampleAutoMapperProfile"/> class.
    /// </summary>
    public SampleAutoMapperProfile()
    {
        /* You can configure your AutoMapper mapping configuration here.
         * Alternatively, you can split your mapping configurations
         * into multiple profile classes for a better organization. */
        CreateMap<Sample, SampleDto>(MemberList.None).MapExtraProperties(MappingPropertyDefinitionChecks.None);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/Properties/AssemblyInfo.cs
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/CMS.Plugin.WareCmsUtilityApi.Domain.Shared.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.props" />
    <Import Project="../../configureawait.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
        <GenerateDocumentationFile>True</GenerateDocumentationFile>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="KissUtil" Version="1.0.1" />
        <PackageReference Include="Volo.Abp.Localization" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.Validation" Version="$(ABPPackageVersion)" />
    </ItemGroup>
    <ItemGroup>
        <EmbeddedResource Include="Localization\WareCmsUtilityApi\*.json" />
        <Content Remove="Localization\WareCmsUtilityApi\*.json" />
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
        <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="6.0.20" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/CMSPluginDomainErrorCodes.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Shared;
/// <summary>
/// é”™è¯¯ç¼–码定义
/// </summary>
public static class CMSPluginDomainErrorCodes
{
    /// <summary>
    /// The prefix
    /// </summary>
    private const string Prefix = "CMS.Plugin.WareCmsUtilityApi:";
    /* You can add your business exception error codes here, as constants */
    public const string NameAlreadyExists = Prefix + nameof(NameAlreadyExists);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/CMSPluginDomainSharedModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.Validation;
using Volo.Abp.Validation.Localization;
using Volo.Abp.VirtualFileSystem;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Shared;
/// <summary>
/// é¢†åŸŸå…±äº«æ¨¡å—
/// </summary>
[DependsOn(typeof(AbpLocalizationModule),
    typeof(AbpValidationModule))]
public class CMSPluginDomainSharedModule : AbpModule
{
    /// <inheritdoc />
    public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        CMSPluginModuleExtensionConfigurator.Configure();
    }
    /// <inheritdoc />
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        Configure<AbpVirtualFileSystemOptions>(options =>
        {
            options.FileSets.AddEmbedded<CMSPluginDomainSharedModule>();
        });
        Configure<AbpLocalizationOptions>(options =>
        {
            options.Resources
                .Add<WareCmsUtilityApiResource>("en")
                .AddBaseTypes(typeof(AbpValidationResource))
                .AddVirtualJson("/Localization/WareCmsUtilityApi");
            options.DefaultResourceType = typeof(WareCmsUtilityApiResource);
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/CMSPluginModuleExtensionConfigurator.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
using Volo.Abp.Threading;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Shared;
/// <summary>
/// æ¨¡å—扩展配置器
/// </summary>
public static class CMSPluginModuleExtensionConfigurator
{
    private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
    /// <summary>
    /// Configures this instance.
    /// </summary>
    public static void Configure()
    {
        OneTimeRunner.Run(() =>
        {
            ConfigureExistingProperties();
            ConfigureExtraProperties();
        });
    }
    /// <summary>
    /// Configures the existing properties.
    /// </summary>
    private static void ConfigureExistingProperties()
    {
        /* You can change max lengths for properties of the
         * entities defined in the modules used by your application.
         *
         * Example: Change user and role name max lengths
           IdentityUserConsts.MaxNameLength = 99;
           IdentityRoleConsts.MaxNameLength = 99;
         * Notice: It is not suggested to change property lengths
         * unless you really need it. Go with the standard values wherever possible.
         *
         * If you are using EF Core, you will need to run the add-migration command after your changes.
         */
    }
    /// <summary>
    /// Configures the extra properties.
    /// </summary>
    private static void ConfigureExtraProperties()
    {
        /* You can configure extra properties for the
         * entities defined in the modules used by your application.
         *
         * This class can be used to define these extra properties
         * with a high level, easy to use API.
         *
         * Example: Add a new property to the user entity of the identity module
           ObjectExtensionManager.Instance.Modules()
              .ConfigureIdentity(identity =>
              {
                  identity.ConfigureUser(user =>
                  {
                      user.AddOrUpdateProperty<string>( //property type: string
                          "SocialSecurityNumber", //property name
                          property =>
                          {
                              //validation rules
                              property.Attributes.Add(new RequiredAttribute());
                              property.Attributes.Add(new StringLengthAttribute(64) {MinimumLength = 4});
                              property.Configuration[IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit] = true;
                              //...other configurations for this property
                          }
                      );
                  });
              });
         * See the documentation for more:
         * https://docs.abp.io/en/abp/latest/Module-Entity-Extensions
         */
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Enums/WareCmsUtilityApiStatus.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
using System.ComponentModel;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Enums
{
    /// <summary>
    /// WareCmsUtilityApi状态
    /// </summary>
    public enum WareCmsUtilityApiStatus : byte
    {
        /// <summary>
        /// æœªæ‰§è¡Œ
        /// </summary>
        [Description("未执行")]
        Initial = 0,
        /// <summary>
        /// æ‰§è¡Œä¸­
        /// </summary>
        [Description("执行中")]
        Excuting = 1,
        /// <summary>
        /// å·²å®Œæˆ
        /// </summary>
        [Description("已完成")]
        Completed = 4,
        /// <summary>
        /// å·²å¼ºåˆ¶å®Œæˆ
        /// </summary>
        [Description("已完成")]
        Finished = 5,
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Localization/WareCmsUtilityApi/en.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
  "culture": "en",
    "texts": {
        "DisplayName:SCMS.AppSettings.WareCmsUtilityApi.PluginState": "WareCmsUtilityApi plugin state",
        "CMS.Plugin.WareCmsUtilityApi:NameAlreadyExists": "The '{0}' name already exists, please re-enter it !"
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Localization/WareCmsUtilityApi/zh-Hans.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
    "culture": "zh-Hans",
    "texts": {
        "DisplayName:SCMS.AppSettings.WareCmsUtilityApi.PluginState": "WareCmsUtilityApi æ’件状态",
        "CMS.Plugin.WareCmsUtilityApi:NameAlreadyExists": "该'{0}'名称已存在,请重新输入!"
    }
  }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Localization/WareCmsUtilityApiResource.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using Volo.Abp.Localization;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Localization;
/// <summary>
/// WareCmsUtilityApi本地化资源
/// </summary>
[LocalizationResourceName("WareCmsUtilityApi")]
public class WareCmsUtilityApiResource
{
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Samples/SampleConsts.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Samples;
/// <summary>
/// Sample常量定义
/// </summary>
public static class SampleConsts
{
    public const string CloneTag = "_副本";
    public static int MaxCodeLength { get; set; } = 64;
    public static int MaxNameLength { get; set; } = 64;
    public static int MaxRemarkLength { get; set; } = 256;
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain.Shared/Samples/SampleEto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Samples;
/// <summary>
/// Sample事件参数对象
/// </summary>
[Serializable]
public class SampleEto
{
    /// <summary>
    /// Initializes a new instance of the <see cref="SampleEto"/> class.
    /// </summary>
    /// <param name="name">The name.</param>
    public SampleEto(string name)
    {
        Name = name;
    }
    /// <summary>
    /// åç§°
    /// </summary>
    public string Name { get; }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/CMS.Plugin.WareCmsUtilityApi.Domain.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.props" />
    <Import Project="../../configureawait.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Volo.Abp.Ddd.Domain" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.Settings" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.Caching" Version="$(ABPPackageVersion)" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Abstractions\CMS.Plugin.WareCmsUtilityApi.Abstractions.csproj" />
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Domain.Shared\CMS.Plugin.WareCmsUtilityApi.Domain.Shared.csproj" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/CMSPluginDbProperties.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
namespace CMS.Plugin.WareCmsUtilityApi.Domain;
/// <summary>
/// æ•°æ®åº“属性定义
/// </summary>
public static class CMSPluginDbProperties
{
    /// <summary>
    /// Gets or sets the database table prefix.
    /// </summary>
    public static string DbTablePrefix { get; set; } = "SCMS";
    /// <summary>
    /// Gets or sets the database schema.
    /// </summary>
    public static string DbSchema { get; set; }
    /// <summary>
    /// The connection string name
    /// </summary>
    public const string ConnectionStringName = "WareCmsUtilityApi";
    /// <summary>
    /// The migrations history table
    /// </summary>
    public const string MigrationsHistoryTable = "__EFMigrationsHistoryForWareCmsUtilityApi";
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/CMSPluginDomainModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared;
using Volo.Abp.Caching;
using Volo.Abp.Domain;
using Volo.Abp.Modularity;
using Volo.Abp.Settings;
namespace CMS.Plugin.WareCmsUtilityApi.Domain;
/// <summary>
/// é¢†åŸŸæ¨¡å—
/// </summary>
[DependsOn(
    typeof(CMSPluginDomainSharedModule),
    typeof(AbpSettingsModule),
    typeof(AbpDddDomainModule),
    typeof(AbpCachingModule)
)]
public class CMSPluginDomainModule : AbpModule
{
    /// <inheritdoc />
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Data/CMSPluginDbMigrationService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,211 @@
using Microsoft.Extensions.Logging;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Data;
/// <summary>
/// æ•°æ®åº“迁移服务
/// </summary>
public class CMSPluginDbMigrationService : ITransientDependency
{
    private readonly IDataSeeder _dataSeeder;
    private readonly IEnumerable<ICMSPluginDbSchemaMigrator> _dbSchemaMigrators;
    private readonly ILogger<CMSPluginDbMigrationService> _logger;
    /// <summary>
    /// Initializes a new instance of the <see cref="CMSPluginDbMigrationService"/> class.
    /// </summary>
    /// <param name="dataSeeder">The data seeder.</param>
    /// <param name="dbSchemaMigrators">The database schema migrators.</param>
    /// <param name="logger">The logger.</param>
    public CMSPluginDbMigrationService(IDataSeeder dataSeeder,
        IEnumerable<ICMSPluginDbSchemaMigrator> dbSchemaMigrators, ILogger<CMSPluginDbMigrationService> logger)
    {
        _dataSeeder = dataSeeder;
        _dbSchemaMigrators = dbSchemaMigrators;
        _logger = logger;
    }
    /// <summary>
    /// Migrates the asynchronous.
    /// </summary>
    public async Task MigrateAsync()
    {
        var initialMigrationAdded = AddInitialMigrationIfNotExist();
        if (initialMigrationAdded)
        {
            return;
        }
        _logger.LogDebug("Started database migrations...");
        await MigrateDatabaseSchemaAsync();
        await SeedDataAsync();
        _logger.LogDebug($"Successfully completed host database migrations.");
        _logger.LogDebug("You can safely end this process...");
    }
    /// <summary>
    /// Migrates the database schema asynchronous.
    /// </summary>
    private async Task MigrateDatabaseSchemaAsync()
    {
        _logger.LogDebug($"Migrating schema for database...");
        foreach (var migrator in _dbSchemaMigrators)
        {
            await migrator.MigrateAsync();
        }
    }
    /// <summary>
    /// Seeds the data asynchronous.
    /// </summary>
    private async Task SeedDataAsync()
    {
        _logger.LogDebug($"Executing database seed...");
        await _dataSeeder.SeedAsync(new DataSeedContext().WithProperty(CMSPluginDbProperties.ConnectionStringName, CMSPluginDbProperties.ConnectionStringName));
    }
    /// <summary>
    /// Adds the initial migration if not exist.
    /// </summary>
    /// <returns></returns>
    private bool AddInitialMigrationIfNotExist()
    {
        try
        {
            if (!DbMigrationsProjectExists())
            {
                return false;
            }
        }
        catch (Exception)
        {
            return false;
        }
        try
        {
            if (!MigrationsFolderExists())
            {
                AddInitialMigration();
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception e)
        {
            _logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message);
            return false;
        }
    }
    /// <summary>
    /// Databases the migrations project exists.
    /// </summary>
    /// <returns></returns>
    private bool DbMigrationsProjectExists()
    {
        var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath();
        return dbMigrationsProjectFolder != null;
    }
    /// <summary>
    /// Migrationses the folder exists.
    /// </summary>
    /// <returns></returns>
    private bool MigrationsFolderExists()
    {
        var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath();
        return Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "Migrations"));
    }
    /// <summary>
    /// Adds the initial migration.
    /// </summary>
    /// <exception cref="System.Exception">Couldn't run ABP CLI...</exception>
    private void AddInitialMigration()
    {
        _logger.LogDebug("Creating initial migration...");
        string argumentPrefix;
        string fileName;
        if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
        {
            argumentPrefix = "-c";
            fileName = "/bin/bash";
        }
        else
        {
            argumentPrefix = "/C";
            fileName = "cmd.exe";
        }
        var procStartInfo = new ProcessStartInfo(fileName,
            $"{argumentPrefix} \"abp create-migration-and-run-migrator \"{GetEntityFrameworkCoreProjectFolderPath()}\"\""
        );
        try
        {
            Process.Start(procStartInfo);
        }
        catch (Exception)
        {
            throw new Exception("Couldn't run ABP CLI...");
        }
    }
    /// <summary>
    /// Gets the entity framework core project folder path.
    /// </summary>
    /// <returns></returns>
    /// <exception cref="System.Exception">Solution folder not found!</exception>
    private string GetEntityFrameworkCoreProjectFolderPath()
    {
        var slnDirectoryPath = GetSolutionDirectoryPath();
        if (slnDirectoryPath == null)
        {
            throw new Exception("Solution folder not found!");
        }
        var srcDirectoryPath = Path.Combine(slnDirectoryPath, "src");
        return Directory.GetDirectories(srcDirectoryPath)
            .FirstOrDefault(d => d.EndsWith(".EntityFrameworkCore"));
    }
    /// <summary>
    /// Gets the solution directory path.
    /// </summary>
    /// <returns></returns>
    private string GetSolutionDirectoryPath()
    {
        var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory());
        while (Directory.GetParent(currentDirectory.FullName) != null)
        {
            currentDirectory = Directory.GetParent(currentDirectory.FullName);
            if (Directory.GetFiles(currentDirectory.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null)
            {
                return currentDirectory.FullName;
            }
        }
        return null;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Data/ICMSPluginDapperRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
using System.Data;
using Volo.Abp.DependencyInjection;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Data;
/// <summary>
/// Dapper仓储
/// </summary>
public interface ICMSPluginDapperRepository : ITransientDependency
{
    /// <summary>
    /// Gets the database connection asynchronous.
    /// </summary>
    /// <returns></returns>
    Task<IDbConnection> GetDbConnectionAsync();
    /// <summary>
    /// Gets the database transaction asynchronous.
    /// </summary>
    /// <returns></returns>
    Task<IDbTransaction> GetDbTransactionAsync();
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Data/ICMSPluginDbSchemaMigrator.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Data;
/// <summary>
/// æ•°æ®åº“架构迁移器
/// </summary>
public interface ICMSPluginDbSchemaMigrator
{
    /// <summary>
    /// Migrates the asynchronous.
    /// </summary>
    Task MigrateAsync();
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Data/NullCMSPluginDbSchemaMigrator.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
using Volo.Abp.DependencyInjection;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Data;
/// <summary>
/// This is used if database provider does't define
///  ICMSDbSchemaMigrator implementation.
/// </summary>
public class NullCMSPluginDbSchemaMigrator : ICMSPluginDbSchemaMigrator, ITransientDependency
{
    /// <inheritdoc />
    public Task MigrateAsync()
    {
        return Task.CompletedTask;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/EventHandlers/SampleEventHandler.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Samples;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus.Distributed;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.EventHandlers;
/// <summary>
/// Sample事件处理程序
/// </summary>
public class SampleEventHandler : IDistributedEventHandler<SampleEto>, ITransientDependency
{
    /// <inheritdoc />
    public Task HandleEventAsync(SampleEto eventData)
    {
        return Task.CompletedTask;
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Properties/AssemblyInfo.cs
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Samples/ISampleRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Specifications;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
/// <summary>
/// Sample仓储
/// </summary>
public interface ISampleRepository : IBasicRepository<Sample, Guid>
{
    /// <summary>
    /// Finds the by name asynchronous.
    /// </summary>
    /// <param name="name">The name.</param>
    /// <param name="cancellationToken">The cancellation token.</param>
    /// <returns></returns>
    Task<Sample> FindByNameAsync(string name, CancellationToken cancellationToken = default);
    /// <summary>
    /// Names the exist asynchronous.
    /// </summary>
    /// <param name="name">The name.</param>
    /// <param name="id">The identifier.</param>
    /// <returns></returns>
    Task<bool> NameExistAsync(string name, Guid? id = null);
    /// <summary>
    /// Gets the maximum sort asynchronous.
    /// </summary>
    /// <returns></returns>
    Task<int> GetMaxSortAsync();
    /// <summary>
    /// Gets the list asynchronous.
    /// </summary>
    /// <param name="sorting">The sorting.</param>
    /// <param name="maxResultCount">The maximum result count.</param>
    /// <param name="skipCount">The skip count.</param>
    /// <param name="filter">The filter.</param>
    /// <param name="specification">The specification.</param>
    /// <param name="includeDetails">if set to <c>true</c> [include details].</param>
    /// <param name="cancellationToken">The cancellation token.</param>
    /// <returns></returns>
    Task<List<Sample>> GetListAsync(string sorting = null, int maxResultCount = int.MaxValue,  int skipCount = 0, string filter = null, Specification<Sample> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default);
    /// <summary>
    /// Gets the count asynchronous.
    /// </summary>
    /// <param name="filter">The filter.</param>
    /// <param name="specification">The specification.</param>
    /// <param name="cancellationToken">The cancellation token.</param>
    /// <returns></returns>
    Task<long> GetCountAsync(string filter = null, Specification<Sample> specification = null, CancellationToken cancellationToken = default);
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Samples/Sample.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Samples;
using Volo.Abp;
using Volo.Abp.Domain.Entities.Auditing;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Samples
{
    /// <summary>
    /// Sample
    /// </summary>
    public class Sample : FullAuditedAggregateRoot<Guid>
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="Sample"/> class.
        /// </summary>
        protected Sample()
        {
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="Sample"/> class.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="code">The code.</param>
        /// <param name="name">The name.</param>
        /// <param name="sort">The sort.</param>
        /// <param name="remark">The remark.</param>
        public Sample(Guid id, string code, string name, int sort = 0, string remark = null) : base(id)
        {
            Code = Check.NotNullOrWhiteSpace(code, "编号", SampleConsts.MaxCodeLength);
            Name = Check.NotNullOrWhiteSpace(name, "名称", SampleConsts.MaxNameLength);
            Sort = sort;
            Remark = Check.Length(remark, "备注", SampleConsts.MaxRemarkLength);
        }
        /// <summary>
        /// ç¼–号
        /// </summary>
        public virtual string Code { get; protected set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public virtual string Name { get; protected set; }
        /// <summary>
        /// æŽ’序
        /// </summary>
        public virtual int Sort { get; protected set; }
        /// <summary>
        /// å¤‡æ³¨
        /// </summary>
        public virtual string Remark { get; protected set; }
        /// <summary>
        /// æ˜¯å¦ç¦ç”¨
        /// </summary>
        public virtual bool? IsDisabled { get; protected set; }
        /// <summary>
        /// Updates the specified code.
        /// </summary>
        /// <param name="code">The code.</param>
        /// <param name="name">The name.</param>
        /// <param name="remark">The remark.</param>
        public virtual void Update(string code, string name, string remark = null, bool? isDisabled = null)
        {
            Code = Check.NotNullOrWhiteSpace(code, "编号", SampleConsts.MaxCodeLength);
            Name = Check.NotNullOrWhiteSpace(name, "名称", SampleConsts.MaxNameLength);
            Remark = Check.Length(remark, "备注", SampleConsts.MaxRemarkLength);
            IsDisabled = isDisabled ?? IsDisabled;
        }
        /// <summary>
        /// Adjusts the sort.
        /// </summary>
        /// <param name="sort">The sort.</param>
        public void AdjustSort(int sort)
        {
            Sort = sort;
        }
        /// <summary>
        /// Clones the specified create.
        /// </summary>
        /// <param name="create">The create.</param>
        /// <param name="name">The name.</param>
        /// <param name="i">The i.</param>
        /// <returns></returns>
        public Sample Clone(Guid create, string name, int i)
        {
            return new Sample(create, Code, name, i, Remark);
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Samples/SampleDataSeedContributor.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Samples
{
    /// <summary>
    /// Sample种子数据提供程序
    /// </summary>
    public class SampleDataSeedContributor : IDataSeedContributor, ITransientDependency
    {
        private readonly IUnitOfWorkManager _unitOfWorkManager;
        private readonly ISampleRepository _sampleRepository;
        private readonly IGuidGenerator _guidGenerator;
        /// <summary>
        /// Initializes a new instance of the <see cref="SampleDataSeedContributor"/> class.
        /// </summary>
        /// <param name="unitOfWorkManager">The unit of work manager.</param>
        /// <param name="guidGenerator">The unique identifier generator.</param>
        /// <param name="sampleRepository">The work section repository.</param>
        public SampleDataSeedContributor(IUnitOfWorkManager unitOfWorkManager,  IGuidGenerator guidGenerator, ISampleRepository sampleRepository)
        {
            _unitOfWorkManager = unitOfWorkManager;
            _sampleRepository = sampleRepository;
            _guidGenerator = guidGenerator;
        }
        /// <inheritdoc />
        public async Task SeedAsync(DataSeedContext context)
        {
            if (context.Properties.ContainsKey(CMSPluginDbProperties.ConnectionStringName) && context.Properties[CMSPluginDbProperties.ConnectionStringName]?.ToString() == CMSPluginDbProperties.ConnectionStringName)
            {
                try
                {
                    //using var unitofWork = _unitOfWorkManager.Begin(requiresNew: true);
                    //await unitofWork.SaveChangesAsync();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            if (context.Properties.ContainsKey("SeedTestData") && context.Properties["SeedTestData"]?.ToString() == "SeedTestData")
            {
                try
                {
                    await SeedSampleDataAsync();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
        /// <summary>
        /// Seeds the work section data asynchronous.
        /// </summary>
        private async Task SeedSampleDataAsync()
        {
            using var unitofWork = _unitOfWorkManager.Begin(requiresNew: true);
            if (await _sampleRepository.GetCountAsync() == 0)
            {
                var Samples = new List<Sample>();
                for (int i = 1; i <= 80; i++)
                {
                    var sample = new Sample(_guidGenerator.Create(), $"Sample_Code{i}", $"Sample_Name{i}", i, $"Sample_Remark{i}");
                    Samples.Add(sample);
                }
                await _sampleRepository.InsertManyAsync(Samples);
                await unitofWork.SaveChangesAsync();
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Samples/SampleSpecification.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
using System.Linq.Expressions;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Samples
{
    /// <summary>
    /// Sample规约
    /// </summary>
    public class SampleSpecification : Volo.Abp.Specifications.Specification<Sample>
    {
        private readonly string _name;
        /// <summary>
        /// Initializes a new instance of the <see cref="SampleSpecification"/> class.
        /// </summary>
        public SampleSpecification()
        {
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SampleSpecification"/> class.
        /// </summary>
        /// <param name="name">The name.</param>
        public SampleSpecification(string name = null)
        {
            _name = name;
        }
        /// <inheritdoc />
        public override Expression<Func<Sample, bool>> ToExpression()
        {
            Expression<Func<Sample, bool>> expression = c => 1 == 1;
            if (_name != null)
            {
                expression = expression.And(c => c.Name == _name);
            }
            return expression;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Domain/Settings/CMSPluginSettingDefinitionProvider.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
using CMS.Plugin.WareCmsUtilityApi.Abstractions;
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Settings;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Settings;
/// <summary>
/// è®¾ç½®å®šä¹‰æä¾›ç¨‹åº
/// </summary>
public class CMSPluginSettingDefinitionProvider : SettingDefinitionProvider
{
    public override void Define(ISettingDefinitionContext context)
    {
        context.Add(new SettingDefinition(CMSPluginWareCmsUtilityApiSettings.PluginState, "1", L($"DisplayName:{CMSPluginWareCmsUtilityApiSettings.PluginState}"), isInherited: true));
    }
    /// <summary>
    /// ls the specified name.
    /// </summary>
    /// <param name="name">The name.</param>
    /// <returns></returns>
    private static LocalizableString L(string name)
    {
        return LocalizableString.Create<WareCmsUtilityApiResource>(name);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.props" />
    <Import Project="../../configureawait.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Volo.Abp.Dapper" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="$(ABPPackageVersion)" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Domain\CMS.Plugin.WareCmsUtilityApi.Domain.csproj" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMSPluginDapperRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Data;
using Volo.Abp.Domain.Repositories.Dapper;
using Volo.Abp.EntityFrameworkCore;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
/// <inheritdoc />
public class CMSPluginDapperRepository : DapperRepository<ICMSPluginDbContext>, ICMSPluginDapperRepository
{
    /// <summary>
    /// Initializes a new instance of the <see cref="CMSPluginDapperRepository"/> class.
    /// </summary>
    /// <param name="dbContextProvider">The database context provider.</param>
    public CMSPluginDapperRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
        : base(dbContextProvider)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMSPluginDbSchemaMigrator.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp.DependencyInjection;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
/// <inheritdoc />
public class CMSPluginDbSchemaMigrator  : ICMSPluginDbSchemaMigrator, ITransientDependency
{
    private readonly IServiceProvider _serviceProvider;
    private readonly ILogger<CMSPluginDbSchemaMigrator> _logger;
    /// <summary>
    /// Initializes a new instance of the <see cref="CMSPluginDbSchemaMigrator"/> class.
    /// </summary>
    /// <param name="serviceProvider">The service provider.</param>
    public CMSPluginDbSchemaMigrator(IServiceProvider serviceProvider, ILogger<CMSPluginDbSchemaMigrator> logger)
    {
        _serviceProvider = serviceProvider;
        _logger = logger;
    }
    /// <inheritdoc />
    public async Task MigrateAsync()
    {
        /* We intentionally resolving the CMSDbContext
         * from IServiceProvider (instead of directly injecting it)
         * to properly get the connection string of the current tenant in the
         * current scope.
         */
        var database = _serviceProvider.GetRequiredService<ICMSPluginDbContext>().Database;
        _logger.LogInformation($"Start database {database.GetDbConnection().Database} migrate");
        await database.MigrateAsync();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMSPluginEfCoreEntityExtensionMappings.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared;
using Volo.Abp.Threading;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
/// <summary>
/// EfCore实体扩展
/// </summary>
public static class CMSPluginEfCoreEntityExtensionMappings
{
    private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();
    /// <summary>
    /// Configures this instance.
    /// </summary>
    public static void Configure()
    {
        CMSPluginModuleExtensionConfigurator.Configure();
        OneTimeRunner.Run(() =>
        {
            /* You can configure extra properties for the
             * entities defined in the modules used by your application.
             *
             * This class can be used to map these extra properties to table fields in the database.
             *
             * USE THIS CLASS ONLY TO CONFIGURE EF CORE RELATED MAPPING.
             * USE CMSModuleExtensionConfigurator CLASS (in the Domain.Shared project)
             * FOR A HIGH LEVEL API TO DEFINE EXTRA PROPERTIES TO ENTITIES OF THE USED MODULES
             *
             * Example: Map a property to a table field:
                 ObjectExtensionManager.Instance
                     .MapEfCoreProperty<Sample, string>(
                         "MyProperty",
                         (entityBuilder, propertyBuilder) =>
                         {
                             propertyBuilder.HasMaxLength(128);
                         }
                     );
             * See the documentation for more:
             * https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Extending-Entities
             */
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/CMSPluginEntityFrameworkCoreModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
/// <summary>
/// EntityFrameworkCore模块
/// </summary>
[DependsOn(
    typeof(CMSPluginDomainModule),
    typeof(AbpEntityFrameworkCoreModule)
    )]
public class CMSPluginEntityFrameworkCoreModule : AbpModule
{
    /// <inheritdoc />
    public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        CMSPluginEfCoreEntityExtensionMappings.Configure();
    }
    /// <inheritdoc />
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/Extensions/CMSPluginEfCoreExtensions.Sample.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using CMS.Plugin.WareCmsUtilityApi.Domain.Shared.Samples;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.EntityFrameworkCore.Modeling;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Extensions;
/// <summary>
/// EfCore扩展
/// </summary>
public  static partial class CMSPluginEfCoreExtensions
{
    /// <summary>
    /// Includes the details.
    /// </summary>
    /// <param name="queryable">The queryable.</param>
    /// <param name="include">if set to <c>true</c> [include].</param>
    /// <returns></returns>
    public static IQueryable<Sample> IncludeDetails(this IQueryable<Sample> queryable, bool include = true)
    {
        if (!include)
        {
            return queryable;
        }
        return queryable;
    }
    /// <summary>
    /// Configures the sample.
    /// </summary>
    /// <param name="builder">The builder.</param>
    public static void ConfigureSample(this ModelBuilder builder)
    {
        Check.NotNull(builder, nameof(builder));
        builder.Entity<Sample>(b =>
        {
            //Configure table & schema name
            b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_Samples").ToLower(), CMSPluginDbProperties.DbSchema).HasComment("Sample");
            b.ConfigureByConvention();
            //Properties
            b.Property(x => x.Code).HasMaxLength(SampleConsts.MaxCodeLength).IsRequired().HasComment("编码");
            b.Property(x => x.Name).HasMaxLength(SampleConsts.MaxNameLength).IsRequired().HasComment("名称");
            b.Property(x => x.Sort).HasComment("排序");
            b.Property(x => x.IsDisabled).IsRequired(false).HasComment("是否禁用");
            b.Property(x => x.Remark).HasMaxLength(SampleConsts.MaxRemarkLength).IsRequired(false).HasComment("备注");
            b.HasIndex(u => u.Name);
            b.ApplyObjectExtensionMappings();
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/ICMSPluginDbContext.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore
{
    /// <summary>
    /// æ•°æ®åº“上下文
    /// </summary>
    [ConnectionStringName(CMSPluginDbProperties.ConnectionStringName)]
    public interface ICMSPluginDbContext : IEfCoreDbContext
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/Properties/AssemblyInfo.cs
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/Repositories/EfCoreSampleRepository.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
using System.Linq.Dynamic.Core;
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Extensions;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Specifications;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Repositories;
/// <inheritdoc />
public class EfCoreSampleRepository : EfCoreRepository<ICMSPluginDbContext, Sample, Guid>, ISampleRepository
{
    /// <summary>
    /// Initializes a new instance of the <see cref="EfCoreSampleRepository"/> class.
    /// </summary>
    /// <param name="dbContextProvider">The database context provider.</param>
    public EfCoreSampleRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
        : base(dbContextProvider)
    {
    }
    /// <inheritdoc />
    public virtual async Task<Sample> FindByNameAsync(string name, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
            .IncludeDetails()
            .OrderBy(t => t.Sort)
            .FirstOrDefaultAsync(t => t.Name == name, GetCancellationToken(cancellationToken));
    }
    /// <inheritdoc />
    public async Task<bool> NameExistAsync(string name, Guid? id = null)
    {
        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).AnyAsync(x => x.Name == name);
    }
    /// <inheritdoc />
    public async Task<int> GetMaxSortAsync()
    {
        var hasAny = await (await GetQueryableAsync()).AnyAsync();
        if (!hasAny)
        {
            return 1;
        }
        var sort = await (await GetQueryableAsync()).MaxAsync(x => x.Sort);
        return sort + 1;
    }
    /// <inheritdoc />
    public async Task<List<Sample>> GetListAsync(string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, string filter = null, Specification<Sample> specification = null, bool includeDetails = false, CancellationToken cancellationToken = default)
    {
        specification ??= new SampleSpecification();
        return await (await GetDbSetAsync())
            .IncludeDetails(includeDetails)
            .Where(specification.ToExpression())
            .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.Name.Contains(filter))
            .OrderBy(sorting.IsNullOrEmpty() ? nameof(Sample.Sort) : sorting)
            .PageBy(skipCount, maxResultCount)
            .ToListAsync(GetCancellationToken(cancellationToken));
    }
    /// <inheritdoc />
    public async Task<long> GetCountAsync(string filter = null, Specification<Sample> specification = null, CancellationToken cancellationToken = default)
    {
        specification ??= new SampleSpecification();
        return await (await GetQueryableAsync())
            .Where(specification.ToExpression())
            .WhereIf(!filter.IsNullOrWhiteSpace(), u => u.Name.Contains(filter))
            .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
    }
    /// <inheritdoc />
    public override async Task<IQueryable<Sample>> WithDetailsAsync()
    {
        return (await GetQueryableAsync()).IncludeDetails();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/appsettings.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
{
    "ConnectionStrings": {
        "Default": "Server=127.0.0.1;Database=CMS.Plugin.WareCmsUtilityApi;User ID=root;Password=123456"
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/CMS.Plugin.WareCmsUtilityApi.MySQL.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
  <Import Project="../../common.props" />
  <Import Project="../../configureawait.props" />
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
      <PackageReference Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="$(ABPPackageVersion)" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.5">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
      <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Migrations\" />
  </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/CMSPluginDbContext.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Extensions;
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
namespace CMS.Plugin.WareCmsUtilityApi.MySQL;
/// <summary>
/// æ•°æ®åº“上下文
/// </summary>
[ConnectionStringName(CMSPluginDbProperties.ConnectionStringName)]
public class CMSPluginDbContext : AbpDbContext<CMSPluginDbContext>, ICMSPluginDbContext
{
    /* Add DbSet properties for your Aggregate Roots / Entities here. */
    /// <summary>
    /// Initializes a new instance of the <see cref="CMSPluginDbContext"/> class.
    /// </summary>
    /// <param name="options">The options.</param>
    public CMSPluginDbContext(DbContextOptions<CMSPluginDbContext> options)
        : base(options)
    {
    }
    /// <inheritdoc />
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        /* Include modules to your migration db context */
        builder.ConfigureSample();
        /* Configure your own tables/entities inside here */
        //builder.Entity<YourEntity>(b =>
        //{
        //    b.ToTable(CMSPluginDbProperties.DbTablePrefix + "YourEntities", CMSPluginDbProperties.DbSchema);
        //    b.ConfigureByConvention(); //auto configure for the base class props
        //    //...
        //});
        builder.TryConfigureObjectExtensions<CMSPluginDbContext>();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/CMSPluginDbContextFactory.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace CMS.Plugin.WareCmsUtilityApi.MySQL;
/// <summary>
/// This class is needed for EF Core console commands
///  (like Add-Migration and Update-Database commands)
/// </summary>
public class CMSPluginDbContextFactory : IDesignTimeDbContextFactory<CMSPluginDbContext>
{
    /// <summary>
    /// Creates a new instance of a derived context.
    /// </summary>
    /// <param name="args">Arguments provided by the design-time service.</param>
    public CMSPluginDbContext CreateDbContext(string[] args)
    {
        CMSPluginEfCoreEntityExtensionMappings.Configure();
        var configuration = BuildConfiguration();
        var builder = new DbContextOptionsBuilder<CMSPluginDbContext>()
                .UseMySql(configuration.GetConnectionString("Default"), MySqlServerVersion.LatestSupportedServerVersion,  x => x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema));
        return new CMSPluginDbContext(builder.Options);
    }
    /// <summary>
    /// Builds the configuration.
    /// </summary>
    /// <returns></returns>
    private static IConfigurationRoot BuildConfiguration()
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/"))
            .AddJsonFile("appsettings.json", optional: false);
        return builder.Build();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/CMSPluginMySQLModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.MySQL;
/// <summary>
/// EntityFrameworkCore模块
/// </summary>
[DependsOn(typeof(CMSPluginEntityFrameworkCoreModule))]
public class CMSPluginMySQLModule : AbpModule
{
    /// <inheritdoc />
    public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        CMSPluginEfCoreEntityExtensionMappings.Configure();
    }
    /// <inheritdoc />
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        context.Services.AddAbpDbContext<CMSPluginDbContext>(options =>
        {
            /* Remove "includeAllEntities: true" to create
             * default repositories only for aggregate roots */
            //options.AddDefaultRepositories(includeAllEntities: true);
        });
        Configure<AbpDbContextOptions>(options =>
        {
            /* The main point to change your DBMS.
             * See also CMSMigrationsDbContextFactory for EF Core tooling. */
            options.UseMySQL(x =>
            {
                x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema);
                //x.EnableRetryOnFailure();
            });
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/Properties/AssemblyInfo.cs
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/Scripts/UpdateDB.bat
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/Scripts/UpdateMigrations.bat
copy from "Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.PostgreSql/Scripts/UpdateMigrations.bat" copy to "Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.MySQL/Scripts/UpdateMigrations.bat"
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/CMS.Plugin.WareCmsUtilityApi.PostgreSql.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
  <Import Project="../../common.props" />
  <Import Project="../../configureawait.props" />
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
      <PackageReference Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="$(ABPPackageVersion)" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.5">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
      <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Migrations\" />
  </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/CMSPluginDbContext.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Extensions;
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
namespace CMS.Plugin.WareCmsUtilityApi.PostgreSql;
/// <summary>
/// æ•°æ®åº“上下文
/// </summary>
[ConnectionStringName(CMSPluginDbProperties.ConnectionStringName)]
public class CMSPluginDbContext : AbpDbContext<CMSPluginDbContext>, ICMSPluginDbContext
{
    /* Add DbSet properties for your Aggregate Roots / Entities here. */
    /// <summary>
    /// Initializes a new instance of the <see cref="CMSPluginDbContext"/> class.
    /// </summary>
    /// <param name="options">The options.</param>
    public CMSPluginDbContext(DbContextOptions<CMSPluginDbContext> options)
        : base(options)
    {
    }
    /// <inheritdoc />
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        /* Include modules to your migration db context */
        builder.ConfigureSample();
        /* Configure your own tables/entities inside here */
        //builder.Entity<YourEntity>(b =>
        //{
        //    b.ToTable(CMSPluginDbProperties.DbTablePrefix + "YourEntities", CMSPluginDbProperties.DbSchema);
        //    b.ConfigureByConvention(); //auto configure for the base class props
        //    //...
        //});
        builder.TryConfigureObjectExtensions<CMSPluginDbContext>();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/CMSPluginDbContextFactory.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace CMS.Plugin.WareCmsUtilityApi.PostgreSql;
/// <summary>
/// This class is needed for EF Core console commands
///  (like Add-Migration and Update-Database commands)
/// </summary>
public class CMSPluginDbContextFactory : IDesignTimeDbContextFactory<CMSPluginDbContext>
{
    /// <summary>
    /// Creates a new instance of a derived context.
    /// </summary>
    /// <param name="args">Arguments provided by the design-time service.</param>
    public CMSPluginDbContext CreateDbContext(string[] args)
    {
        CMSPluginEfCoreEntityExtensionMappings.Configure();
        var configuration = BuildConfiguration();
        var builder = new DbContextOptionsBuilder<CMSPluginDbContext>()
                .UseNpgsql(configuration.GetConnectionString("Default"),  x => x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema));
        return new CMSPluginDbContext(builder.Options);
    }
    /// <summary>
    /// Builds the configuration.
    /// </summary>
    /// <returns></returns>
    private static IConfigurationRoot BuildConfiguration()
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/"))
            .AddJsonFile("appsettings.json", optional: false);
        return builder.Build();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/CMSPluginPostgreSqlModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.PostgreSql;
/// <summary>
/// EntityFrameworkCore模块
/// </summary>
[DependsOn(typeof(CMSPluginEntityFrameworkCoreModule))]
public class CMSPluginPostgreSqlModule : AbpModule
{
    /// <inheritdoc />
    public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        CMSPluginEfCoreEntityExtensionMappings.Configure();
    }
    /// <inheritdoc />
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        context.Services.AddAbpDbContext<CMSPluginDbContext>(options =>
        {
            /* Remove "includeAllEntities: true" to create
             * default repositories only for aggregate roots */
            //options.AddDefaultRepositories(includeAllEntities: true);
        });
        Configure<AbpDbContextOptions>(options =>
        {
            /* The main point to change your DBMS.
             * See also CMSMigrationsDbContextFactory for EF Core tooling. */
            options.UseNpgsql(x =>
            {
                x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema);
                //x.EnableRetryOnFailure();
            });
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/Properties/AssemblyInfo.cs
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/Scripts/UpdateDB.bat
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.PostgreSql/Scripts/UpdateMigrations.bat
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/CMS.Plugin.WareCmsUtilityApi.SqlServer.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
  <Import Project="../../common.props" />
  <Import Project="../../configureawait.props" />
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
      <PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="$(ABPPackageVersion)" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.5">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
      <PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Migrations\" />
  </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/CMSPluginDbContext.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Extensions;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
namespace CMS.Plugin.WareCmsUtilityApi.SqlServer;
/// <summary>
/// æ•°æ®åº“上下文
/// </summary>
[ConnectionStringName(CMSPluginDbProperties.ConnectionStringName)]
public class CMSPluginDbContext : AbpDbContext<CMSPluginDbContext>, ICMSPluginDbContext
{
    /* Add DbSet properties for your Aggregate Roots / Entities here. */
    /// <summary>
    /// Initializes a new instance of the <see cref="CMSPluginDbContext"/> class.
    /// </summary>
    /// <param name="options">The options.</param>
    public CMSPluginDbContext(DbContextOptions<CMSPluginDbContext> options)
        : base(options)
    {
    }
    /// <inheritdoc />
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        /* Include modules to your migration db context */
        builder.ConfigureSample();
        /* Configure your own tables/entities inside here */
        //builder.Entity<YourEntity>(b =>
        //{
        //    b.ToTable(CMSPluginDbProperties.DbTablePrefix + "YourEntities", CMSPluginDbProperties.DbSchema);
        //    b.ConfigureByConvention(); //auto configure for the base class props
        //    //...
        //});
        builder.TryConfigureObjectExtensions<CMSPluginDbContext>();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/CMSPluginDbContextFactory.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace CMS.Plugin.WareCmsUtilityApi.SqlServer;
/// <summary>
/// This class is needed for EF Core console commands
///  (like Add-Migration and Update-Database commands)
/// </summary>
public class CMSPluginDbContextFactory : IDesignTimeDbContextFactory<CMSPluginDbContext>
{
    /// <summary>
    /// Creates a new instance of a derived context.
    /// </summary>
    /// <param name="args">Arguments provided by the design-time service.</param>
    public CMSPluginDbContext CreateDbContext(string[] args)
    {
        CMSPluginEfCoreEntityExtensionMappings.Configure();
        var configuration = BuildConfiguration();
        var builder = new DbContextOptionsBuilder<CMSPluginDbContext>()
                .UseSqlServer(configuration.GetConnectionString("Default"),  x => x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema));
        return new CMSPluginDbContext(builder.Options);
    }
    /// <summary>
    /// Builds the configuration.
    /// </summary>
    /// <returns></returns>
    private static IConfigurationRoot BuildConfiguration()
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore/"))
            .AddJsonFile("appsettings.json", optional: false);
        return builder.Build();
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/CMSPluginSqlServerModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.SqlServer;
/// <summary>
/// EntityFrameworkCore模块
/// </summary>
[DependsOn(typeof(CMSPluginEntityFrameworkCoreModule))]
public class CMSPluginSqlServerModule : AbpModule
{
    /// <inheritdoc />
    public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        CMSPluginEfCoreEntityExtensionMappings.Configure();
    }
    /// <inheritdoc />
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        context.Services.AddAbpDbContext<CMSPluginDbContext>(options =>
        {
            /* Remove "includeAllEntities: true" to create
             * default repositories only for aggregate roots */
            //options.AddDefaultRepositories(includeAllEntities: true);
        });
        Configure<AbpDbContextOptions>(options =>
        {
            /* The main point to change your DBMS.
             * See also CMSMigrationsDbContextFactory for EF Core tooling. */
            options.UseSqlServer(x =>
            {
                x.MigrationsHistoryTable(CMSPluginDbProperties.MigrationsHistoryTable, CMSPluginDbProperties.DbSchema);
                //x.EnableRetryOnFailure();
            });
        });
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/FodyWeavers.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/Properties/AssemblyInfo.cs
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/Scripts/UpdateDB.bat
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.SqlServer/Scripts/UpdateMigrations.bat
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Apis/IWareCmsUtilityApiExternalApi.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
using WebApiClientCore.Attributes;
namespace CMS.Plugin.WareCmsUtilityApi.Apis
{
    /// <summary>
    /// å¤–部Http API对接 // https://webapiclient.github.io/guide/getting-started.html
    /// </summary>
    public interface IWareCmsUtilityApiExternalApi
    {
        /// <summary>
        ///  CreateAsync
        /// </summary>
        /// <returns></returns>
        [HttpPost("api/v1/warecmsutilityapi/sample")]
        Task<SampleDto> CreateAsync([JsonContent] SampleCreateDto input);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMS.Plugin.WareCmsUtilityApi.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.props" />
    <Import Project="../../configureawait.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <EnableDynamicLoading>true</EnableDynamicLoading>
        <ProduceReferenceAssembly>false</ProduceReferenceAssembly>
        <GenerateDocumentationFile>true</GenerateDocumentationFile>
    </PropertyGroup>
    <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
        <CMSRootPath>C:\Program Files\CMS Editor</CMSRootPath>
        <OutputPath>$(CMSRootPath)\plugins\cms.plugin.messuite</OutputPath>
    </PropertyGroup>
    <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">
        <CMSRootPath>/Volumes/SSD/CMS Editor</CMSRootPath>
        <OutputPath>$(CMSRootPath)\plugins\cms.plugin.messuite</OutputPath>
    </PropertyGroup>
    <ItemGroup>
      <None Remove="appsettings.json" />
      <None Remove="Flows\50001_1.pfd" />
      <None Remove="Flows\FlowInfo.xml" />
      <None Remove="Resources\Templates\Sample导出模板.xlsx" />
    </ItemGroup>
    <ItemGroup>
      <Content Include="appsettings.json">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Content>
    </ItemGroup>
    <ItemGroup>
      <EmbeddedResource Include="Resources\Templates\Sample导出模板.xlsx">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </EmbeddedResource>
    </ItemGroup>
    <ItemGroup>
        <PackageReference Include="CMS.Framework.AspNetCore" Version="2.16.1" />
        <PackageReference Include="CMS.Extensions.Variable" Version="2.16.1" />
        <PackageReference Include="CMS.Extensions.Data" Version="2.16.1" />
        <PackageReference Include="CMS.Data.Stressing" Version="2.16.1" />
        <PackageReference Include="CMS.Extensions.Abp" Version="1.4.0" />
        <PackageReference Include="WebApiClientCore" Version="2.0.4" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Application\CMS.Plugin.WareCmsUtilityApi.Application.csproj" />
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.MySQL\CMS.Plugin.WareCmsUtilityApi.MySQL.csproj" />
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.PostgreSql\CMS.Plugin.WareCmsUtilityApi.PostgreSql.csproj" />
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.SqlServer\CMS.Plugin.WareCmsUtilityApi.SqlServer.csproj" />
    </ItemGroup>
    <ItemGroup>
      <Resource Include="Flows\50001_1.pfd">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Resource>
      <Resource Include="Flows\FlowInfo.xml">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Resource>
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMSPluginEntry.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
using System.Collections;
using Autofac;
using CMS.Data.Stressing;
using CMS.DataPersistence;
using CMS.DataPersistence.Data;
using CMS.Extensions.Abp.Autofac.Extensions.DependencyInjection;
using CMS.Plugin.MesSuite.Abstractions;
using CMS.Plugin.MesSuite.Abstractions.Consts;
using CMS.Plugin.WareCmsUtilityApi.Abstractions;
using CMS.Plugin.WareCmsUtilityApi.Apis;
using CMS.Plugin.WareCmsUtilityApi.Domain;
using CMS.Plugin.WareCmsUtilityApi.ProjectService;
using CMS.Plugin.WareCmsUtilityApi.Workers;
using CMS.Plugin.WareCmsUtilityApi.Apis;
using CMS.Project.Abstractions;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Structing.AspNetCore;
using Structing.Core;
using Structing.Web;
using SYC.Plugin;
using Volo.Abp.BackgroundWorkers;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Modularity.PlugIns;
namespace CMS.Plugin.WareCmsUtilityApi;
/// <summary>
/// CMS插件入口,使用<see cref="EnableApplicationPartAttribute"/>将导入Controller.
/// </summary>
[EnableApplicationPart]
public class CMSPluginEntry : PluginEntry
{
    private readonly IServiceCollection _service = new ServiceCollection();
    /// <inheritdoc />
    public override void Register(IRegisteContext context)
    {
        var configuration = context.Features.GetConfiguration();
        // é…ç½®å¤–部HttpApi: https://webapiclient.github.io/
        context.Services
            .AddHttpApi<IWareCmsUtilityApiExternalApi>()
            .ConfigureHttpApi(configuration.GetSection(nameof(IWareCmsUtilityApiExternalApi)));
        context.Services.TryAddWareCmsUtilityApi();
        context.Services.AddScoped<IProjectRuntimeMigrator, CMSPluginRuntimeMigrator>();
        context.Services.AddSingleton<IProjectService, WareCmsUtilityApiProjectService>();
        context.Services.AddScoped<IEFDataProvider>(p =>
        {
            var cfg = p.GetRequiredService<IDataRuntimeConfig>();
            return new DefaultEFDataProvider(CMSPluginMesSuiteOptions.DataProviderName, CMSPluginMesSuiteOptions.GetDatabaseSuffix(CMSPluginDbProperties.MigrationsHistoryTable), CMSPluginDbProperties.MigrationsHistoryTable, cfg);
        });
        _service.AddObjectAccessor<IApplicationBuilder>();
        _service.AddApplication<CMSPluginModule>(options =>
        {
            var databaseType = configuration[SectionName.DatabaseType] ?? "mysql";
            if (KnowsDbCode.IsMysql(databaseType))
            {
                options.PlugInSources.Add(new TypePlugInSource(
                    typeof(MySQL.CMSPluginMySQLModule)
                ));
            }
            else if (KnowsDbCode.IsSqlServer(databaseType))
            {
                options.PlugInSources.Add(new TypePlugInSource(
                    typeof(SqlServer.CMSPluginSqlServerModule)
                ));
            }
            else if (KnowsDbCode.IsPostgreSql(databaseType))
            {
                options.PlugInSources.Add(new TypePlugInSource(
                    typeof(PostgreSql.CMSPluginPostgreSqlModule)
                ));
            }
        });
        base.Register(context);
    }
    /// <inheritdoc />
    public override void ConfigureContainer(ContainerBuilder builder)
    {
        builder.Populate(_service);
        base.ConfigureContainer(builder);
    }
    /// <inheritdoc />
    public override async Task ReadyAsync(IReadyContext context)
    {
        context.Provider.GetRequiredService<ObjectAccessor<IApplicationBuilder>>().Value = context.Features.GetApplicationBuilder();
        var app = context.Features.GetApplicationBuilder();
        await app.InitializeApplicationAsync();
        await base.ReadyAsync(context);
    }
    /// <inheritdoc />
    public override async Task AfterReadyAsync(IReadyContext context)
    {
        await context.GetRequiredService<IBackgroundWorkerManager>().AddAsync(context.GetRequiredService<WareCmsUtilityApiWorker>());
        await base.AfterReadyAsync(context);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMSPluginModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using System.Reflection;
using CMS.Extensions.Abp;
using CMS.Extensions.Abp.AspNetCore;
using CMS.Plugin.WareCmsUtilityApi.Abstractions;
using CMS.Plugin.WareCmsUtilityApi.Application;
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using CMS.Plugin.WareCmsUtilityApi.Jobs;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi
{
    /// <summary>
    /// CMS æ’件依赖加载启动模块
    /// </summary>
    [DependsOn(
        typeof(CMSPluginAbpModule),
        typeof(CMSPluginAbpAspNetCoreModule),
        typeof(CMSPluginApplicationModule),
        typeof(CMSPluginEntityFrameworkCoreModule)
    )]
    public class CMSPluginModule : AbpStartupModule
    {
        /// <inheritdoc />
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            Configure<AbpBackgroundJobOptions>(options =>
            {
                options.AddJob<WareCmsUtilityApiJob>();
            });
        }
        /// <inheritdoc />
        public override Assembly[]? GetSharedAssemblies()
        {
            return base.GetSharedAssemblies().Concat(new[]
            {
                typeof(CMSPluginWareCmsUtilityApiAbstractionsModule).Assembly,
            }).ToArray();
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMSPluginRuntimeMigrator.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Data;
using CMS.Project.Abstractions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp.DependencyInjection;
namespace CMS.Plugin.WareCmsUtilityApi
{
    /// <summary>
    /// å·¥ç¨‹æ•°æ®åº“迁移器,当<see cref="IProjectRunner"/>加载工程时此对象会被创建调用
    /// </summary>
    public class CMSPluginRuntimeMigrator : IProjectRuntimeMigrator
    {
        /// <summary>
        /// æ‰§è¡Œè¿ç§»
        /// </summary>
        /// <param name="project">当前要运行的工程</param>
        /// <param name="serviceProvider">存在运行工程上下文的serviceProvider</param>
        /// <returns></returns>
        public async Task UpgradeAsync(Project.Project project, IServiceProvider serviceProvider)
        {
            var objectAccessor = serviceProvider.GetService<ObjectAccessor<Project.Project>>();
            if (objectAccessor != null)
            {
                objectAccessor.Value = project;
            }
            var logger = serviceProvider.GetRequiredService<ILogger<CMSPluginRuntimeMigrator>>();
            try
            {
                // é€šè¿‡serviceProvider获取自己的DbContext并进行创建或迁移流程
                logger.LogInformation($"Start {project.Info.Id} WareCmsUtilityApi dbcontext create");
                await serviceProvider.GetRequiredService<CMSPluginDbMigrationService>().MigrateAsync();
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "Create WareCmsUtilityApi db failed");
            }
            if (objectAccessor != null)
            {
                objectAccessor.Value = null;
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Controller/SampleController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,187 @@
using Ao.Lang;
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MiniExcelLibs;
using System.Reflection;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
namespace CMS.Plugin.WareCmsUtilityApi.Controller
{
    /// <summary>
    /// Sample服务
    /// </summary>
    [ApiController]
    [TypeFilter(typeof(CMSLanguageFilter))]
    [TypeFilter(typeof(CMSUowActionFilter))]
    [TypeFilter(typeof(CMSAuditActionFilter))]
    [TypeFilter(typeof(CMSExceptionFilter))]
    [Route("api/v{version:apiVersion}/WareCmsUtilityApi/[controller]")]
    public class SampleController : ControllerBase
    {
        private readonly ISampleAppService _sampleAppService;
        /// <summary>
        /// Initializes a new instance of the <see cref="SampleController"/> class.
        /// </summary>
        /// <param name="sampleAppService">The sample application service.</param>
        public SampleController(ISampleAppService sampleAppService)
        {
            _sampleAppService = sampleAppService;
        }
        /// <summary>
        /// èŽ·å–sample.
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        [HttpGet]
        [Route("{id}")]
        public virtual Task<SampleDto> GetAsync(Guid id)
        {
            return _sampleAppService.GetAsync(id);
        }
        /// <summary>
        /// èŽ·å–sample的列表.
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        [HttpGet]
        public virtual Task<PagedResultDto<SampleDto>> GetListAsync([FromQuery] GetSamplesInput input)
        {
            return _sampleAppService.GetListAsync(input);
        }
        /// <summary>
        /// åˆ›å»ºsample.
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        public virtual Task<SampleDto> CreateAsync(SampleCreateDto input)
        {
            return _sampleAppService.CreateAsync(input);
        }
        /// <summary>
        /// æ›´æ–°sample.
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPut]
        [Route("{id}")]
        public virtual Task<SampleDto> UpdateAsync(Guid id, SampleUpdateDto input)
        {
            return _sampleAppService.UpdateAsync(id, input);
        }
        /// <summary>
        /// å…‹éš†Sample.
        /// </summary>
        /// <param name="ids">Id集合.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        [Route("Clone")]
        public virtual Task<List<SampleDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
        {
            return _sampleAppService.CloneAsync(ids);
        }
        /// <summary>
        /// åˆ é™¤sample.
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        [Route("{id}")]
        public virtual Task DeleteAsync(Guid id)
        {
            return _sampleAppService.DeleteAsync(id);
        }
        /// <summary>
        /// æ‰¹é‡åˆ é™¤sample.
        /// </summary>
        /// <param name="ids">The ids.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
        {
            return _sampleAppService.DeleteManyAsync(ids);
        }
        /// <summary>
        /// è°ƒæ•´æŽ’序.
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        [HttpPut]
        [Route("{id}/AdjustSort/{sort}")]
        public virtual Task AdjustSortAsync(Guid id, int sort)
        {
            return _sampleAppService.AdjustSortAsync(id, sort);
        }
        /// <summary>
        /// å¯¼å…¥sample.
        /// </summary>
        /// <returns></returns>
        [Authorize]
        [HttpPost]
        [Route("Import")]
        public virtual async Task<IActionResult> ImportAsync(IFormFile file)
        {
            using var stream = new MemoryStream();
            await file.CopyToAsync(stream);
            stream.Seek(0L, SeekOrigin.Begin);
            var sheetNames = stream.GetSheetNames();
            var sampleRows = sheetNames.Contains("配置") ? MiniExcel.Query<SamplesImportModel.SampleImportModel>(stream, sheetName: "配置").ToList() : new();
            if (!sampleRows.Any())
            {
                throw new UserFriendlyException("请检查导入的表格");
            }
            await _sampleAppService.ImportAsync(new SamplesImportModel
            {
                Samples = sampleRows,
            });
            return Ok();
        }
        /// <summary>
        /// å¯¼å‡ºsample.
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [Route("Export")]
        public virtual async Task<IActionResult> ExportAsync([FromQuery] GetSamplesInput input)
        {
            input.MaxResultCount = int.MaxValue;
            var exportData = await _sampleAppService.ExportAsync(input);
            var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/Sample导出模板.xlsx");
            if (!System.IO.File.Exists(templatePath))
            {
                templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/Sample导出模板.xlsx");
            }
            var memoryStream = new MemoryStream();
            await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets);
            memoryStream.Seek(0L, SeekOrigin.Begin);
            return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" };
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/EventHandlers/WareCmsUtilityApiEventHandler.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
using CMS.Plugin.MesSuite.Abstractions.Events;
using CMS.Plugin.MesSuite.Abstractions.Models;
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using CMS.Plugin.OrderManagement.Abstractions.Models;
using CMS.Plugin.ProcessManagement.Abstractions.Models;
using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.EventHandlers
{
    /// <summary>
    /// æµç¨‹äº‹ä»¶å¤„理程序
    /// </summary>
    public class WareCmsUtilityApiEventHandler : IDistributedEventHandler<ProcessFlowEto>, ITransientDependency
    {
        private readonly ILogger _logger;
        private readonly IServiceProvider _serviceProvider;
        /// <summary>
        /// Initializes a new instance of the <see cref="WareCmsUtilityApiEventHandler"/> class.
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="serviceProvider">The service provider.</param>
        public WareCmsUtilityApiEventHandler(ILogger<WareCmsUtilityApiEventHandler> logger, IServiceProvider serviceProvider)
        {
            this._logger = logger;
            this._serviceProvider = serviceProvider;
        }
        /// <summary>
        /// Handler handles the event by implementing this method.
        /// </summary>
        /// <param name="eventData">Event data</param>
        public async Task HandleEventAsync(ProcessFlowEto eventData)
        {
            if (eventData.Activity.Equals("步骤名称"))
            {
                _logger.LogInformation($"SampleEventHandler: Activity={eventData.Activity}");
                var serialNumber = eventData?.FlowItems[FlowItemCollection.SerialNumber]?.ToString();
                // å·¥è‰ºæ¨¡åž‹
                var process = eventData?.FlowItems[FlowItemCollection.ApplicationData] as ProcessModel;
                // äº§å“æ¨¡åž‹
                var product = eventData?.FlowItems[FlowItemCollection.ProductModel] as AssociationProductModel;
                // è¿½æº¯æ¨¡åž‹
                var trace = eventData?.FlowItems[FlowItemCollection.TraceModel] as TraceModel;
                // å·¥å•模型
                var order = eventData?.FlowItems[FlowItemCollection.OrderModel] as OrderModel;
                // ä¸šåŠ¡å¤„ç†
                await ProcessAsync();
            }
        }
        /// <summary>
        /// Processes the asynchronous.
        /// </summary>
        private async Task ProcessAsync()
        {
            using var scope = _serviceProvider.CreateScope();
            var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
            using var uow = unitOfWorkManager.Begin(requiresNew: true);
            var sampleRepository = scope.ServiceProvider.GetRequiredService<ISampleRepository>();
            var count = await sampleRepository.GetCountAsync();
            // å¦‚果有更新数据库操作,需提交保存
            // await uow.SaveChangesAsync();
            _logger.LogInformation($"ProcessAsync,Count={count}");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/FlowProcessors/WareCmsUtilityApiFlowProcessor.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
using CMS.Plugin.FlowManagement.Abstractions;
using CMS.Plugin.FlowManagement.Abstractions.Models;
using CMS.Plugin.MesSuite.Abstractions.Models;
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using CMS.Plugin.OrderManagement.Abstractions.Models;
using CMS.Plugin.ProcessManagement.Abstractions.Models;
using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SYC.Flow.Kernel;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.FlowProcessors
{
    /// <summary>
    /// æµç¨‹å¤„理器
    /// </summary>
    public class WareCmsUtilityApiFlowProcessor : IFlowProcessor, ISingletonDependency
    {
        private readonly ILogger<WareCmsUtilityApiFlowProcessor> _logger;
        private readonly IServiceProvider _serviceProvider;
        /// <summary>
        /// Initializes a new instance of the <see cref="FlowProcessor"/> class.
        /// </summary>
        public WareCmsUtilityApiFlowProcessor(ILogger<WareCmsUtilityApiFlowProcessor> logger, IServiceProvider serviceProvider)
        {
            _logger = logger;
            _serviceProvider = serviceProvider;
        }
        /// <inheritdoc />
        public Task OnEnterAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
        {
            return Task.CompletedTask;
        }
        /// <inheritdoc />
        public async Task OnExecuteAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
        {
            if (sender is Activity activity)
            {
                var eventArgs = args as ProcessflowEventArgs;
                var procID = eventArgs.DataItems["Instance_ProcID"];
                if (activity?.Name == "第三方系统合格判断")
                {
                    // å·¥è‰ºæ¨¡åž‹
                    var processModel = eventArgs.DataItems.ApplicationData as ProcessModel;
                    // å·¥å•模型
                    var orderModel = eventArgs.DataItems[FlowItemCollection.OrderModel] as OrderModel;
                    // äº§å“æ¨¡åž‹
                    var productModel = eventArgs.DataItems[FlowItemCollection.ProductModel] as AssociationProductModel;
                    // è¿½æº¯æ¨¡åž‹
                    var traceModel = eventArgs.DataItems[FlowItemCollection.TraceModel] as TraceModel;
                    // ä¸šåŠ¡å¤„ç†
                    await ProcessAsync();
                    _logger.LogInformation($"执行流程:实例={procID} -> {flowProcessor.ProcName} -> {activity.Name} ProductionFlowProcessor");
                }
            }
        }
        /// <summary>
        /// Processes the asynchronous.
        /// </summary>
        private async Task ProcessAsync()
        {
            using var scope = _serviceProvider.CreateScope();
            var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
            using var uow = unitOfWorkManager.Begin(requiresNew: true);
            var sampleRepository = scope.ServiceProvider.GetRequiredService<ISampleRepository>();
            var count = await sampleRepository.GetCountAsync();
            // å¦‚果有更新数据库操作,需提交保存
            // await uow.SaveChangesAsync();
            _logger.LogInformation($"ProcessAsync,Count={count}");
        }
        /// <inheritdoc />
        public Task OnExitAsync(FlowProcessor flowProcessor, object sender, EventArgs args)
        {
            return Task.CompletedTask;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Flows/50001_1.pfd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,158 @@
<ProcessflowDefine Version="1">
    <Define>
        <ProcessflowBuilder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <Parameters/>
            <Name>WareCmsUtilityApi业务流程</Name>
            <Description></Description>
            <Root xsi:type="Activity">
                <Alias>启动</Alias>
                <Name>启动</Name>
                <Description></Description>
                <EnterMode>Automatic</EnterMode>
                <ExitMode>Automatic</ExitMode>
                <JoinType>JoinXOR</JoinType>
                <SplitType>SplitXOR</SplitType>
                <ExtendedProperty></ExtendedProperty>
            </Root>
            <Activities>
                <Activity xsi:type="VariableMonitorActivity">
                    <Alias>变量监听</Alias>
                    <Name>触发信号监听</Name>
                    <EnterMode>Automatic</EnterMode>
                    <ExitMode>Automatic</ExitMode>
                    <JoinType>JoinXOR</JoinType>
                    <SplitType>SplitXOR</SplitType>
                    <NeedTagChange>true</NeedTagChange>
                    <TaskDelay>0</TaskDelay>
                    <MonitorVariableName>WareCmsUtilityApi_TriggerSignal</MonitorVariableName>
                    <CompareVariableValue>1</CompareVariableValue>
                    <ExtendedProperty></ExtendedProperty>
                </Activity>
                <Activity xsi:type="VariableReadActivity">
                    <Alias>变量读取</Alias>
                    <Name>变量读取</Name>
                    <EnterMode>Automatic</EnterMode>
                    <ExitMode>Automatic</ExitMode>
                    <JoinType>JoinXOR</JoinType>
                    <SplitType>SplitXOR</SplitType>
                    <TaskDelay>0</TaskDelay>
                    <ReadRetryCount>10</ReadRetryCount>
                    <ReadRetryDelay>500</ReadRetryDelay>
                    <ExtendedProperty></ExtendedProperty>
                    <ParameterVariables>
                        <ReadParameterVariable>
                            <VariableName>WareCmsUtilityApi_BarcodeVariable</VariableName>
                            <WriteIntoExtAttribute>true</WriteIntoExtAttribute>
                        </ReadParameterVariable>
                    </ParameterVariables>
                </Activity>
                <Activity xsi:type="WareCmsUtilityApiActivity">
                    <Alias>变量监听</Alias>
                    <Name>扩展步骤</Name>
                    <EnterMode>Automatic</EnterMode>
                    <ExitMode>Automatic</ExitMode>
                    <JoinType>JoinXOR</JoinType>
                    <SplitType>SplitXOR</SplitType>
                    <TaskDelay>0</TaskDelay>
                    <MyProperty>MyProperty1</MyProperty>
                    <ExtendedProperty></ExtendedProperty>
                </Activity>
                <Activity xsi:type="VariableMonitorActivity">
                    <Alias>变量监听</Alias>
                    <Name>触发信号复位监听</Name>
                    <EnterMode>Automatic</EnterMode>
                    <ExitMode>Automatic</ExitMode>
                    <JoinType>JoinXOR</JoinType>
                    <SplitType>SplitXOR</SplitType>
                    <NeedTagChange>true</NeedTagChange>
                    <TaskDelay>0</TaskDelay>
                    <MonitorVariableName>WareCmsUtilityApi_TriggerSignal</MonitorVariableName>
                    <CompareVariableValue>0</CompareVariableValue>
                    <ExtendedProperty></ExtendedProperty>
                </Activity>
                <Activity xsi:type="BusinessActivity">
                    <Alias>通用步骤</Alias>
                    <Name>通用步骤</Name>
                    <EnterMode>Automatic</EnterMode>
                    <ExitMode>Automatic</ExitMode>
                    <JoinType>JoinXOR</JoinType>
                    <SplitType>SplitXOR</SplitType>
                    <PublishFlowEvent>true</PublishFlowEvent>
                    <TaskDelay>0</TaskDelay>
                    <ExtendedProperty>
                        <MyExtendedProperty>MyExtendedProperty1</MyExtendedProperty>
                    </ExtendedProperty>
                </Activity>
                <Activity xsi:type="VariableWriteActivity">
                    <Alias>变量下发</Alias>
                    <Name>变量下发</Name>
                    <EnterMode>Automatic</EnterMode>
                    <ExitMode>Automatic</ExitMode>
                    <JoinType>JoinXOR</JoinType>
                    <SplitType>SplitXOR</SplitType>
                    <TaskDelay>0</TaskDelay>
                    <WriteRetryCount>10</WriteRetryCount>
                    <WriteRetryDelay>500</WriteRetryDelay>
                    <ParameterVariables>
                        <WriteParameterVariable>
                            <Sort>1</Sort>
                            <WriteVariableName>WareCmsUtilityApi_BarcodeVariable</WriteVariableName>
                            <WriteVariableValue></WriteVariableValue>
                        </WriteParameterVariable>
                    </ParameterVariables>
                    <ExtendedProperty></ExtendedProperty>
                </Activity>
                <Activity xsi:type="EndActivity">
                    <Alias>结束</Alias>
                    <Name>结束</Name>
                    <EnterMode>Automatic</EnterMode>
                    <ExitMode>Automatic</ExitMode>
                    <JoinType>JoinXOR</JoinType>
                    <SplitType>SplitXOR</SplitType>
                    <ExtendedProperty></ExtendedProperty>
                </Activity>
            </Activities>
            <Transitions>
                <Transition>
                    <Label>启动-&gt;触发信号监听</Label>
                    <Source>启动</Source>
                    <Sink>触发信号监听</Sink>
                </Transition>
                <Transition>
                    <Label>触发信号监听-&gt;变量读取</Label>
                    <Source>触发信号监听</Source>
                    <Sink>变量读取</Sink>
                </Transition>
                <Transition>
                    <Label>变量读取-&gt;扩展步骤</Label>
                    <Source>变量读取</Source>
                    <Sink>扩展步骤</Sink>
                </Transition>
                <Transition>
                    <Label>扩展步骤-&gt;触发信号复位监听</Label>
                    <Source>扩展步骤</Source>
                    <Sink>触发信号复位监听</Sink>
                </Transition>
                <Transition>
                    <Label>触发信号复位监听-&gt;通用步骤</Label>
                    <Source>触发信号复位监听</Source>
                    <Sink>通用步骤</Sink>
                </Transition>
                <Transition>
                    <Label>通用步骤-&gt;变量下发</Label>
                    <Source>通用步骤</Source>
                    <Sink>变量下发</Sink>
                </Transition>
                <Transition>
                    <Label>变量下发-&gt;结束</Label>
                    <Source>变量下发</Source>
                    <Sink>结束</Sink>
                </Transition>
            </Transitions>
        </ProcessflowBuilder>
    </Define>
    <Appearance>
        <ProcessflowAppearance xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        </ProcessflowAppearance>
    </Appearance>
</ProcessflowDefine>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Flows/FlowInfo.xml
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/FodyWeavers.xml
copy from "Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/UtilityApi/src/CMS.Plugin.HIAWms.Abstractions/FodyWeavers.xml" copy to "Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/FodyWeavers.xml"
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Jobs/WareCmsUtilityApiArgs.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
namespace CMS.Plugin.WareCmsUtilityApi.Jobs
{
    /// <summary>
    /// WareCmsUtilityApi ä½œä¸šå‚æ•°
    /// </summary>
    public class WareCmsUtilityApiArgs
    {
        /// <summary>
        /// Gets or sets the subject.
        /// </summary>
        public string Subject { get; set; }
        /// <summary>
        /// Gets or sets the body.
        /// </summary>
        public string Body { get; set; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Jobs/WareCmsUtilityApiJob.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using Microsoft.Extensions.Logging;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.Jobs
{
    /// <summary>
    ///  WareCmsUtilityApi åŽå°ä½œä¸š
    /// </summary>
    public class WareCmsUtilityApiJob : BackgroundJob<WareCmsUtilityApiArgs>, ITransientDependency
    {
        private readonly ILogger<WareCmsUtilityApiJob> _logger;
        private readonly IUnitOfWorkManager _unitOfWorkManager;
        private readonly ISampleRepository _sampleRepository;
        /// <summary>
        /// Initializes a new instance of the <see cref="WareCmsUtilityApiJob"/> class.
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="unitOfWorkManager">The unit of work manager.</param>
        /// <param name="sampleRepository">My entity name repository.</param>
        public WareCmsUtilityApiJob(ILogger<WareCmsUtilityApiJob> logger,  IUnitOfWorkManager unitOfWorkManager, ISampleRepository sampleRepository)
        {
            _logger = logger;
            _unitOfWorkManager = unitOfWorkManager;
            _sampleRepository = sampleRepository;
        }
        /// <inheritdoc />
        public override void Execute(WareCmsUtilityApiArgs args)
        {
            using var uow = _unitOfWorkManager.Begin(requiresNew: true);
            var count = _sampleRepository.GetCountAsync().GetAwaiter().GetResult();
            // å¦‚果有更新数据库操作,需提交保存
            // uow.SaveChangesAsync().GetAwaiter().GetResult();
            _logger.LogInformation($"WareCmsUtilityApiJob Execute,Subject={args.Subject},Body={args.Body},Count={count}");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/ProjectService/WareCmsUtilityApiProjectService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,184 @@
using CMS.Plugin.FlowManagement.Abstractions.FlowBusiness;
using CMS.Plugin.WareCmsUtilityApi.Apis;
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.Samples;
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using CMS.Plugin.WareCmsUtilityApi.Jobs;
using CMS.Project;
using CMS.Project.Abstractions;
using CMS.Unit.RuntimeValue.Abstractions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.ProjectService
{
    /// <summary>
    /// å·¥ç¨‹æœåŠ¡ï¼Œå’Œå·¥ç¨‹å…³è”çš„åŽå°æœåŠ¡ï¼Œå½“<see cref="IProjectServiceRunner"/>以当前Key调用时会被执行
    /// </summary>
    public class WareCmsUtilityApiProjectService : BaseProjectService
    {
        private IServiceProvider _serviceProvider;
        private readonly ILogger<WareCmsUtilityApiProjectService> _logger;
        private readonly IVariableDataCache _variableDataCache;
        private FlowVariableChannelListener _channelListener;
        private Dictionary<string, string> _monitorVariableNames;
        /// <summary>
        /// æœåŠ¡çš„Key,唯一,供<see cref="IProjectServiceRunner"/>使用
        /// </summary>
        public override string Key => "WareCmsUtilityApi";
        /// <summary>
        /// æœåŠ¡æè¿°ï¼Œæ˜¾ç¤ºåœ¨æœåŠ¡åˆ—è¡¨UI上的名称
        /// </summary>
        public override string Description => "WareCmsUtilityApi服务";
        /// <summary>
        /// å¯ç”¨æŽˆæƒ
        /// </summary>
        public override bool AuthRequired => true;
        /// <summary>
        /// Initializes a new instance of the <see cref="WareCmsUtilityApiProjectService"/> class.
        /// </summary>
        /// <param name="logger">The logger.</param>
        /// <param name="variableDataCache">The variable data cache.</param>
        public WareCmsUtilityApiProjectService(IServiceProvider serviceProvider, ILogger<WareCmsUtilityApiProjectService> logger, IVariableDataCache variableDataCache)
        {
            _serviceProvider = serviceProvider;
            _logger = logger;
            _variableDataCache = variableDataCache;
        }
        /// <summary>
        /// å¼€å¯æœåŠ¡
        /// </summary>
        /// <param name="serviceProvider">具有工程上下文的实例</param>
        public override async Task StartAsync(IServiceProvider serviceProvider)
        {
            if (State == ProjectServiceState.Started)
            {
                return;
            }
            // ç›‘听变量
            _monitorVariableNames = new Dictionary<string, string>
            {
                { "WareCmsUtilityApi_Variable1", "监听变量1" },
                { "WareCmsUtilityApi_Variable2", "监听变量2" }
            };
            // åˆ›å»ºé€šé“监听
            _channelListener?.Token?.Dispose();
            _channelListener = new FlowVariableChannelListener(_logger, _variableDataCache);
            _channelListener.CreateChannel(Key, waitListener: false, timeout: TimeSpan.FromSeconds(30), variableFilter: _monitorVariableNames.Keys.ToHashSet());
            _channelListener.TagChanged += OnTagValueChanged;
            await base.StartAsync(serviceProvider);
        }
        /// <summary>
        /// åœæ­¢æœåŠ¡
        /// </summary>
        /// <param name="serviceProvider">具有工程上下文的实例</param>
        public override async Task StopAsync(IServiceProvider serviceProvider)
        {
            if (_channelListener != null)
            {
                // é‡Šæ”¾ç›‘听
                _channelListener.TagChanged -= OnTagValueChanged;
                _channelListener.Token.Dispose();
                _channelListener = null;
            }
            // ä½¿ç”¨åŽå°ä½œä¸šå¼‚步处理
            //await _serviceProvider.GetRequiredService<IBackgroundJobManager>().EnqueueAsync(new WareCmsUtilityApiArgs
            //{
            //    Subject = "WareCmsUtilityApi_Subject",
            //    Body = "WareCmsUtilityApi_Body",
            //});
            await base.StopAsync(serviceProvider);
        }
        /// <summary>
        /// Called when [tag value changed].
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="TagChangedEventArgs"/> instance containing the event data.</param>
        private async void OnTagValueChanged(object sender, TagChangedEventArgs e)
        {
            var changeds = e.Changeds.Where(x => _monitorVariableNames != null && _monitorVariableNames.ContainsKey(x.Name));
            if (!changeds.Any())
            {
                return;
            }
            foreach (var changed in changeds)
            {
                var oldValue = changed.Old?.Value;
                var newValue = changed.New?.Value;
                var traceId = e.TraceId;
                _logger.LogInformation($"{changed.Name} å˜é‡å€¼å‘生变化,旧值{oldValue}=新值{newValue},TraceId={traceId}");
                // TODO: å¤„理变量值变化
                // Tips:https://cms-docs.shengyc.com/cms/api/%E5%90%8E%E7%AB%AF#3-%E5%8F%98%E9%87%8F%E6%A8%A1%E5%9D%97
                /* è¯´æ˜Žï¼šé€šè¿‡è®¢é˜… IVariableDataCache.TagChanged äº‹ä»¶ï¼Œæ‚¨å¯ä»¥å®žæ—¶ç›‘控变量的变化。此事件会传递所有变量至事件处理函数,因此,业务层需在函数中筛选关注的变量。
                    æ³¨æ„äº‹é¡¹ï¼š
                    ï¼ˆ1)性能影响: å‘布事件时,事件的发送者将阻塞流程。因此,强烈建议避免在事件处理函数中执行 I/ O æ“ä½œã€HTTP æŽ¥å£è®¿é—®æˆ–其他耗时操作,以防止对系统性能产生严重影响,导致整个系统响应延迟。
                    ï¼ˆ2)高频率触发: ç”±äºŽäº‹ä»¶è®¢é˜…了全量变量,触发频率可能非常高。
                    ï¼ˆ3)异步处理: é‰´äºŽäº‹ä»¶è§¦å‘频率很高,建议业务层在筛选关注变量后,使用 Task å¯åŠ¨æ–°çº¿ç¨‹å¤„ç†ä¸šåŠ¡é€»è¾‘ï¼Œä»¥é¿å…é˜»å¡žæ ¸å¿ƒçš„å˜é‡ç›‘å¬åŠŸèƒ½ï¼Œå®žçŽ°ä¸šåŠ¡å±‚ä¸Žå¹³å°åŸºåº§çš„è§£è€¦ã€‚
                    ï¼ˆ4)并发管理: å¦‚果业务层并发量大,必须优化代码设计和实施,以减少在高并发情况下的系统资源消耗,防止系统性能问题。
                    ï¼ˆ5)代码安全: å®‰è£…并使用 CMS.CodeAnalysis åˆ†æžå™¨æ¥åˆ†æž IVariableDataCache.TagChanged çš„使用情况。该工具能在使用不当时提供编译错误,帮助您提高代码质量。*/
                _ = Task.Run(async () =>
                {
                    // ä¾‹1:同步处理
                    //await ProcessAsync();
                    // ä¾‹2:调用外部API
                    //await ExecuteExternalApiAsync();
                });
            }
        }
        /// <summary>
        /// Processes the asynchronous.
        /// </summary>
        private async Task ProcessAsync()
        {
            using var scope = _serviceProvider.CreateScope();
            var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
            using var uow = unitOfWorkManager.Begin(requiresNew: true);
            var sampleRepository = scope.ServiceProvider.GetRequiredService<ISampleRepository>();
            var count = await sampleRepository.GetCountAsync();
            // å¦‚果有更新数据库操作,需提交保存
            // await uow.SaveChangesAsync();
            _logger.LogInformation($"ProcessAsync,Count={count}");
        }
        /// <summary>
        /// Executes the external API.
        /// </summary>
        private async Task ExecuteExternalApiAsync()
        {
            try
            {
                await _serviceProvider.GetRequiredService<IWareCmsUtilityApiExternalApi>().CreateAsync(new SampleCreateDto
                {
                    Name = "Sample_Name",
                    Code = "Sample_Code",
                });
            }
            catch (Exception e)
            {
              _logger.LogException(e);
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Properties/launchSettings.json
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Resources/Templates/Sampleµ¼³öÄ£°å.xlsx
Binary files differ
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Services/WareCmsUtilityApiFlowService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
using CMS.Plugin.WareCmsUtilityApi.Abstractions;
using CMS.Plugin.WareCmsUtilityApi.Domain.Samples;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SYC.Flow.Kernel;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.Services
{
    /// <inheritdoc />
    public class WareCmsUtilityApiFlowService : IWareCmsUtilityApiFlowService, ITransientDependency
    {
        private readonly ILogger<WareCmsUtilityApiFlowService> _logger;
        private readonly IServiceProvider _serviceProvider;
        /// <summary>
        /// Initializes a new instance of the <see cref="WareCmsUtilityApiFlowService"/> class.
        /// </summary>
        /// <param name="logger">The logger.</param>
        public WareCmsUtilityApiFlowService(ILogger<WareCmsUtilityApiFlowService> logger, IServiceProvider serviceProvider)
        {
            _logger = logger;
            _serviceProvider = serviceProvider;
        }
        /// <inheritdoc />
        public async Task ProcessAsync(ProcessflowEventArgs args)
        {
            using var scope = _serviceProvider.CreateScope();
            var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
            using var uow = unitOfWorkManager.Begin(requiresNew: true);
            var sampleRepository = scope.ServiceProvider.GetRequiredService<ISampleRepository>();
            var count = await sampleRepository.GetCountAsync();
            // å¦‚果有更新数据库操作,需提交保存
            // await uow.SaveChangesAsync();
            // è¾“出日志
            _logger.LogInformation($"WareCmsUtilityApiFlowService:ProcessAsync()");
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Workers/WareCmsUtilityApiWorker.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
using CMS.Extensions.Variable;
using CMS.Project.Abstractions;
using KissUtil.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp.BackgroundWorkers;
using Volo.Abp.Threading;
namespace CMS.Plugin.WareCmsUtilityApi.Workers
{
    /// <summary>
    /// WareCmsUtilityApi后台工作者
    /// </summary>
    public class WareCmsUtilityApiWorker : AsyncPeriodicBackgroundWorkerBase
    {
        private readonly ILogger<WareCmsUtilityApiWorker> _logger;
        private readonly VariableService _variableService;
        /// <summary>
        /// Initializes a new instance of the <see cref="WareCmsUtilityApiWorker"/> class.
        /// </summary>
        /// <param name="timer">The timer.</param>
        /// <param name="serviceScopeFactory">The service scope factory.</param>
        public WareCmsUtilityApiWorker(ILogger<WareCmsUtilityApiWorker> logger, AbpAsyncTimer timer, VariableService variableService, IServiceScopeFactory serviceScopeFactory) : base(timer, serviceScopeFactory)
        {
            _logger = logger;
            _variableService = variableService;
            Timer.Period = 1 * 300 * 1000; // æ¯éš” 300 ç§’ æ‰§è¡Œä¸€æ¬¡
            Timer.RunOnStart = true;
        }
        /// <inheritdoc />
        protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
        {
            var projectAccessor = workerContext.ServiceProvider.GetRequiredService<IProjectAccessor>();
            var project = await projectAccessor.GetProjectAsync();
            if (project?.Info == null)
            {
                return;
            }
            //_logger.LogInformation($"WareCmsUtilityApiWorker is working for project {project.Info.Id}");
            //// è®¡ç®—OEE
            //double oee = await CalculateOEEAsync();
            //// ä½¿ç”¨ç™¾åˆ†æ¯”格式 æ‰“印结果日志
            //_logger.LogInformation($"OEE:{oee:P2}");
            //// å†™å…¥å˜é‡
            //await _variableService.WriteValueAsync(new Dictionary<string, object> {{ "OEE", oee } });
        }
        // è®¡ç®—OEE=可用性×性能×质量
        public async Task<double> CalculateOEEAsync()
        {
            // è¯»å–OEE计算所需的值
            double availability = await ReadDoubleValueAsync("Availability");
            double performance = await ReadDoubleValueAsync("Performance");
            double quality = await ReadDoubleValueAsync("Quality");
            // è®¡ç®—OEE
            double oee = availability * performance * quality;
            // è¿”回计算结果
            return oee;
        }
        // æä¾›ä¸€ä¸ªæ³›åž‹æ–¹æ³•,方便直接获取double类型的值
        public async Task<double> ReadDoubleValueAsync(string variableName)
        {
            var variable = await _variableService.ReadValueAsync(variableName);
            return (variable?.Content?.Value).SafeString().ToDoubleOrNull().GetValueOrDefault();
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/appsettings.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
{
    // é…ç½®æ–‡ä»¶å°½å¯èƒ½å†™åœ¨/host/appsettings.json或数据库中,避免插件升级时被覆盖
    "IWareCmsUtilityApiExternalApi": {
        "HttpHost": "http://127.0.0.1:18000/" // External API对接地址
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/stylecop.json
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Application.Tests/CMS.Plugin.WareCmsUtilityApi.Application.Tests.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.test.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\..\src\CMS.Plugin.WareCmsUtilityApi.Application\CMS.Plugin.WareCmsUtilityApi.Application.csproj" />
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Domain.Tests\CMS.Plugin.WareCmsUtilityApi.Domain.Tests.csproj" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Application.Tests/WareCmsUtilityApiApplicationTestBase.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using CMS.Plugin.WareCmsUtilityApi.MySQL;
using CMS.Plugin.WareCmsUtilityApi.TestBase;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Tests
{
    /// <summary>
    /// WareCmsUtilityApiApplicationTestBase
    /// </summary>
    public class WareCmsUtilityApiApplicationTestBase : WareCmsUtilityApiTestBase<WareCmsUtilityApiApplicationTestModule>
    {
        /// <summary>
        /// UsingDbContext
        /// </summary>
        /// <param name="action">IWareCmsUtilityApiDbContext</param>
        protected virtual void UsingDbContext(Action<CMSPluginDbContext> action)
        {
            using (var dbContext = GetRequiredService<CMSPluginDbContext>())
            {
                action.Invoke(dbContext);
            }
        }
        /// <summary>
        /// UsingDbContext
        /// </summary>
        /// <typeparam name="T">T</typeparam>
        /// <param name="action">IWareCmsUtilityApiDbContext</param>
        /// <returns>T</returns>
        protected virtual T UsingDbContext<T>(Func<CMSPluginDbContext, T> action)
        {
            using (var dbContext = GetRequiredService<CMSPluginDbContext>())
            {
                return action.Invoke(dbContext);
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Application.Tests/WareCmsUtilityApiApplicationTestModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
using CMS.Plugin.WareCmsUtilityApi.Domain.Tests;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Tests
{
    /// <summary>
    /// WareCmsUtilityApiApplicationTestModule
    /// </summary>
    [DependsOn(
    typeof(CMSPluginApplicationModule),
    typeof(WareCmsUtilityApiDomainTestModule))]
    public class WareCmsUtilityApiApplicationTestModule : AbpModule
    {
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            base.ConfigureServices(context);
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Domain.Tests/CMS.Plugin.WareCmsUtilityApi.Domain.Tests.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.test.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests.csproj" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Domain.Tests/WareCmsUtilityApiDomainTestBase.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore;
using CMS.Plugin.WareCmsUtilityApi.MySQL;
using CMS.Plugin.WareCmsUtilityApi.TestBase;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Tests
{
    /// <summary>
    /// WareCmsUtilityApi DomainTestBase
    /// </summary>
    public class WareCmsUtilityApiDomainTestBase : WareCmsUtilityApiTestBase<WareCmsUtilityApiDomainTestModule>
    {
        /// <summary>
        /// UsingDbContext
        /// </summary>
        /// <param name="action">IWareCmsUtilityApiDbContext</param>
        protected virtual void UsingDbContext(Action<CMSPluginDbContext> action)
        {
            using (var dbContext = GetRequiredService<CMSPluginDbContext>())
            {
                action.Invoke(dbContext);
            }
        }
        /// <summary>
        /// UsingDbContext
        /// </summary>
        /// <typeparam name="T">T</typeparam>
        /// <param name="action">IWareCmsUtilityApiDbContext</param>
        /// <returns>T</returns>
        protected virtual T UsingDbContext<T>(Func<CMSPluginDbContext, T> action)
        {
            using (var dbContext = GetRequiredService<CMSPluginDbContext>())
            {
                return action.Invoke(dbContext);
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.Domain.Tests/WareCmsUtilityApiDomainTestModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
using CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Tests
{
    /// <summary>
    /// WareCmsUtilityApi DomainTestModule
    /// </summary>
    [DependsOn(typeof(WareCmsUtilityApiTestEntityFrameworkCoreModule))]
    public class WareCmsUtilityApiDomainTestModule : AbpModule
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.test.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Volo.Abp.EntityFrameworkCore" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.EntityFrameworkCore.Sqlite" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
        <PackageReference Include="NSubstitute" Version="$(NSubstitutePackageVersion)" />
        <PackageReference Include="Shouldly" Version="$(ShouldlyPackageVersion)" />
        <PackageReference Include="xunit" Version="$(xUnitPackageVersion)" />
        <PackageReference Include="xunit.extensibility.execution" Version="$(xUnitExtensibilityExecutionPackageVersion)" />
        <PackageReference Include="xunit.runner.visualstudio" Version="$(xUnitRunnerVisualstudioPackageVersion)" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\..\src\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore\CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.csproj" />
        <ProjectReference Include="..\..\src\CMS.Plugin.WareCmsUtilityApi.MySQL\CMS.Plugin.WareCmsUtilityApi.MySQL.csproj" />
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.TestBase\CMS.Plugin.WareCmsUtilityApi.TestBase.csproj" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests/WareCmsUtilityApiEntityFrameworkTestBase.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using CMS.Plugin.WareCmsUtilityApi.TestBase;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests
{
    /// <summary>
    /// MyProjectName TestBase
    /// </summary>
    public class WareCmsUtilityApiEntityFrameworkTestBase : WareCmsUtilityApiTestBase<WareCmsUtilityApiTestEntityFrameworkCoreModule>
    {
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests/WareCmsUtilityApiTestEntityFrameworkCoreModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
using CMS.Plugin.WareCmsUtilityApi.MySQL;
using CMS.Plugin.WareCmsUtilityApi.TestBase;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Sqlite;
using Volo.Abp.Modularity;
namespace CMS.Plugin.WareCmsUtilityApi.EntityFrameworkCore.Tests
{
    /// <summary>
    /// MyProjectName TestEntityFrameworkCoreModule
    /// </summary>
    [DependsOn(
        typeof(WareCmsUtilityApiTestBaseModule),
        typeof(CMSPluginEntityFrameworkCoreModule),
        typeof(AbpEntityFrameworkCoreSqliteModule))]
    public class WareCmsUtilityApiTestEntityFrameworkCoreModule : AbpModule
    {
        /// <summary>
        /// ConfigureServices
        /// </summary>
        /// <param name="context">ServiceConfigurationContext</param>
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            var sqliteConnection = CreateDatabaseAndGetConnection();
            Configure<AbpDbContextOptions>(options =>
            {
                options.Configure(dbContextConfigurationContext =>
                {
                    dbContextConfigurationContext.DbContextOptions.UseSqlite(sqliteConnection);
                });
            });
        }
        private static SqliteConnection CreateDatabaseAndGetConnection()
        {
            var connection = new SqliteConnection("Data Source=:memory:");
            connection.Open();
            new CMSPluginDbContext(
                new DbContextOptionsBuilder<CMSPluginDbContext>().UseSqlite(connection).Options).GetService<IRelationalDatabaseCreator>().CreateTables();
            return connection;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/CMS.Plugin.WareCmsUtilityApi.TestBase.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="../../common.test.props" />
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Volo.Abp.Autofac" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.TestBase" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Volo.Abp.Authorization" Version="$(ABPPackageVersion)" />
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
        <PackageReference Include="NSubstitute" Version="$(NSubstitutePackageVersion)" />
        <PackageReference Include="Shouldly" Version="$(ShouldlyPackageVersion)" />
        <PackageReference Include="xunit" Version="$(xUnitPackageVersion)" />
        <PackageReference Include="xunit.extensibility.execution" Version="$(xUnitExtensibilityExecutionPackageVersion)" />
        <PackageReference Include="xunit.runner.visualstudio" Version="$(xUnitRunnerVisualstudioPackageVersion)" />
    </ItemGroup>
    <ItemGroup>
        <ProjectReference Include="..\..\src\CMS.Plugin.WareCmsUtilityApi.Domain\CMS.Plugin.WareCmsUtilityApi.Domain.csproj" />
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/WareCmsUtilityApiDataSeedContributor.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
namespace CMS.Plugin.WareCmsUtilityApi.TestBase
{
    /// <summary>
    /// MyProjectName DataSeedContributor
    /// </summary>
    public class WareCmsUtilityApiDataSeedContributor : IDataSeedContributor, ITransientDependency
    {
        private readonly WareCmsUtilityApiTestData _myProjectNameTestData;
        private readonly IGuidGenerator _guidGenerator;
        /// <summary>
        /// Initializes a new instance of the <see cref="WareCmsUtilityApiDataSeedContributor"/> class.
        /// </summary>
        /// <param name="serviceProvider">IServiceProvider</param>
        public WareCmsUtilityApiDataSeedContributor(IServiceProvider serviceProvider)
        {
            _myProjectNameTestData = serviceProvider.GetRequiredService<WareCmsUtilityApiTestData>();
            _guidGenerator = serviceProvider.GetRequiredService<IGuidGenerator>();
        }
        /// <summary>
        /// SeedAsync
        /// </summary>
        /// <param name="context">DataSeedContext</param>
        /// <returns>Task</returns>
        public async Task SeedAsync(DataSeedContext context)
        {
            await Task.CompletedTask;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/WareCmsUtilityApiTestBase.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
using Volo.Abp.Modularity;
using Volo.Abp.Testing;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.TestBase
{
    /// <summary>
    /// MyProjectName TestBase
    /// </summary>
    /// <typeparam name="TStartupModule">IAbpModule</typeparam>
    public class WareCmsUtilityApiTestBase<TStartupModule> : AbpIntegratedTest<TStartupModule>
        where TStartupModule : IAbpModule
    {
        /// <summary>
        /// SetAbpApplicationCreationOptions
        /// </summary>
        /// <param name="options">AbpApplicationCreationOptions</param>
        protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
        {
            options.UseAutofac();
        }
        /// <summary>
        /// WithUnitOfWorkAsync
        /// </summary>
        /// <param name="func">func</param>
        /// <returns>Task</returns>
        protected virtual Task WithUnitOfWorkAsync(Func<Task> func)
        {
            return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
        }
        /// <summary>
        /// WithUnitOfWorkAsync
        /// </summary>
        /// <param name="options">AbpUnitOfWorkOptions</param>
        /// <param name="action">action</param>
        /// <returns>Task</returns>
        protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func<Task> action)
        {
            using (var scope = ServiceProvider.CreateScope())
            {
                var uowManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
                using (var uow = uowManager.Begin(options))
                {
                    await action();
                    await uow.CompleteAsync();
                }
            }
        }
        /// <summary>
        /// WithUnitOfWorkAsync
        /// </summary>
        /// <typeparam name="TResult">t</typeparam>
        /// <param name="func">TResult</param>
        /// <returns>TResult</returns>
        protected virtual Task<TResult> WithUnitOfWorkAsync<TResult>(Func<Task<TResult>> func)
        {
            return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
        }
        /// <summary>
        /// WithUnitOfWorkAsync
        /// </summary>
        /// <typeparam name="TResult">T</typeparam>
        /// <param name="options">AbpUnitOfWorkOptions</param>
        /// <param name="func">Func</param>
        /// <returns>TResult</returns>
        protected virtual async Task<TResult> WithUnitOfWorkAsync<TResult>(AbpUnitOfWorkOptions options, Func<Task<TResult>> func)
        {
            using (var scope = ServiceProvider.CreateScope())
            {
                var uowManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
                using (var uow = uowManager.Begin(options))
                {
                    var result = await func();
                    await uow.CompleteAsync();
                    return result;
                }
            }
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/WareCmsUtilityApiTestBaseModule.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
using CMS.Plugin.WareCmsUtilityApi.Domain;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
using Volo.Abp.Autofac;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
using Volo.Abp.Threading;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.TestBase
{
    /// <summary>
    /// MyProjectName TestBaseModule
    /// </summary>
    [DependsOn(
        typeof(AbpAutofacModule),
        typeof(AbpTestBaseModule),
        typeof(CMSPluginDomainModule))]
    public class WareCmsUtilityApiTestBaseModule : AbpModule
    {
        /// <summary>
        /// PreConfigureServices
        /// </summary>
        /// <param name="context">ServiceConfigurationContext</param>
        public override void PreConfigureServices(ServiceConfigurationContext context)
        {
        }
        /// <summary>
        /// ConfigureServices
        /// </summary>
        /// <param name="context">ServiceConfigurationContext</param>
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            context.Services.AddAlwaysAllowAuthorization();
            Configure<AbpUnitOfWorkDefaultOptions>(options =>
            {
                options.TransactionBehavior = UnitOfWorkTransactionBehavior.Enabled;
            });
        }
        /// <summary>
        /// OnApplicationInitialization
        /// </summary>
        /// <param name="context">ApplicationInitializationContext</param>
        public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {
            SeedTestData(context);
        }
        private static void SeedTestData(ApplicationInitializationContext context)
        {
            AsyncHelper.RunSync(async () =>
            {
                using (var scope = context.ServiceProvider.CreateScope())
                {
                    var dataSeeder = scope.ServiceProvider.GetRequiredService<IDataSeeder>();
                    await dataSeeder.SeedAsync();
                }
            });
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/test/CMS.Plugin.WareCmsUtilityApi.TestBase/WareCmsUtilityApiTestData.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
using Volo.Abp.DependencyInjection;
namespace CMS.Plugin.WareCmsUtilityApi.TestBase
{
    public class WareCmsUtilityApiTestData : ISingletonDependency
    {
    }
}