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