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