批量操作
本文档引用的文件
- MyEntityNameController.cs
- MyEntityNameAppService.cs
- IMyEntityNameAppService.cs
- MyEntityName.cs
- MyEntityNameConsts.cs
目录
简介
本文档详细描述了CMS插件系统中针对MyEntityName实体的批量操作API,重点涵盖批量删除与批量克隆功能。API设计遵循领域驱动设计(DDD)原则,通过控制器层暴露REST端点,调用应用服务层实现业务逻辑,并确保数据一致性。核心功能包括通过DELETE方法批量删除实体,以及通过POST /Clone端点克隆多个实体。
Section sources
批量删除API
端点定义
批量删除操作通过DELETE HTTP方法实现,且不包含路径参数。该端点接收一个GUID集合作为请求体,用于指定需要删除的多个实体。
- HTTP方法:
DELETE - 路径:
/api/v{version}/MyPluginName/MyEntityName - 请求体:
application/json格式的GUID数组
实现逻辑
控制器MyEntityNameController中的DeleteAsync(IEnumerable<Guid> ids)方法负责处理批量删除请求。该方法不直接操作数据,而是将请求委托给应用服务层的IMyEntityNameAppService.DeleteManyAsync方法。
在应用服务层MyEntityNameAppService中,DeleteManyAsync方法通过遍历传入的ID集合,并对每个ID调用DeleteAsync(Guid id)方法来实现批量删除。此实现方式将批量操作分解为一系列单个删除操作。
Diagram sources
Section sources
批量克隆API
端点定义
批量克隆操作通过POST HTTP方法实现,路径为/Clone。该端点接收一个GUID集合作为请求体,用于指定需要克隆的多个实体。
- HTTP方法:
POST - 路径:
/api/v{version}/MyPluginName/MyEntityName/Clone - 请求体:
application/json格式的GUID数组
实现逻辑
控制器MyEntityNameController中的CloneAsync(IEnumerable<Guid> ids)方法负责处理批量克隆请求。该方法将请求委托给应用服务层的IMyEntityNameAppService.CloneAsync方法。
在应用服务层MyEntityNameAppService中,CloneAsync方法的实现逻辑如下:
- 遍历传入的ID集合。
- 对于每个ID, 通过
IMyEntityNameRepository.FindAsync(id)从数据库中获取原始实体。 - 如果实体存在,则调用实体自身的
Clone方法创建副本。克隆时,新实体的名称会在原名称后添加_副本后缀(由MyEntityNameConsts.CloneTag定义),并确保名称的唯一性(通过循环检查并追加更多后缀)。 - 新实体的排序(Sort)值基于当前最大排序值递增。
- 使用
IMyEntityNameRepository.InsertAsync将新克隆的实体插入数据库。 - 将所有成功克隆的实体收集到一个列表中,并最终返回。
Diagram sources
Section sources