From d5bd38ef60044ef056a0525a6c5adff155ee55cd Mon Sep 17 00:00:00 2001 From: puhanshu <a9236326> Date: 星期四, 23 九月 2021 18:23:16 +0800 Subject: [PATCH] 便民服务小程序 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientProductServiceImpl.java | 130 ++++++++++++++++++++++++++++++++++++------- 1 files changed, 108 insertions(+), 22 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientProductServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientProductServiceImpl.java index 7249e17..147b533 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientProductServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ConvenientProductServiceImpl.java @@ -1,5 +1,23 @@ package com.panzhihua.service_community.service.impl; +import static java.util.Objects.isNull; +import static java.util.Objects.nonNull; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -9,8 +27,10 @@ import com.panzhihua.common.model.dtos.community.convenient.DeleteConvenientProductDTO; import com.panzhihua.common.model.dtos.community.convenient.OnShelfOrOffShelfProductDTO; import com.panzhihua.common.model.dtos.community.convenient.PageConvenientProductDTO; -import com.panzhihua.common.model.dtos.community.convenient.PageMerchantProductDTO; +import com.panzhihua.common.model.dtos.community.convenient.PageSearchDTO; import com.panzhihua.common.model.vos.R; +import com.panzhihua.common.model.vos.community.convenient.ConvenientProductLevelInfoVO; +import com.panzhihua.common.model.vos.community.convenient.ConvenientProductShelfVO; import com.panzhihua.common.model.vos.community.convenient.ConvenientProductSpecificationVO; import com.panzhihua.common.model.vos.community.convenient.ConvenientProductVO; import com.panzhihua.service_community.dao.ConvenientProductCategoryDAO; @@ -20,18 +40,6 @@ import com.panzhihua.service_community.model.dos.ConvenientProductDO; import com.panzhihua.service_community.model.dos.ConvenientProductSpecificationDO; import com.panzhihua.service_community.service.ConvenientProductService; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; - -import static java.util.Objects.isNull; -import static java.util.Objects.nonNull; /** * @title: ConvenientProductServiceImpl @@ -152,9 +160,9 @@ //图片填充 if (!convenientProductVOList.isEmpty()) { convenientProductVOList.forEach(product -> { - ConvenientProductSpecificationDO specificationDO = convenientProductSpecificationDAO.selectList(new LambdaQueryWrapper<ConvenientProductSpecificationDO>() - .eq(ConvenientProductSpecificationDO::getProductId, product.getId())).get(0); - product.setImage(specificationDO.getImage()); + List<ConvenientProductSpecificationDO> specificationDOList = convenientProductSpecificationDAO.selectList(new LambdaQueryWrapper<ConvenientProductSpecificationDO>() + .eq(ConvenientProductSpecificationDO::getProductId, product.getId()).isNotNull(ConvenientProductSpecificationDO::getImage)); + product.setImage(specificationDOList.isEmpty() ? null : specificationDOList.get(0).getImage()); }); } return R.ok(productVOIPage); @@ -192,15 +200,93 @@ /** * 小程序获取商家产品 - * @param pageMerchantProductDTO + * @param merchantId * @return */ @Override - public R getMerchantProduct(PageMerchantProductDTO pageMerchantProductDTO) { + public R getMerchantProduct(Long merchantId) { + List<ConvenientProductVO> productVOList = this.baseMapper.getMerchantProduct(merchantId); + List<ConvenientProductSpecificationVO> specificationVOList = this.baseMapper.getProductSpecifications(merchantId); + List<ConvenientProductLevelInfoVO> levelInfoVOList = new ArrayList<>(); + if (!productVOList.isEmpty()) { + productVOList.forEach(productVO -> { + List<ConvenientProductSpecificationVO> currentProductSpecificationVOList = new ArrayList<>(); + specificationVOList.forEach(specificationVO -> { + if (productVO.getId().equals(specificationVO.getProductId())) { + currentProductSpecificationVOList.add(specificationVO); + } + }); + productVO.setProductSpecificationVOList(currentProductSpecificationVOList); + }); + //分类 + Map<String, List<ConvenientProductVO>> levelGroup = productVOList.stream() + .collect(Collectors.groupingBy(ConvenientProductVO::getCategoryName)); + Set<String> categoryNames = levelGroup.keySet(); + Iterator<String> iterator = categoryNames.iterator(); + while (iterator.hasNext()) { + String categoryName = iterator.next(); + ConvenientProductLevelInfoVO levelInfoVOLevelInfoVO = new ConvenientProductLevelInfoVO(); + levelInfoVOLevelInfoVO.setCategoryName(categoryName); + List<ConvenientProductVO> productVOS = levelGroup.get(categoryName); + List<ConvenientProductVO> sortedProductVOS = productVOS.stream() + .sorted(Comparator.comparing(ConvenientProductVO::getOnShelfAt).reversed()).collect(Collectors.toList()); + levelInfoVOLevelInfoVO.setProductVOList(sortedProductVOS); + levelInfoVOList.add(levelInfoVOLevelInfoVO); + } + } + return R.ok(levelInfoVOList); + } + + @Override + public R pageSearchProduct(PageSearchDTO pageSearchDTO) { Page page = new Page<>(); - page.setSize(pageMerchantProductDTO.getPageSize()); - page.setCurrent(pageMerchantProductDTO.getPageNum()); - IPage<ConvenientProductVO> productVOIPage = this.baseMapper.getMerchantProduct(page, pageMerchantProductDTO); - return null; + page.setSize(pageSearchDTO.getPageSize()); + page.setCurrent(pageSearchDTO.getPageNum()); + IPage<ConvenientProductVO> productVOIPage = this.baseMapper.pageSearchProduct(page, pageSearchDTO); + List<ConvenientProductVO> records = productVOIPage.getRecords(); + if (!records.isEmpty()) { + List<Long> productIds = records.stream().map(ConvenientProductVO::getId).collect(Collectors.toList()); + List<ConvenientProductSpecificationDO> specificationDOS = convenientProductSpecificationDAO + .selectList(new LambdaQueryWrapper<ConvenientProductSpecificationDO>().in(ConvenientProductSpecificationDO::getProductId, productIds)); + List<ConvenientProductSpecificationVO> specificationVOList = new ArrayList<>(); + if (!specificationDOS.isEmpty()) { + specificationDOS.forEach(specificationDO -> { + ConvenientProductSpecificationVO specificationVO = new ConvenientProductSpecificationVO(); + BeanUtils.copyProperties(specificationDO, specificationVO); + specificationVOList.add(specificationVO); + }); + Map<Long, List<ConvenientProductSpecificationVO>> collect = specificationVOList + .stream().collect(Collectors.groupingBy(ConvenientProductSpecificationVO::getProductId)); + Set<Long> keySet = collect.keySet(); + Iterator<Long> iterator = keySet.iterator(); + while (iterator.hasNext()) { + Long productId = iterator.next(); + records.forEach(record -> { + if (record.getId().equals(productId)) { + record.setProductSpecificationVOList(collect.get(productId)); + } + }); + } + } + } + return R.ok(productVOIPage); + } + + @Override + public R incrProductView(Long productId) { + this.baseMapper.incrProductView(productId); + return R.ok(); + } + + @Override + public R getProductShelfNum(Long merchantId) { + int onShelfTotalNum = this.baseMapper.selectCount(new LambdaQueryWrapper<ConvenientProductDO>().eq(ConvenientProductDO::getMerchantId, merchantId) + .eq(ConvenientProductDO::getIsDel, false).eq(ConvenientProductDO::getOnShelf, true)); + int offShelfTotalNum = this.baseMapper.selectCount(new LambdaQueryWrapper<ConvenientProductDO>().eq(ConvenientProductDO::getMerchantId, merchantId) + .eq(ConvenientProductDO::getIsDel, false).eq(ConvenientProductDO::getOnShelf, false)); + ConvenientProductShelfVO convenientProductShelfVO = new ConvenientProductShelfVO(); + convenientProductShelfVO.setOnShelfTotalNum(onShelfTotalNum); + convenientProductShelfVO.setOffShelfTotalNum(offShelfTotalNum); + return R.ok(convenientProductShelfVO); } } -- Gitblit v1.7.1