diff --git a/waynboot-common/src/main/java/com/wayn/common/core/mapper/shop/GoodsMapper.java b/waynboot-common/src/main/java/com/wayn/common/core/mapper/shop/GoodsMapper.java index ffacbc7..99e9683 100644 --- a/waynboot-common/src/main/java/com/wayn/common/core/mapper/shop/GoodsMapper.java +++ b/waynboot-common/src/main/java/com/wayn/common/core/mapper/shop/GoodsMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.wayn.common.core.domain.shop.Goods; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,5 +16,5 @@ import com.wayn.common.core.domain.shop.Goods; */ public interface GoodsMapper extends BaseMapper { - IPage selectGoodsListPage(Page page, Goods goods); + IPage selectGoodsListPage(Page page,Goods goods); } diff --git a/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/controller/HomeController.java b/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/controller/HomeController.java index c817208..4ee686a 100644 --- a/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/controller/HomeController.java +++ b/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/controller/HomeController.java @@ -1,11 +1,17 @@ package com.wayn.mobile.api.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wayn.common.base.BaseController; import com.wayn.common.core.domain.shop.Banner; import com.wayn.common.core.domain.shop.Category; +import com.wayn.common.core.domain.shop.Goods; +import com.wayn.common.core.domain.system.Dict; import com.wayn.common.core.service.shop.IBannerService; import com.wayn.common.core.service.shop.ICategoryService; +import com.wayn.common.core.service.shop.IGoodsService; import com.wayn.common.util.R; +import com.wayn.mobile.api.service.HomeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,35 +22,20 @@ import java.util.concurrent.*; @RestController @RequestMapping("home") -public class HomeController { +public class HomeController extends BaseController { @Autowired - private IBannerService iBannerService; - - @Autowired - private ICategoryService iCategoryService; + private HomeService homeService; @PostMapping("index") - public R getInfo() { - R success = R.success(); - ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10, 10, - 0L, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue<>(), r -> new Thread(r,"首页线程")); - Callable> bannerCall = () -> iBannerService.list(new QueryWrapper().eq("status", 0).orderByAsc("sort_order")); - Callable> categoryCall = () -> iCategoryService.list(new QueryWrapper().eq("level", "L1").orderByAsc("sort_order")); - FutureTask> bannerTask = new FutureTask<>(bannerCall); - poolExecutor.submit(bannerTask); - FutureTask> categoryTask = new FutureTask<>(categoryCall); - poolExecutor.submit(categoryTask); - try { - success.add("bannerList", bannerTask.get()); - success.add("categoryList", categoryTask.get()); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } finally { - poolExecutor.shutdown(); - } - return success; + public R getHomeIndex() { + return homeService.getHomeIndexData(); + } + + @PostMapping("goodsList") + public R getGoodsList() { + Page page = getPage(); + return homeService.listGoodsPage(page); } } diff --git a/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/service/HomeService.java b/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/service/HomeService.java new file mode 100644 index 0000000..b9a474a --- /dev/null +++ b/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/service/HomeService.java @@ -0,0 +1,18 @@ +package com.wayn.mobile.api.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wayn.common.core.domain.shop.Goods; +import com.wayn.common.util.R; + +public interface HomeService { + + /** + * 获取首月数据(bannerList,category List,newGoodsList,hotGoodsList) + * @return + */ + R getHomeIndexData(); + + R getGoodsList(); + + R listGoodsPage(Page page); +} diff --git a/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/service/impl/HomeServiceImpl.java b/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/service/impl/HomeServiceImpl.java new file mode 100644 index 0000000..b316cb2 --- /dev/null +++ b/waynboot-mobile-api/src/main/java/com/wayn/mobile/api/service/impl/HomeServiceImpl.java @@ -0,0 +1,83 @@ +package com.wayn.mobile.api.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wayn.common.base.BaseController; +import com.wayn.common.core.domain.shop.Banner; +import com.wayn.common.core.domain.shop.Category; +import com.wayn.common.core.domain.shop.Goods; +import com.wayn.common.core.service.shop.IBannerService; +import com.wayn.common.core.service.shop.ICategoryService; +import com.wayn.common.core.service.shop.IGoodsService; +import com.wayn.common.util.R; +import com.wayn.mobile.api.service.HomeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.concurrent.*; + +@Service +public class HomeServiceImpl implements HomeService { + @Autowired + private IBannerService iBannerService; + + @Autowired + private ICategoryService iCategoryService; + + @Autowired + private IGoodsService IGoodsService; + + @Override + public R getHomeIndexData() { + R success = R.success(); + ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10, 10, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue<>(), r -> new Thread(r, "首页线程")); + Callable> bannerCall = () -> iBannerService.list(new QueryWrapper().eq("status", 0).orderByAsc("sort_order")); + Callable> categoryCall = () -> iCategoryService.list(new QueryWrapper().eq("level", "L1").orderByAsc("sort_order")); + Callable> newGoodsCall = () -> IGoodsService.list(new QueryWrapper() + .eq("is_new", true) + .eq("is_on_sale", true) + .orderByAsc("create_time") + .last("limit 6")); + Callable> hotGoodsCall = () -> IGoodsService.list(new QueryWrapper() + .eq("is_hot", true) + .eq("is_on_sale", true) + .orderByAsc("create_time") + .last("limit 6")); + FutureTask> bannerTask = new FutureTask<>(bannerCall); + FutureTask> categoryTask = new FutureTask<>(categoryCall); + FutureTask> newGoodsTask = new FutureTask<>(newGoodsCall); + FutureTask> hotGoodsTask = new FutureTask<>(hotGoodsCall); + poolExecutor.submit(bannerTask); + poolExecutor.submit(categoryTask); + poolExecutor.submit(newGoodsTask); + poolExecutor.submit(hotGoodsTask); + try { + success.add("bannerList", bannerTask.get()); + success.add("categoryList", categoryTask.get()); + success.add("newGoodsList", newGoodsTask.get()); + success.add("hotGoodsList", hotGoodsTask.get()); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } finally { + poolExecutor.shutdown(); + } + return success; + } + + @Override + public R getGoodsList() { + + return null; + } + + @Override + public R listGoodsPage(Page page) { + IPage goodsIPage = IGoodsService.listPage(page, new Goods()); + return R.success().add("data", goodsIPage.getRecords()); + } + +}