zhijiezhao 1 mesiac pred
rodič
commit
ffe176e576

+ 12 - 1
src/main/java/com/caimei365/commodity/mapper/PageMapper.java

@@ -122,6 +122,7 @@ public interface PageMapper {
 
     /**
      * 获取用户组织
+     *
      * @param userId
      * @return
      */
@@ -134,6 +135,7 @@ public interface PageMapper {
 
     /**
      * 商品详情页 组织
+     *
      * @param productId
      * @return
      */
@@ -184,7 +186,7 @@ public interface PageMapper {
     /**
      * 获取头部菜单
      */
-    List<TopMenuVo> getTopMenus(@Param("type") Integer type,@Param("source")Integer source);
+    List<TopMenuVo> getTopMenus(@Param("type") Integer type, @Param("source") Integer source);
 
     /**
      * 获取底部链接分类
@@ -288,6 +290,7 @@ public interface PageMapper {
 
     /**
      * 获取关键词
+     *
      * @param ids
      * @return
      */
@@ -509,4 +512,12 @@ public interface PageMapper {
     void insertVote(String ip, Integer userId, Integer id, Integer voteType);
 
     List<CenterImageVo> findCenterImageList(Integer source);
+
+    List<ShopImageVo> getSuppliers(Integer source);
+
+    List<ProductItemVo> getRecommendProducts(Integer source);
+
+    List<NewPageZone> getPageZone(Integer source);
+
+    List<NewPageZoneImage> getZoneImageList(@Param("id") Integer id, @Param("source") Integer source);
 }

+ 27 - 0
src/main/java/com/caimei365/commodity/model/vo/NewPageZone.java

@@ -0,0 +1,27 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class NewPageZone implements Serializable {
+
+    private Integer id;
+    private String floorTitle;
+    private String floorDetail;
+    private String sort;
+    /**
+     * Pc端状态 0停用 1启用
+     */
+    private Integer wwwEnabledStatus;
+    /**
+     * CRM端状态 0停用 1启用
+     */
+    private Integer crmEnabledStatus;
+
+    private List<NewPageZoneImage> imageList;
+
+    private List<ProductItemVo> products;
+}

+ 23 - 0
src/main/java/com/caimei365/commodity/model/vo/NewPageZoneImage.java

@@ -0,0 +1,23 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Map;
+
+@Data
+public class NewPageZoneImage implements Serializable {
+    private Integer imageId;
+    private Integer zoneId;
+    private String image;
+    private String crmImage;
+    private String title;
+    private String crmTitle;
+    private String link;
+    private String crmLink;
+    private Integer wwwEnabledStatus;
+    private Integer crmEnabledStatus;
+    private Integer sort;
+    private Integer linkType;
+    private Map<String,Object> linkParam;
+}

+ 2 - 0
src/main/java/com/caimei365/commodity/model/vo/ProductItemVo.java

@@ -76,6 +76,8 @@ public class ProductItemVo implements Serializable {
      * 主图mainImage
      */
     private String image;
+
+    private String mainImage;
     /**
      * 品牌
      */

+ 3 - 0
src/main/java/com/caimei365/commodity/model/vo/ShopImageVo.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -69,4 +70,6 @@ public class ShopImageVo implements Serializable {
      * 链接包含的参数
      */
     private Map<String,Object> linkParam;
+
+    private List<ProductItemVo> products;
 }

+ 60 - 40
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -158,24 +158,48 @@ public class PageServiceImpl implements PageService {
         Map<String, Object> map = new HashMap<>(6);
         //楼层管理
         source = source == null ? 1 : source;
-        List<PageFloorVo> homePageFloor = pageMapper.getHomePageFloor(source);
-        Iterator<PageFloorVo> floorIterator = homePageFloor.iterator();
-        while (floorIterator.hasNext()) {
-            PageFloorVo floor = floorIterator.next();
-            FloorContentVo floorContent = pageMapper.getFloorContentById(floor.getId());
-            setFloorLinkType(floorContent);
-            floor.setFloorContent(floorContent);
-            List<FloorImageVo> floorImageList = pageMapper.getFloorImageById(floor.getId(), source);
-            if (floorImageList == null || floorImageList.size() == 0) {
-                floorIterator.remove();
-                continue;
-            }
-            setFloorImageProduct(userId, floorImageList, source);
-            floor.setFloorImageList(floorImageList);
+//        List<PageFloorVo> homePageFloor = pageMapper.getHomePageFloor(source);
+//        Iterator<PageFloorVo> floorIterator = homePageFloor.iterator();
+//        while (floorIterator.hasNext()) {
+//            PageFloorVo floor = floorIterator.next();
+//            FloorContentVo floorContent = pageMapper.getFloorContentById(floor.getId());
+//            setFloorLinkType(floorContent);
+//            floor.setFloorContent(floorContent);
+//            List<FloorImageVo> floorImageList = pageMapper.getFloorImageById(floor.getId(), source);
+//            if (floorImageList == null || floorImageList.size() == 0) {
+//                floorIterator.remove();
+//                continue;
+//            }
+//            setFloorImageProduct(userId, floorImageList, source);
+//            floor.setFloorImageList(floorImageList);
+//        }
+//        map.put("homePageFloor", homePageFloor);
+        /**
+         * 专区
+         */
+        List<NewPageZone> zones = pageMapper.getPageZone(source);
+        for (NewPageZone zone : zones) {
+            Integer finalSource = source;
+            List<NewPageZoneImage> imageList = pageMapper.getZoneImageList(zone.getId(), finalSource);
+            List<ProductItemVo> products = zone.getProducts();
+            imageList.forEach(i -> {
+                Integer linkType = AppletsLinkUtil.getLinkType(i.getLink());
+                i.setLinkType(linkType);
+                i.setLinkParam(AppletsLinkUtil.getLinkParam(linkType, i.getLink()));
+            });
+            zone.setImageList(imageList);
+            products.forEach(p -> {
+                priceUtilService.setProductDetails(userId, p, 0);
+                //优惠券标识
+                Boolean couponsLogo = setCouponsLogo(userId, p.getProductId(), finalSource);
+                p.setCouponsLogo(couponsLogo);
+            });
         }
-        map.put("homePageFloor", homePageFloor);
-
+        map.put("zones", zones);
 
+        /**
+         *  新品橱窗
+         */
         List<PageFloorVo> pageFloorList = pageMapper.getPageFloor(source);
         Iterator<PageFloorVo> floorIterators = pageFloorList.iterator();
         while (floorIterators.hasNext()) {
@@ -200,39 +224,35 @@ public class PageServiceImpl implements PageService {
         }
         map.put("pageFloorList", pageFloorList);
 
-        // 优质供应商
-        ShopFloorVo supplierImage = pageMapper.getSupplierFloorImage();
-        List<ShopImageVo> supplierList = pageMapper.getSupplierImage(source);
+        /**
+         * 优质供应商改版,当前版本无头图,直接返回供应商list
+         */
+        List<ShopImageVo> supplierList = pageMapper.getSuppliers(source);
         supplierList.forEach(supplier -> {
             Integer linkType = AppletsLinkUtil.getLinkType(supplier.getLink());
             supplier.setLinkType(linkType);
             supplier.setLinkParam(AppletsLinkUtil.getLinkParam(linkType, supplier.getLink()));
         });
-        if (supplierImage != null) {
-            supplierImage.setQualitySupplierList(supplierList);
-            if (StringUtils.isNotBlank(supplierImage.getWwwLink())) {
-                Integer linkType = AppletsLinkUtil.getLinkType(supplierImage.getWwwLink());
-                supplierImage.setLinkType(linkType);
-                supplierImage.setLinkParam(AppletsLinkUtil.getLinkParam(linkType, supplierImage.getWwwLink()));
-            }
-        }
-        map.put("supplierImage", supplierImage);
+        map.put("supplierImage", supplierList);
 
-//        List<FloorImageVo> floorImageList = pageMapper.getFloorImageById(floor.getId(), source);
-//        setFloorImageProduct(userId, floorImageList, source);
-//        pageFloorList.forEach(pageFloor->{
-//            if (floorImageList == null || floorImageList.size() == 0) {
-//                floorIterator.remove();
-//            }
-//            pageFloor.setFloorImageList(floorImageList);
-//            if (1 == pageFloor.getFloorType()) {
-//                List<ProductPo> newProductList = pageMapper.getNewFloorList(null);
-//                pageFloor.setNewfloorlist(newProductList);
-//            }
-//        });
+        /**
+         * 推荐商品
+         */
+        List<ProductItemVo> products = pageMapper.getRecommendProducts(source);
+        for (ProductItemVo product : products) {
+            priceUtilService.setProductDetails(userId, product, 0);
+            //优惠券标识
+            Boolean couponsLogo = setCouponsLogo(userId, product.getProductId(), source);
+            product.setCouponsLogo(couponsLogo);
+        }
+        map.put("recommendProducts", products);
         return ResponseJson.success(map);
     }
 
+    private List<NewPageZone> getPageZone(Integer source) {
+        return pageMapper.getPageZone(source);
+    }
+
     /**
      * 首页基础数据(小程序)
      *

+ 190 - 0
src/main/resources/mapper/PageMapper.xml

@@ -1,6 +1,56 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.commodity.mapper.PageMapper">
+
+    <resultMap id="shopImages" type="com.caimei365.commodity.model.vo.ShopImageVo">
+        <id property="id" column="id"/>  <!-- 主键 -->
+        <!-- 其他的字段映射 -->
+        <result property="supplierName" column="supplierName"/>
+        <result property="image" column="image"/>
+        <result property="link" column="link"/>
+        <result property="sort" column="sort"/>
+        <result property="wwwEnabledStatus" column="wwwEnabledStatus"/>
+        <result property="crmEnabledStatus" column="crmEnabledStatus"/>
+        <result property="delFlag" column="delFlag"/>
+        <!-- 嵌套的ProductItemVo集合 -->
+        <collection property="products" ofType="com.caimei365.commodity.model.vo.ProductItemVo">
+            <id property="productId" column="productId"/>
+            <result property="name" column="name"/>
+            <result property="mainImage" column="mainImage"/>
+        </collection>
+    </resultMap>
+
+    <resultMap id="pageZones" type="com.caimei365.commodity.model.vo.NewPageZone">
+        <id property="id" column="id"/>
+        <result property="floorTitle" column="floorTitle"/>
+        <result property="floorDetail" column="floorDetail"/>
+        <result property="sort" column="sort"/>
+        <result property="wwwEnabledStatus" column="wwwEnabledStatus"/>
+        <result property="crmEnabledStatus" column="crmEnabledStatus"/>
+
+        <collection property="products" ofType="com.caimei365.commodity.model.vo.ProductItemVo">
+            <id property="productId" column="productId"/>
+            <result property="name" column="name"/>
+            <result property="mainImage" column="mainImage"/>
+            <result property="actStatus" column="actStatus"/>
+            <result property="visibility" column="visibility"/>
+            <result property="code" column="productCode"/>
+            <result property="priceFlag" column="priceFlag"/>
+            <result property="shopId" column="shopId"/>
+            <result property="taxRate" column="taxRate"/>
+            <result property="includedTax" column="includedTax"/>
+            <result property="invoiceType" column="invoiceType"/>
+            <result property="productCategory" column="productCategory"/>
+            <result property="validFlag" column="validFlag"/>
+            <result property="commodityType" column="commodityType"/>
+            <result property="bigTypeId" column="bigTypeId"/>
+            <result property="smallTypeId" column="smallTypeID"/>
+            <result property="tinyTypeId" column="tinyTypeId"/>
+            <result property="productType" column="productType"/>
+            <result property="brandID" column="brandID"/>
+        </collection>
+    </resultMap>
+
     <delete id="delSku">
         delete
         from cm_sku
@@ -1654,4 +1704,144 @@
             and wwwEnabledStatus = 1
         </if>
     </select>
+    <select id="getSuppliers" resultMap="shopImages">
+        select
+        npq.id, npq.supplierName, npq.image, npq.link, npq.sort, npq.wwwEnabledStatus, npq.crmEnabledStatus,
+        npq.delFlag,p.name,p.mainImage,p.productId
+        from new_page_quality_supplier npq
+        left join new_page_quality_supplier_product nsp on npq.id = nsp.supplierId
+        left join product p on nsp.productId = p.productID
+        where
+        npq.delFlag = 0
+        <if test="source == 1">
+            and npq.wwwEnabledStatus = 1
+        </if>
+        <if test="source == 2">
+            and npq.crmEnabledStatus = 1
+        </if>
+        order by - npq.sort desc
+    </select>
+
+    <select id="getRecommendProducts" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
+        SELECT DISTINCT (select price
+                         from cm_sku
+                         where productID = p.productID
+                           and organizeId = 0
+                         order by price asc
+                         limit 1)         as price,
+                        (select unit
+                         from cm_sku
+                         where productID = p.productID
+                           and organizeId = 0
+                         order by price asc
+                         limit 1)         as unit,
+                        (select normalPrice
+                         from cm_sku
+                         where productID = p.productID
+                           and organizeId = 0
+                         order by price asc
+                         limit 1)         as
+                                             normalPrice,
+                        (select minBuyNumber
+                         from cm_sku
+                         where productID = p.productID
+                           and organizeId = 0
+                         order by price asc
+                         limit 1)         as
+                                             minBuyNumber,
+                        (select ladderPriceFlag
+                         from cm_sku
+                         where productID = p.productID
+                           and organizeId = 0
+                         order by price asc
+                         limit 1)         as
+                                             ladderPriceFlag,
+                        p.productID,
+                        p.actStatus,
+                        p.name,
+                        p.visibility,
+                        p.mainImage       as image,
+                        p.productCode     as code,
+                        p.priceFlag,
+                        p.shopID          as shopId,
+                        p.taxPoint        as taxRate,
+                        p.includedTax,
+                        p.invoiceType,
+                        p.productCategory as productCategory,
+                        copi.validFlag,
+                        p.commodityType,
+                        p.bigTypeID       as bigTypeId,
+                        p.smallTypeID     as smallTypeId,
+                        p.tinyTypeID      as tinyTypeId,
+                        p.productType,
+                        p.brandID
+        from cm_page_recommend_product cprp
+                 left join product p on cprp.productId = p.productId
+                 left join cm_organize_product_info copi on copi.productId = p.productId
+        where copi.organizeId = 0
+          and copi.validFlag = 2
+        order by cprp.sort asc
+    </select>
+
+    <select id="getPageZone" resultMap="pageZones">
+        select npz.id,
+        npz.floorTitle,
+        npz.floorDetail,
+        npz.wwwEnabledStatus,
+        npz.crmEnabledStatus,
+        p.productId,
+        p.name,
+        p.mainImage,
+        p.actStatus,
+        p.visibility,
+        p.productCode as code,
+        p.priceFlag,
+        p.shopId,
+        p.taxPoint as taxRate,
+        p.includedTax,
+        p.invoiceType,
+        p.productCategory,
+        copi.validFlag,
+        p.commodityType,
+        p.bigTypeId,
+        p.smallTypeId,
+        p.tinyTypeId,
+        p.productType,
+        p.brandID
+        from new_page_zone npz
+        left join(select * from new_page_zone_product order by sort)npzp on npz.id = npzp.zoneId
+        left join product p on npzp.productId = p.productId
+        left join cm_organize_product_info copi on copi.productId = p.productId
+        where  npz.delFlag = 0
+        <if test="source == 1">
+            and npz.wwwEnabledStatus = 1
+        </if>
+        <if test="source == 2">
+            and npz.crmEnabledStatus = 1
+        </if>
+        order by npz.sort
+    </select>
+
+    <select id="getZoneImageList" resultType="com.caimei365.commodity.model.vo.NewPageZoneImage">
+        select id as imageId,
+               zoneId,
+               image,
+               crmImage,
+               title,
+               crmTitle,
+               link,
+               crmLink,
+               wwwEnabledStatus,
+               crmEnabledStatus,
+               sort
+        from new_page_zone_image
+        where zoneId = #{id}
+        <if test="source == 1">
+            and wwwEnabledStatus = 1
+        </if>
+        <if test="source == 2">
+            and crmEnabledStatus = 1
+        </if>
+        order by sort
+    </select>
 </mapper>