Browse Source

产品目录增加接口:根据Id批量获取

wanyuan 10 months ago
parent
commit
6c9efe0a9a

+ 15 - 1
src/main/java/com/kingtom/shengtai/api/controller/ProductDirController.java

@@ -1,11 +1,13 @@
 package com.kingtom.shengtai.api.controller;
 
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.kingtom.kirin.app.system.utils.SystemUtils;
+import com.kingtom.kirin.core.common.CommonConst;
 import com.kingtom.kirin.core.common.base.PageInfo;
 import com.kingtom.kirin.core.common.base.Result;
 import com.kingtom.kirin.core.common.utils.CollectionUtils;
@@ -35,7 +37,7 @@ import org.springframework.web.bind.annotation.*;
  * @since 2024/01/17
  */
 @RestController
-@Tag(name = "产品目录表接口")
+@Tag(name = "ProductDirController", description = "产品目录表 控制层。")
 @RequestMapping("/product_dirs")
 public class ProductDirController{
 
@@ -95,6 +97,18 @@ public class ProductDirController{
         return Result.ok(ProductDirMapper.INSTANCE.convert(productDir));
     }
 
+    @Parameter(name = "ids", description = "产品目录表Ids,多个id用英文逗号隔开", in = ParameterIn.QUERY, required = true)
+    @Operation(summary = "根据id集合批量查找产品目录表")
+    @GetMapping("/batch_info")
+    @SaCheckPermission(value = {"AuthMenu:srm_products:Execute"})
+    public Result<List<ProductDirDTO>> findProductDirs(@RequestParam("ids") String ids){
+        List<ProductDir> dirs = productDirService.findByIds(List.of(ids.split(CommonConst.COMMA_STRING)));
+        List<ProductDirDTO> collect = dirs.stream().map(ProductDirMapper.INSTANCE::convert)
+                                          .collect(Collectors.toList());
+        collect.sort(Comparator.comparingInt(e -> ids.indexOf(e.getId())));
+        return Result.ok(collect);
+    }
+
     @Operation(summary = "分页查询产品目录表")
     @Parameters({@Parameter(name = "query", description = "搜索内容", in = ParameterIn.QUERY, required = false),
             @Parameter(name = "pageNum", description = "当前页", in = ParameterIn.QUERY, required = true),