zoujiajian 1 年間 前
コミット
a136becef1

+ 59 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CategoryGoodsCascadeView.java

@@ -0,0 +1,59 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CategoryGoodsCascadeView
+ * 创建者: JavaZou
+ * 创建时间:2025/3/14 14:37
+ */
+@Getter
+@Setter
+@SearchBean(tables = "goods_don g inner join goods_don_category_relate gcr on gcr.goods_id = g.id" +
+		" inner join goods_don_category gc on gc.id = gcr.category",
+		where = "g.status is true",
+		orderBy = "g.id")
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CategoryGoodsCascadeView {
+	@DbField("gc.id")
+	private Long category;
+
+	@DbField("gc.name")
+	private String categoryName;
+
+	@DbIgnore
+	private String label;
+
+	@DbIgnore
+	private String value;
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbIgnore
+	private List<ChildGoods> children;
+
+	@Getter
+	@Setter
+	@JsonInclude(JsonInclude.Include.NON_NULL)
+	public static class ChildGoods {
+		private Long goodsId;
+
+		private String title;
+
+		private String label;
+
+		private Long value;
+	}
+}

+ 29 - 3
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonController.java

@@ -17,6 +17,7 @@ import com.cyksj.model.entity.GoodsDonCategory;
 import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.manage.request.ReqGoodsSpuInsert;
 import com.cyksj.model.manage.views.GoodsDonViewer;
+import com.cyksj.model.views.CategoryGoodsCascadeView;
 import com.cyksj.model.views.GoodsDetailView;
 import com.cyksj.model.views.GoodsDonCategoryDetailView;
 import com.cyksj.service.mange.CmsGoodsDonService;
@@ -33,9 +34,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -261,4 +260,31 @@ public class CmsGoodsDonController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDons);
     }
 
+    /**
+     * 所有分类平台 级联
+     */
+    @GetMapping("/get/category/goods/cascade")
+    public Result<List<CategoryGoodsCascadeView>> getCategoryGoodsCascade() {
+        List<CategoryGoodsCascadeView> categoryGoodsCascadeViews = beanSearcher.searchAll(CategoryGoodsCascadeView.class, MapUtils.builder().build());
+        //按分类分组
+        Map<String, List<CategoryGoodsCascadeView>> byType = categoryGoodsCascadeViews.stream()
+                .collect(Collectors.groupingBy(CategoryGoodsCascadeView::getCategoryName));
+        List<CategoryGoodsCascadeView> result = new ArrayList<>();
+        byType.forEach((categoryName, data) -> {
+            CategoryGoodsCascadeView cascadeView = new CategoryGoodsCascadeView();
+            cascadeView.setLabel(categoryName);
+            cascadeView.setValue(categoryName);
+            List<CategoryGoodsCascadeView.ChildGoods> child = data.stream().map(view -> coverToChildGoods(view)).collect(Collectors.toList());
+            cascadeView.setChildren(child);
+            result.add(cascadeView);
+        });
+        return GatewayResponse.SUCCESS.newBuilder().toResult(result);
+    }
+
+    private CategoryGoodsCascadeView.ChildGoods coverToChildGoods(CategoryGoodsCascadeView cascadeView) {
+        CategoryGoodsCascadeView.ChildGoods childGoods = new CategoryGoodsCascadeView.ChildGoods();
+        childGoods.setValue(cascadeView.getGoodsId());
+        childGoods.setLabel(cascadeView.getTitle());
+        return childGoods;
+    }
 }