From d4cfd54ed34372e9bfcc21c032dac1a606ea0ff3 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Thu, 3 Apr 2025 11:14:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B8=B8=E5=AE=A2=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E5=95=86=E5=93=81=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sociology/service/ShopProductService.java | 2 + .../service/impl/ShopProductServiceImpl.java | 60 ++++++++++++++++++- .../sys/controller/VisitorController.java | 2 +- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/peanut/modules/sociology/service/ShopProductService.java b/src/main/java/com/peanut/modules/sociology/service/ShopProductService.java index 500f41ab..d0317d50 100644 --- a/src/main/java/com/peanut/modules/sociology/service/ShopProductService.java +++ b/src/main/java/com/peanut/modules/sociology/service/ShopProductService.java @@ -15,4 +15,6 @@ public interface ShopProductService extends IService { List getProductListForCourse(Integer CatalogueId); Map getProductDetail(Integer productId); + + Map getProductDetailVistor(Integer productId); } diff --git a/src/main/java/com/peanut/modules/sociology/service/impl/ShopProductServiceImpl.java b/src/main/java/com/peanut/modules/sociology/service/impl/ShopProductServiceImpl.java index 010e9ecc..f5ae1fce 100644 --- a/src/main/java/com/peanut/modules/sociology/service/impl/ShopProductServiceImpl.java +++ b/src/main/java/com/peanut/modules/sociology/service/impl/ShopProductServiceImpl.java @@ -70,8 +70,6 @@ public class ShopProductServiceImpl extends ServiceImpl flag = new HashMap<>(); if (userVipService.isVip(ShiroUtils.getUId())&&product.getIsVipPrice()==1){ product.setVipPrice(shopProductService.getVipPrice(product)); - }else { - product.setVipPrice(BigDecimal.ZERO); } flag.put("detail",product);//基础信息 //查询包含的书 @@ -127,7 +125,6 @@ public class ShopProductServiceImpl extends ServiceImpl shopProducts = (List)flag.get("GLProducts"); if (shopProducts.size()>0){ for (ShopProduct shopProduct : shopProducts) { - shopProduct.setVipPrice(BigDecimal.ZERO); if (userVipService.isVip(ShiroUtils.getUId())&&shopProduct.getIsVipPrice()==1){ shopProduct.setVipPrice(shopProductService.getVipPrice(shopProduct)); } @@ -136,4 +133,61 @@ public class ShopProductServiceImpl extends ServiceImpl getProductDetailVistor(Integer productId) { + ShopProduct product = this.getById(productId); + HashMap flag = new HashMap<>(); + flag.put("detail",product);//基础信息 + //查询包含的书 + MPJLambdaWrapper shopProductBookEntityMPJLambdaWrapper = new MPJLambdaWrapper<>(); + shopProductBookEntityMPJLambdaWrapper.selectAll(BookEntity.class); + shopProductBookEntityMPJLambdaWrapper.leftJoin(BookEntity.class,BookEntity::getId,ShopProductBookEntity::getBookId); + shopProductBookEntityMPJLambdaWrapper.eq(ShopProductBookEntity::getProductId,productId); + List bookEntities = shopProductBookDao.selectJoinList(BookEntity.class, shopProductBookEntityMPJLambdaWrapper); + flag.put("books",bookEntities); + //查询包含的课 + MPJLambdaWrapper shopProductCourseEntityMPJLambdaWrapper = new MPJLambdaWrapper<>(); + shopProductCourseEntityMPJLambdaWrapper.selectAll(CourseEntity.class); + shopProductCourseEntityMPJLambdaWrapper.leftJoin(CourseEntity.class,CourseEntity::getId,ShopProductCourseEntity::getCourseId); + shopProductCourseEntityMPJLambdaWrapper.eq(ShopProductCourseEntity::getProductId,productId); + List courseEntities = shopProductCourseDao.selectJoinList(CourseEntity.class, shopProductCourseEntityMPJLambdaWrapper); + flag.put("courses",courseEntities); + //查询包含此商品的所有商品的列表 + List book_product_ids = new ArrayList<>(); + if(bookEntities.size()>0){ + List collect = bookEntities.stream().map(BookEntity::getId).collect(Collectors.toList()); + LambdaQueryWrapper shopProductBookEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + shopProductBookEntityLambdaQueryWrapper.in(ShopProductBookEntity::getBookId,collect); + shopProductBookEntityLambdaQueryWrapper.groupBy(ShopProductBookEntity::getProductId); + shopProductBookEntityLambdaQueryWrapper.having("count(product_id)>="+collect.size()); + List shopProductBookEntities = shopProductBookDao.selectList(shopProductBookEntityLambdaQueryWrapper); + book_product_ids = shopProductBookEntities.stream().map(ShopProductBookEntity::getProductId).collect(Collectors.toList()); + } + List course_product_ids = new ArrayList<>(); + if(courseEntities.size()>0){ + List collect = courseEntities.stream().map(CourseEntity::getId).collect(Collectors.toList()); + LambdaQueryWrapper shopProductCourseEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + shopProductCourseEntityLambdaQueryWrapper.in(ShopProductCourseEntity::getCourseId,collect); + shopProductCourseEntityLambdaQueryWrapper.groupBy(ShopProductCourseEntity::getProductId); + shopProductCourseEntityLambdaQueryWrapper.having("count(product_id)>="+collect.size()); + List shopProductCourseEntities = shopProductCourseDao.selectList(shopProductCourseEntityLambdaQueryWrapper); + course_product_ids = shopProductCourseEntities.stream().map(ShopProductCourseEntity::getProductId).collect(Collectors.toList()); + } + if(book_product_ids.size()==0&&course_product_ids.size()==0){ + List shopProducts = new ArrayList<>(); + shopProducts.add(product); + flag.put("GLProducts",shopProducts); + } else if (book_product_ids.size()>0&&course_product_ids.size()>0) { + List intersection = new ArrayList<>(book_product_ids); + intersection.retainAll(course_product_ids); + List shopProducts = this.getBaseMapper().selectList(new LambdaQueryWrapper().in(ShopProduct::getProductId, intersection)); + flag.put("GLProducts",shopProducts); + } else { + List is = new ArrayList<>(CollectionUtils.union(book_product_ids, course_product_ids)); + List shopProducts = this.getBaseMapper().selectList(new LambdaQueryWrapper().in(ShopProduct::getProductId, is)); + flag.put("GLProducts",shopProducts); + } + return flag; + } } diff --git a/src/main/java/com/peanut/modules/sys/controller/VisitorController.java b/src/main/java/com/peanut/modules/sys/controller/VisitorController.java index 6cc8f9ff..2a5677f3 100644 --- a/src/main/java/com/peanut/modules/sys/controller/VisitorController.java +++ b/src/main/java/com/peanut/modules/sys/controller/VisitorController.java @@ -251,7 +251,7 @@ public class VisitorController { //商品详情 @RequestMapping("/getProductDetail") public R getProductDetail(@RequestBody Map map){ - Map detail = medicineShopProductService.getProductDetail(map.get("productId")); + Map detail = medicineShopProductService.getProductDetailVistor(map.get("productId")); return R.ok().put("data",detail); }