schangxiang@126.com
2025-05-08 8fc78b34650a12ab32538170c5bb74110c6f0e74
初步提交 公共api
已添加4个文件
已修改4个文件
465 ■■■■■ 文件已修改
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/CMS.Plugin.WareCmsUtilityApi.Application.Contracts.csproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Services/IWmsEnumAppService.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMS.Plugin.WareCmsUtilityApi.Application.csproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/Implements/WmsEnumAppService.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMS.Plugin.WareCmsUtilityApi.csproj 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Controller/SampleController.cs 340 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Controller/WmsEnumController.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/CMS.Plugin.WareCmsUtilityApi.Application.Contracts.csproj
@@ -18,4 +18,10 @@
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Domain.Shared\CMS.Plugin.WareCmsUtilityApi.Domain.Shared.csproj" />
    </ItemGroup>
    <ItemGroup>
      <Reference Include="CmsQueryExtensions">
        <HintPath>..\..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath>
      </Reference>
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Dtos/WmsEnumDto/WmsEnumInput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.WmsEnumDto
{
    /// <summary>
    /// æžšä¸¾è¾“入参数
    /// </summary>
    public class WmsEnumInput
    {
        /// <summary>
        /// æžšä¸¾ç±»åž‹åç§°
        /// </summary>
        /// <example>AccountTypeEnum</example>
        public string EnumName { get; set; }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application.Contracts/Services/IWmsEnumAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.WmsEnumDto;
using CmsQueryExtensions;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Services
{
    /// <summary>
    /// æžšä¸¾æŽ¥å£
    /// </summary>
    public interface IWmsEnumAppService
    {
        /// <summary>
        /// èŽ·å–æžšä¸¾.
        /// </summary>
        /// <returns></returns>
        List<EnumItem> GetEnumDataList(WmsEnumInput enumInput);
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/CMS.Plugin.WareCmsUtilityApi.Application.csproj
@@ -18,4 +18,10 @@
        <ProjectReference Include="..\CMS.Plugin.WareCmsUtilityApi.Domain\CMS.Plugin.WareCmsUtilityApi.Domain.csproj" />
    </ItemGroup>
    <ItemGroup>
      <Reference Include="CmsQueryExtensions">
        <HintPath>..\..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath>
      </Reference>
    </ItemGroup>
</Project>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi.Application/Implements/WmsEnumAppService.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.WmsEnumDto;
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Services;
using CmsQueryExtensions;
namespace CMS.Plugin.WareCmsUtilityApi.Application.Implements
{
    /// <summary>
    /// æžšä¸¾ç±»åž‹æŽ¥å£å®žçް
    /// </summary>
    public class WmsEnumAppService : CMSPluginAppService, IWmsEnumAppService
    {
        public WmsEnumAppService()
        {
        }
        public List<EnumItem> GetEnumDataList(WmsEnumInput enumInput)
        {
            return EnumHelper.GetEnumItems(enumInput.EnumName);
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/CMS.Plugin.WareCmsUtilityApi.csproj
@@ -11,7 +11,7 @@
    </PropertyGroup>
    <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
        <CMSRootPath>C:\Program Files\CMS Editor</CMSRootPath>
        <CMSRootPath>D:\Program Files\CMS Editor</CMSRootPath>
        <OutputPath>$(CMSRootPath)\plugins\cms.plugin.messuite</OutputPath>
    </PropertyGroup>
@@ -56,6 +56,12 @@
    </ItemGroup>
    <ItemGroup>
      <Reference Include="CmsQueryExtensions">
        <HintPath>..\..\..\..\..\CommonDLL\CmsQueryExtensions.dll</HintPath>
      </Reference>
    </ItemGroup>
    <ItemGroup>
      <Resource Include="Flows\50001_1.pfd">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Resource>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/WareCmsUtilityApi/server/src/CMS.Plugin.WareCmsUtilityApi/Controller/SampleController.cs
@@ -1,187 +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;
//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;
//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>
//        /// 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="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>
//        [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="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="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="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="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>
//        /// æ‰¹é‡åˆ é™¤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>
//        /// è°ƒæ•´æŽ’序.
//        /// </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);
//        /// <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();
//            var sheetNames = stream.GetSheetNames();
//            var sampleRows = sheetNames.Contains("配置") ? MiniExcel.Query<SamplesImportModel.SampleImportModel>(stream, sheetName: "配置").ToList() : new();
            if (!sampleRows.Any())
            {
                throw new UserFriendlyException("请检查导入的表格");
            }
//            if (!sampleRows.Any())
//            {
//                throw new UserFriendlyException("请检查导入的表格");
//            }
            await _sampleAppService.ImportAsync(new SamplesImportModel
            {
                Samples = sampleRows,
            });
//            await _sampleAppService.ImportAsync(new SamplesImportModel
//            {
//                Samples = sampleRows,
//            });
            return Ok();
        }
//            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");
            }
//        /// <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" };
        }
    }
}
//            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/Controller/WmsEnumController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Dtos.WmsEnumDto;
using CMS.Plugin.WareCmsUtilityApi.Application.Contracts.Services;
using CmsQueryExtensions;
using Microsoft.AspNetCore.Mvc;
namespace CMS.Plugin.WareCmsUtilityApi.Controller
{
    /// <summary>
    /// æžšä¸¾æœåŠ¡æŽ¥å£.
    /// </summary>
    [ApiController]
    [TypeFilter(typeof(CMSLanguageFilter))]
    [TypeFilter(typeof(CMSUowActionFilter))]
    [TypeFilter(typeof(CMSAuditActionFilter))]
    [TypeFilter(typeof(CMSExceptionFilter))]
    [Route("api/v{version:apiVersion}/WareCmsUtilityApi/[controller]")]
    public class WmsEnumController : ControllerBase
    {
        private readonly IWmsEnumAppService _wmsEnumAppService;
        /// <summary>
        /// Initializes a new instance of the <see cref="WmsEnumController"/> class.
        /// æž„造函数.
        /// </summary>
        /// <param name="wmsEnumAppService"></param>
        public WmsEnumController(IWmsEnumAppService wmsEnumAppService)
        {
            _wmsEnumAppService = wmsEnumAppService;
        }
        /// <summary>
        /// èŽ·å–æžšä¸¾æ•°æ®.
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost]
        public List<EnumItem> GetEnumDataList(WmsEnumInput input)
        {
            return _wmsEnumAppService.GetEnumDataList(input);
        }
    }
}