From ab4ea7b8f10c9b66aed9c2ea161a08b25c3851a7 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 30 四月 2024 19:11:37 +0800
Subject: [PATCH] 2024.04新增内容

---
 meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallGoodsController.java |  123 ++++++++++++++++++++++++++++++++++------
 1 files changed, 104 insertions(+), 19 deletions(-)

diff --git a/meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallGoodsController.java b/meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallGoodsController.java
index f53bdfe..39ab6fd 100644
--- a/meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallGoodsController.java
+++ b/meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallGoodsController.java
@@ -1,5 +1,6 @@
 package com.sinata.modular.mall.controller;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
@@ -10,6 +11,7 @@
 import com.sinata.common.enums.EnumIsDelete;
 import com.sinata.common.enums.mall.EnumMallGoodsGroupType;
 import com.sinata.common.enums.mall.EnumMallGoodsState;
+import com.sinata.common.model.GroupSpecGoodsSkuJsonVo;
 import com.sinata.core.base.controller.BaseController;
 import com.sinata.core.base.tips.ErrorTip;
 import com.sinata.core.common.annotion.BussinessLog;
@@ -17,9 +19,11 @@
 import com.sinata.core.common.constant.factory.PageFactory;
 import com.sinata.core.common.exception.BizExceptionEnum;
 import com.sinata.core.log.LogObjectHolder;
+import com.sinata.core.shiro.ShiroKit;
 import com.sinata.core.util.Convert;
 import com.sinata.core.util.DateUtils2;
 import com.sinata.core.util.ExcelExportUtil;
+import com.sinata.core.util.SpringContextHolder;
 import com.sinata.modular.mall.model.*;
 import com.sinata.modular.mall.service.*;
 import org.apache.commons.collections.CollectionUtils;
@@ -47,6 +51,9 @@
 
     @Autowired
     private IMallGoodsService mallGoodsService;
+
+    @Autowired
+    private IMallGroupSpecService groupSpecService;
 
     @Autowired
     private IMallGoodsSkuService mallGoodsSkuService;
@@ -120,7 +127,7 @@
     public List<MallGoodsSku> getGoodsSpecData(Integer goodsId) {
         List<MallGoodsSku> skuList = mallGoodsSkuService.selectList(
                 new EntityWrapper<MallGoodsSku>()
-                        .setSqlSelect("spec_ids id, grep_name, stock")
+                        .setSqlSelect("spec_ids id, grep_name, stock,price_sale,price_member")
                         .eq("goods_id", goodsId)
                         .eq("merchant_id", 0)
         );
@@ -448,25 +455,47 @@
             wrapper.eq("group_type", groupType);
         }
         List<MallGoods> goodsList = mallGoodsService.selectList(wrapper);
-        List<HashMap<String, Object>> goodsMapList = goodsList.stream().map(goods -> {
-            HashMap<String, Object> goodMap = new HashMap<>();
-            //商品编号
-            goodMap.put("aGoodsNo", goods.getGoodsNo());
-            goodMap.put("bName", goods.getGoodsName());
-            goodMap.put("cGroupType", goods.getGroupType());
-            String groupTypName = goods.getGroupType() > 0 ? (goods.getGroupType() == 1 ? "黄金套餐" : "钻石套餐") : "普通商品";
-            goodMap.put("cGroupTypeName", groupTypName);
-            goodMap.put("dPrice", goods.getPrice());
-            goodMap.put("dPriceDale", goods.getPriceSale());
-            goodMap.put("ePriceMember", goods.getPriceMember());
-            goodMap.put("fStock", goods.getStock());
-            goodMap.put("gBuyCount", goods.getBuyCount());
-            goodMap.put("hId", goods.getId());
-            return goodMap;
-        }).collect(Collectors.toList());
+        Set<Integer> goodsIdList = goodsList.stream().map(MallGoods::getId).collect(Collectors.toSet());
+        Wrapper skuWrapper = new EntityWrapper<MallGoodsSku>().in("goods_id", goodsIdList)
+                .eq("merchant_id", 0).orderBy("id", false);
+        List<MallGoodsSku> skuList = mallGoodsSkuService.selectList(skuWrapper);
+        List<HashMap<String, Object>> result = new ArrayList<>();
+        goodsList.forEach(goods -> {
+            List<MallGoodsSku> goodsSkuList = skuList.stream()
+                    .filter(sku -> sku.getGoodsId().equals(goods.getId()))
+                    .collect(Collectors.toList());
+            List<HashMap<String, Object>> goodsMapList = goodsSkuList.stream().map(sku -> {
+                HashMap<String, Object> goodMap = new HashMap<>();
+                //商品编号
+                goodMap.put("aGoodsNo", goods.getGoodsNo());
+                goodMap.put("bName", goods.getGoodsName());
+                goodMap.put("bbGrepName", sku.getGrepName());
+                goodMap.put("cGroupType", goods.getGroupType());
+                String groupTypName = goods.getGroupType() > 0 ? (goods.getGroupType() == 1 ? "黄金套餐"
+                        : "钻石套餐") : "普通商品";
+                goodMap.put("cGroupTypeName", groupTypName);
+                goodMap.put("dPrice", goods.getPrice());
+                goodMap.put("dPriceDale", sku.getPriceSale());
+                goodMap.put("ePriceMember", sku.getPriceMember());
+                goodMap.put("fStock", sku.getStock());
+                goodMap.put("gBuyCount", goods.getBuyCount());
+                goodMap.put("hId", goods.getId());
+                goodMap.put("iSpecIds", sku.getSpecIds());
+                goodMap.put("jSkuId", sku.getId());
+                return goodMap;
+            }).collect(Collectors.toList());
+            result.addAll(goodsMapList);
+        });
+        /*for (int i = 0; i < result.size(); i++) {
+            for (int j = i+1; j < result.size(); j++) {
+                if (result.get(i).get("hId").equals(result.get(j).get("hId"))) {
+                    result.get(j).put("bName","");
+                }
+            }
+        }*/
         return new HashMap<String, Object>() {{
             put("code", 200);
-            put("value", goodsMapList);
+            put("value", result);
         }};
     }
 
