From 50dcc461b1676a79ebb80e5484a2c6aea530905d Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 9 Aug 2021 15:08:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=86=E7=B1=BB=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=95=86?= =?UTF-8?q?=E5=93=81=E9=A1=B5=E9=9D=A2=E6=97=A0=E6=B3=95=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E7=9A=84=E5=B9=B3=E5=8F=B0=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86=EF=BC=8C=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=BC=93=E5=AD=98key=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/lili/cache/CachePrefix.java | 6 +++- .../serviceimpl/CategoryServiceImpl.java | 36 +++++++++++++++---- .../StoreGoodsLabelServiceImpl.java | 6 ++-- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/framework/src/main/java/cn/lili/cache/CachePrefix.java b/framework/src/main/java/cn/lili/cache/CachePrefix.java index ce8cc392..b867154e 100644 --- a/framework/src/main/java/cn/lili/cache/CachePrefix.java +++ b/framework/src/main/java/cn/lili/cache/CachePrefix.java @@ -125,9 +125,13 @@ public enum CachePrefix { GOODS_STOCK, /** - * 商品分类 + * 商品分类 树状结构 */ CATEGORY, + /** + * 商品分类 集合 + */ + CATEGORY_ARRAY, /** * 浏览次数 */ diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CategoryServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CategoryServiceImpl.java index fcf3a41f..7756c32e 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CategoryServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/CategoryServiceImpl.java @@ -50,8 +50,9 @@ public class CategoryServiceImpl extends ServiceImpl i @Override public List categoryTree() { - if (cache.hasKey(CachePrefix.CATEGORY.getPrefix() + "tree")) { - return (List) cache.get(CachePrefix.CATEGORY.getPrefix() + "tree"); + List categoryVOList = (List) cache.get(CachePrefix.CATEGORY.getPrefix()); + if (categoryVOList != null) { + return categoryVOList; } //获取全部分类 @@ -60,7 +61,7 @@ public class CategoryServiceImpl extends ServiceImpl i List list = this.list(queryWrapper); //构造分类树 - List categoryVOList = new ArrayList<>(); + categoryVOList = new ArrayList<>(); for (Category category : list) { if ("0".equals(category.getParentId())) { CategoryVO categoryVO = new CategoryVO(category); @@ -75,7 +76,8 @@ public class CategoryServiceImpl extends ServiceImpl i } }); if (categoryVOList.size() != 0) { - cache.put(CachePrefix.CATEGORY.getPrefix() + "tree", categoryVOList); + cache.put(CachePrefix.CATEGORY.getPrefix(), categoryVOList); + cache.put(CachePrefix.CATEGORY_ARRAY.getPrefix(), list); } return categoryVOList; } @@ -144,8 +146,28 @@ public class CategoryServiceImpl extends ServiceImpl i */ @Override public List getCategoryNameByIds(List ids) { - List categoryVOS = categoryTree().stream().filter(item -> ids.contains(item.getId())).map(Category::getName).collect(Collectors.toList()); - return categoryVOS; + List categoryName = new ArrayList<>(); + List categoryVOs = (List) cache.get(CachePrefix.CATEGORY_ARRAY.getPrefix()); + //如果缓存中为空,则重新获取缓存 + if (categoryVOs == null) { + categoryTree(); + categoryVOs = (List) cache.get(CachePrefix.CATEGORY_ARRAY.getPrefix()); + } + //还为空的话,直接返回 + if (categoryVOs == null) { + return null; + } + //循环顶级分类 + for (Category category : categoryVOs) { + //循环查询的id匹配 + for (String id : ids) { + if (category.getId().equals(id)) { + //写入商品分类 + categoryName.add(category.getName()); + } + } + } + return categoryName; } @Override @@ -327,6 +349,6 @@ public class CategoryServiceImpl extends ServiceImpl i * 清除缓存 */ private void removeCache() { - cache.remove(CachePrefix.CATEGORY.getPrefix() + "tree"); + cache.remove(CachePrefix.CATEGORY.getPrefix()); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreGoodsLabelServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreGoodsLabelServiceImpl.java index 178d7d36..5dbefa3c 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreGoodsLabelServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreGoodsLabelServiceImpl.java @@ -40,8 +40,8 @@ public class StoreGoodsLabelServiceImpl extends ServiceImpl listByStoreId(String storeId) { //从缓存中获取店铺分类 - if (cache.hasKey(CachePrefix.STORE_CATEGORY.getPrefix() + storeId + "tree")) { - return (List) cache.get(CachePrefix.CATEGORY.getPrefix() + "tree"); + if (cache.hasKey(CachePrefix.STORE_CATEGORY.getPrefix() + storeId)) { + return (List) cache.get(CachePrefix.STORE_CATEGORY.getPrefix() + storeId); } List list = list(storeId); @@ -126,6 +126,6 @@ public class StoreGoodsLabelServiceImpl extends ServiceImpl