diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseStoreCategoryService.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseStoreCategoryService.java index 7a14306d..ab7cb80a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseStoreCategoryService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseStoreCategoryService.java @@ -39,4 +39,7 @@ public interface ShopBaseStoreCategoryService extends IBaseService> getMobileCategoryTree(QueryWrapper queryWrapper); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseStoreCategoryServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseStoreCategoryServiceImpl.java index 348a1dfd..5f765ba2 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseStoreCategoryServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseStoreCategoryServiceImpl.java @@ -6,16 +6,23 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.suisung.mall.common.modules.base.ShopBaseStoreCategory; import com.suisung.mall.common.utils.CommonUtil; +import com.suisung.mall.core.web.service.RedisService; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.base.mapper.ShopBaseStoreCategoryMapper; import com.suisung.mall.shop.base.service.ShopBaseStoreCategoryService; +import com.suisung.mall.shop.store.service.ShopStoreBaseService; import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; import javax.annotation.Resource; +import javax.swing.*; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; /** @@ -34,6 +41,11 @@ public class ShopBaseStoreCategoryServiceImpl extends BaseServiceImpl getCategoryTree(QueryWrapper queryWrapper) { List list = find(queryWrapper); @@ -43,6 +55,7 @@ public class ShopBaseStoreCategoryServiceImpl extends BaseServiceImpl getCategoryTree(Integer store_category_parent_id, Integer category_is_enable) { + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("store_category_parent_id", store_category_parent_id); @@ -51,31 +64,63 @@ public class ShopBaseStoreCategoryServiceImpl extends BaseServiceImpl category_rows = (List) redisService.get(cache_key); + //List category_rows = (List) redisService.get(cache_key); List category_rows = null; - + boolean openFindStore = getParameter("openFindStore", false);//是否开启店铺列表查询 if (CollUtil.isEmpty(category_rows)) { queryWrapper.orderByAsc("store_category_order"); List categories = find(queryWrapper); category_rows = Convert.toList(Map.class, categories); + List> futures = new ArrayList<>(); + Map storeLis = new HashMap<>(); + if(openFindStore){ + long startTime = System.currentTimeMillis(); + for (Map category_row : category_rows) { + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + RequestContextHolder.setRequestAttributes(requestAttributes,true); + Integer store_category_id = (Integer) category_row.get("store_category_id"); + Map row = new HashMap<>(); + row.put("store_category_id", String.valueOf(store_category_id)); + row.put("findStore",true); + row.put("store_type","1"); + Map storeListMap= shopStoreBaseService.getStoreList(1, pageSize,row); + storeLis.put(String.valueOf(store_category_id), storeListMap); + return null; + }); + futures.add(future); + } + + CompletableFuture allOfFuture = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) + .thenRun(() -> { + long endTime = System.currentTimeMillis(); + SwingUtilities.invokeLater(() -> { + log.debug("异步调用完成! 总耗时: "+(endTime - startTime) + "ms\n"); + }); + }); + allOfFuture.join(); + } + for (Map category_row : category_rows) { Integer store_category_id = (Integer) category_row.get("store_category_id"); List rs = getCategoryTree(store_category_id, category_is_enable); - + if(openFindStore){ + category_row.put("storeList", storeLis.get(String.valueOf(store_category_id))); + } category_row.put("id", category_row.get("store_category_id")); category_row.put("name", category_row.get("store_category_name")); category_row.put("value", category_row.get("store_category_id")); category_row.put("index", "store_category_id"); category_row.put("sub", rs); - } + } if (CollUtil.isNotEmpty(category_rows)) { -// redisService.set(cache_key, category_rows); + // redisService.set(cache_key, category_rows); } } @@ -134,4 +179,39 @@ public class ShopBaseStoreCategoryServiceImpl extends BaseServiceImpl> buildMobileTree(List> list, Integer pid) { +// List> tree = new ArrayList<>(); +// list.forEach(s -> { +// if (((Integer) s.get("store_category_parent_id")).intValue() == pid.intValue()) { +// s.put("children",buildMobileTree(list, ((Integer) s.get("store_category_id")))); +// tree.add(s); +// } +// }); +// return tree; +// } + +// @Override +// public List> getMobileCategoryTree(QueryWrapper queryWrapper) { +// queryWrapper.eq("category_is_enable", 1); +// queryWrapper.select("store_category_parent_id","store_category_id","store_category_name", "category_image","category_is_leaf"); +// List list = find(queryWrapper); +// List> shopStoreMap=new ArrayList<>(); +// for (ShopBaseStoreCategory shopBaseStoreCategory : list) { +// try { +// shopStoreMap.add(CommonUtil.convertToMap(shopBaseStoreCategory)) ; +// } catch (IllegalAccessException e) { +// throw new RuntimeException(e); +// } +// } +// return buildMobileTree(shopStoreMap, 0); +// } + + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreBaseController.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreBaseController.java index ce363ded..d0484de9 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreBaseController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreBaseController.java @@ -12,6 +12,7 @@ import com.suisung.mall.common.modules.store.ShopStoreBase; import com.suisung.mall.common.modules.store.ShopStoreCompany; import com.suisung.mall.common.service.impl.BaseControllerImpl; import com.suisung.mall.common.utils.CheckUtil; +import com.suisung.mall.common.utils.ContextUtil; import com.suisung.mall.shop.base.service.ShopBaseStoreGradeService; import com.suisung.mall.shop.store.service.ShopMchEntryService; import com.suisung.mall.shop.store.service.ShopStoreBaseService; @@ -69,7 +70,7 @@ public class ShopStoreBaseController extends BaseControllerImpl { queryWrapper.like("store_name", store_name); } - UserDto user = getCurrentUser(); + UserDto user = ContextUtil.getCurrentUser(); if (user.isStore()) { queryWrapper.eq("store_id", Convert.toInt(user.getStore_id())); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreProductCategoryController.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreProductCategoryController.java index 316c884e..996381a0 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreProductCategoryController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreProductCategoryController.java @@ -7,6 +7,7 @@ import com.suisung.mall.common.domain.UserDto; import com.suisung.mall.common.modules.store.ShopStoreProductCategory; import com.suisung.mall.common.service.impl.BaseControllerImpl; import com.suisung.mall.common.utils.CheckUtil; +import com.suisung.mall.common.utils.ContextUtil; import com.suisung.mall.core.web.service.RedisService; import com.suisung.mall.shop.store.service.ShopStoreProductCategoryService; import io.swagger.annotations.Api; @@ -58,7 +59,7 @@ public class ShopStoreProductCategoryController extends BaseControllerImpl { @ApiOperation(value = "商品分类表-分类强调区别, 类型强调共性-分页列表查询", notes = "商品分类表-分类强调区别, 类型强调共性-分页列表查询") @RequestMapping(value = "/categoryTree", method = RequestMethod.GET) public CommonResult categoryTree(ShopStoreProductCategory category) { - UserDto user = getCurrentUser(); + UserDto user = ContextUtil.getCurrentUser(); Integer store_id = Integer.parseInt(user.getStore_id()); QueryWrapper queryWrapper = new QueryWrapper<>(); if (user.isStore()) { @@ -85,11 +86,11 @@ public class ShopStoreProductCategoryController extends BaseControllerImpl { @ApiOperation(value = "店铺商品分类表-编辑", notes = "店铺商品分类表-编辑") @RequestMapping(value = "/edit", method = RequestMethod.POST) public CommonResult edit(ShopStoreProductCategory shopStoreProductCategory) { - UserDto user = getCurrentUser(); + UserDto user = ContextUtil.getCurrentUser(); Integer store_id = Convert.toInt(user.getStore_id()); shopStoreProductCategory.setStore_id(store_id); - UserDto currentUser = getCurrentUser(); - shopStoreProductCategoryService.cleanCategoryCache(Convert.toInt(currentUser.getStore_id())); + // UserDto currentUser = getCurrentUser(); + shopStoreProductCategoryService.cleanCategoryCache(Convert.toInt(user.getStore_id())); if (CheckUtil.isNotEmpty(shopStoreProductCategory.getStore_product_cat_id())) { long num = shopStoreProductCategoryService.count(new QueryWrapper().eq("parent_id", shopStoreProductCategory.getStore_product_cat_id())); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/mobile/StoreController.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/mobile/StoreController.java index f18a4b90..643ffa4c 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/mobile/StoreController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/mobile/StoreController.java @@ -73,7 +73,7 @@ public class StoreController extends BaseControllerImpl { @RequestMapping(value = "/lists", method = RequestMethod.GET) public CommonResult lists(@RequestParam(name = "page", defaultValue = "1") Integer page, @RequestParam(name = "rows", defaultValue = "10") Integer rows) { - return CommonResult.success(shopStoreBaseService.getStoreList(page, rows)); + return CommonResult.success(shopStoreBaseService.getStoreList(page, rows,new HashMap<>())); } @ApiOperation(value = "列出店铺分类", notes = "列出店铺分类") @@ -314,4 +314,26 @@ public class StoreController extends BaseControllerImpl { } } + +// /** +// * 列表查询 +// * @return +// */ +// @ApiOperation(value = "店铺分类表-分类强调区别, 类型强调共性-分页列表查询", notes = "店铺分类表-分类强调区别, 类型强调共性-分页列表查询") +// @RequestMapping(value = "/categoryTree", method = RequestMethod.GET) +// public CommonResult categoryTree(ShopBaseStoreCategory category) { +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// if (category.getStore_category_parent_id() != null) +// queryWrapper.eq("store_category_parent_id", category.getStore_category_parent_id()); +// +// return CommonResult.success(shopBaseStoreCategoryService.getMobileCategoryTree(queryWrapper)); +// } + +// @ApiOperation(value = "根据分类查询店铺", notes = "列表数据") +// @RequestMapping(value = "/listStores", method = RequestMethod.GET) +// public Page listStores(@RequestParam(name = "page", defaultValue = "1") Integer page, +// @RequestParam(name = "rows", defaultValue = "10") Integer rows) { +// return shopStoreBaseService.getMobileStoreList(page, rows); +// } + } \ No newline at end of file diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreBaseService.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreBaseService.java index bd5f142d..0096abb5 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreBaseService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreBaseService.java @@ -39,7 +39,7 @@ public interface ShopStoreBaseService extends IBaseService { Map contents(); - Map getStoreList(Integer page, Integer rows); + Map getStoreList(Integer page, Integer rows,Map params); Map listsStoreCategory(); @@ -200,4 +200,6 @@ public interface ShopStoreBaseService extends IBaseService { */ Boolean updateStoreBizState(Integer storeId, Integer bizState); +// Page getMobileStoreList(Integer page, Integer rows); + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java index 5203c419..de640ceb 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java @@ -67,6 +67,7 @@ import com.suisung.mall.shop.store.service.*; import com.suisung.mall.shop.user.service.ShopUserFavoritesStoreService; import com.suisung.mall.shop.wechat.service.WxQrCodeService; import io.seata.spring.annotation.GlobalTransactional; +import org.apache.commons.collections.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -719,13 +720,19 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl paramsMap) { Map data; Map params = new HashMap<>(); Integer store_id = getParameter("store_id", Integer.class); Integer store_category_id = getParameter("store_category_id", Integer.class); + boolean findStore= MapUtils.getBoolean(paramsMap, "findStore", false); + if(ObjectUtil.isNull(store_category_id)){ + if(null!=paramsMap.get("store_category_id")){ + store_category_id=MapUtils.getInteger(paramsMap,"store_category_id"); + } + } Long distance = getParameter("distance", Long.class); if (CheckUtil.isEmpty(distance)) { distance = 20000000000L; @@ -743,9 +750,13 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl store_category_ids = new ArrayList<>(); + QueryWrapper storeCategoryQueryWrapper = new QueryWrapper<>(); + storeCategoryQueryWrapper.eq("store_category_parent_id", store_category_id); + storeCategoryQueryWrapper.select("store_category_id"); + List shopBaseStoreCategories= shopBaseStoreCategoryService.list(storeCategoryQueryWrapper); + store_category_ids.add(store_category_id); + for (ShopBaseStoreCategory storeCategory:shopBaseStoreCategories) { + store_category_ids.add(storeCategory.getStore_category_id()); + } + if(store_category_ids.size()>1){ + queryWrapper.in("store_category_id", store_category_ids); + }else { + queryWrapper.eq("store_category_id", store_category_id); + } params.put("store_category_id", store_category_id); } @@ -867,7 +891,11 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl store_activity_rows = new ArrayList<>(); List> items = (List>) data.get("items"); @@ -3800,5 +3828,35 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl getMobileStoreList(Integer page, Integer rows) { +// QueryWrapper queryWrapper=new QueryWrapper<>(); +// String store_category_id=getParameter("store_category_id"); +// String storeId=getParameter("store_id"); +// if(StringUtils.isEmpty(store_category_id)){ +// return new Page<>(page, rows); +// } +// QueryWrapper shopStoreBaseQueryWrapper=new QueryWrapper<>(); +// shopStoreBaseQueryWrapper.select("store_category_id"); +// shopStoreBaseQueryWrapper.eq("store_category_parent_id",store_category_id); +// +// List shopBaseStoreCategories= shopBaseStoreCategoryService.list(shopStoreBaseQueryWrapper); +// +// List shopBaseStoreCategoryIds=Arrays.asList(Integer.parseInt(store_category_id)); +// for (ShopBaseStoreCategory shopBaseStoreCategory : shopBaseStoreCategories) { +// shopBaseStoreCategoryIds.add(shopBaseStoreCategory.getStore_category_id()); +// } +// if(shopBaseStoreCategoryIds.size()>1){ +// queryWrapper.in("store_category_id", shopBaseStoreCategoryIds); +// }else { +// queryWrapper.eq("store_category_id", Integer.parseInt(store_category_id)); +// } +// if(StringUtils.isNotEmpty(storeId)){ +// queryWrapper.eq("store_id", Integer.parseInt(storeId)); +// } +// queryWrapper.eq("store_is_open", 1); +// return shopStoreBaseService.lists(queryWrapper,page,rows); +// } + } \ No newline at end of file