@@ -483,13 +512,18 @@
 
     @BussinessLog(value = "获取商品规格")
     @RequestMapping(value = "/getGoodsSpecs")
-    public Object getGoodsSpecs(Integer oneClassifyId, Integer twoClassifyId, Model model) {
+    public Object getGoodsSpecs(Integer oneClassifyId, Integer twoClassifyId,@RequestParam(required = false) List<String> selectedItems, Model model) {
         Wrapper<MallGoodsSpec> wrapper = new EntityWrapper<MallGoodsSpec>()
                 .eq("is_delete", EnumIsDelete.EXISTED.index)
                 .addFilter("concat(',',classify_id_one,',') like concat( '%,', {0}, ',%' )", oneClassifyId);
         List<MallGoodsSpec> goodsSpecs = this.goodsSpecService.selectList(wrapper);
         if (CollectionUtils.isEmpty(goodsSpecs)) {
             goodsSpecs = Lists.newArrayList();
+        }
+        if (!selectedItems.isEmpty()) {
+            goodsSpecs = goodsSpecs.stream()
+                    .filter(specs -> !selectedItems.contains(specs.getSpecName())).collect(
+                            Collectors.toList());
         }
         model.addAttribute("goodsSpecs", goodsSpecs);
         return PREFIX + "add_specs.html";
@@ -527,4 +561,55 @@
                         .in("id", ids.split(","))
         );
     }
+
+    @ResponseBody
+    @BussinessLog(value = "获取商品列表")
+    @GetMapping(value = "/goodsByGoodsSpecId")
+    public List<Map<String, Object>> goodsByIdsList(String goodsIds, Integer groupSpecId, String oldGoodsSkuJson) {
+        List<MallGoods> goodsList = mallGoodsService.selectList(
+                new EntityWrapper<MallGoods>()
+                        .eq("group_type", EnumMallGoodsGroupType.GOODS.index)
+                        .in("id", goodsIds.split(","))
+        );
+
+        List<Map<String, Object>> list;
+        if (groupSpecId != null) {
+            String goodsSkuJson = oldGoodsSkuJson;
+            if (StrUtil.isBlank(goodsSkuJson) || goodsSkuJson.equals("[]")) {
+                // 查询套餐规格组信息
+                MallGroupSpec groupSpec = groupSpecService.selectById(groupSpecId);
+                goodsSkuJson = groupSpec.getGoodsSkuJson();
+            }
+
+            // 格式化套餐规格组数据
+            List<GroupSpecGoodsSkuJsonVo> groupSpecGoodsSkuJsonVoList;
+            if (StrUtil.isBlank(goodsSkuJson) || goodsSkuJson.equals("[]")) {
+                groupSpecGoodsSkuJsonVoList = null;
+            } else {
+                groupSpecGoodsSkuJsonVoList = JSONUtil.parseArray(goodsSkuJson).toList(GroupSpecGoodsSkuJsonVo.class);
+            }
+
+            list = goodsList.stream().map(o -> {
+                Map<String, Object> map = BeanUtil.beanToMap(o);
+                Integer goodsNum = 1;
+                if (groupSpecGoodsSkuJsonVoList != null) {
+                    // 匹配商品数量
+                    for (GroupSpecGoodsSkuJsonVo groupSpecGoodsSkuJsonVo : groupSpecGoodsSkuJsonVoList) {
+                        if (o.getId().equals(groupSpecGoodsSkuJsonVo.getGoodsId())) {
+                            goodsNum = groupSpecGoodsSkuJsonVo.getGoodsNum();
+                        }
+                    }
+                }
+                map.put("goodsNum", goodsNum);
+                return map;
+            }).collect(Collectors.toList());
+        } else {
+            list = goodsList.stream().map(o -> {
+                Map<String, Object> map = BeanUtil.beanToMap(o);
+                map.put("goodsNum", 1);
+                return map;
+            }).collect(Collectors.toList());
+        }
+        return list;
+    }
 }

--
Gitblit v1.7.1