Aslee преди 3 години
родител
ревизия
ad003e9024

+ 8 - 0
pom.xml

@@ -171,6 +171,14 @@
 			<artifactId>reactor-test</artifactId>
 			<scope>test</scope>
 		</dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/ffmpeg -->
+        <dependency>
+            <groupId>org.bytedeco.javacpp-presets</groupId>
+            <artifactId>ffmpeg</artifactId>
+            <version>3.2.1-1.3</version>
+        </dependency>
+
     </dependencies>
 
     <profiles>

+ 8 - 0
src/main/java/com/caimei365/commodity/mapper/ShopMapper.java

@@ -147,4 +147,12 @@ public interface ShopMapper {
      * 供应商-更新商品编码
      */
     void updateProductCode(String productCode, Integer productId);
+    /**
+     *  获取商品pc云上美博会活动状态
+     */
+    Integer getPcBeautyStatusById(Integer productId);
+    /**
+     *  获取商品小程序云上美博会活动状态
+     */
+    Integer getAppletsBeautyStatusById(Integer productId);
 }

+ 13 - 0
src/main/java/com/caimei365/commodity/model/vo/CmPageVo.java

@@ -2,6 +2,7 @@ package com.caimei365.commodity.model.vo;
 
 import lombok.Data;
 import java.io.Serializable;
+import java.util.Date;
 import java.util.Map;
 
 /**
@@ -55,4 +56,16 @@ public class CmPageVo implements Serializable {
      * 链接包含的参数
      */
     private Map<String, Object> linkParam;
+    /**
+     * 红包开始时间
+     */
+    private String redPacketBeginTime;
+    /**
+     * 红包结束时间
+     */
+    private String redPacketEndTime;
+    /**
+     * 资讯信息浮窗状态:0停用,1启用
+     */
+    private Integer infoBarStatus;
 }

+ 69 - 0
src/main/java/com/caimei365/commodity/model/vo/FloorContentVo.java

@@ -32,6 +32,11 @@ public class FloorContentVo implements Serializable {
      */
     private String templateType;
 
+    /**
+     * 模板分类,1图片,2文章,3商品,4视频
+     */
+    private Integer templateClassify;
+
     /**
      * 网站广告图1
      */
@@ -47,6 +52,16 @@ public class FloorContentVo implements Serializable {
      */
     private String pcAdsImage3;
 
+    /**
+     * 网站广告图4
+     */
+    private String pcAdsImage4;
+
+    /**
+     * 网站广告图5
+     */
+    private String pcAdsImage5;
+
     /**
      * 移动端广告图1
      */
@@ -62,6 +77,16 @@ public class FloorContentVo implements Serializable {
      */
     private String appletsAdsImage3;
 
+    /**
+     * 移动端广告图4
+     */
+    private String appletsAdsImage4;
+
+    /**
+     * 移动端广告图5
+     */
+    private String appletsAdsImage5;
+
     /**
      * 广告跳转链接1
      */
@@ -76,6 +101,32 @@ public class FloorContentVo implements Serializable {
      * 广告跳转链接3
      */
     private String adsLink3;
+
+    /**
+     * 广告跳转链接4
+     */
+    private String adsLink4;
+
+    /**
+     * 广告跳转链接5
+     */
+    private String adsLink5;
+
+    /**
+     * 展示日期1
+     */
+    private String displayDate1;
+
+    /**
+     * 展示日期2
+     */
+    private String displayDate2;
+
+    /**
+     * 展示日期3
+     */
+    private String displayDate3;
+
     /**
      * 链接类型 -1未知类型 1二级页面 2项目仪器 3直播页面 4自由页面 5商品详情 6项目仪器详情
      * 7供应商主页 8专题活动页 9二手市场介绍 10二手商品列表 11二手商品发布 12商品搜索 13信息详情
@@ -104,4 +155,22 @@ public class FloorContentVo implements Serializable {
      * 链接包含的参数
      */
     private Map<String, Object> linkParam3;
+
+    /**
+     * 同上
+     */
+    private Integer linkType4;
+    /**
+     * 链接包含的参数
+     */
+    private Map<String, Object> linkParam4;
+
+    /**
+     * 同上
+     */
+    private Integer linkType5;
+    /**
+     * 链接包含的参数
+     */
+    private Map<String, Object> linkParam5;
 }

+ 15 - 0
src/main/java/com/caimei365/commodity/model/vo/FloorImageVo.java

@@ -38,6 +38,11 @@ public class FloorImageVo implements Serializable {
      */
     private String name;
 
+    /**
+     * 宣传内容
+     */
+    private String content;
+
     /**
      * 跳转链接
      */
@@ -53,6 +58,11 @@ public class FloorImageVo implements Serializable {
      */
     private String appletsImage;
 
+    /**
+     * 小程序内容宣传图
+     */
+    private String adsImage;
+
     /**
      * 标签
      */
@@ -73,6 +83,11 @@ public class FloorImageVo implements Serializable {
      */
     private Integer sort;
 
+    /**
+     * 展示日期排序值
+     */
+    private Integer displaySort;
+
     /**
      * 创建时间
      */

+ 8 - 0
src/main/java/com/caimei365/commodity/model/vo/PageFloorVo.java

@@ -23,6 +23,14 @@ public class PageFloorVo implements Serializable {
      * 楼层相关商品图片
      */
     private List<FloorImageVo> floorImageList;
+    /**
+     * 楼层相关商品图片2
+     */
+    private List<FloorImageVo> floorImageList2;
+    /**
+     * 楼层相关商品图片3
+     */
+    private List<FloorImageVo> floorImageList3;
     private List<PageFloorVo> subFloors;
     private List<ImageLinkVo> floorData;
     /**

+ 8 - 0
src/main/java/com/caimei365/commodity/model/vo/ProductDetailVo.java

@@ -294,4 +294,12 @@ public class ProductDetailVo implements Serializable {
      * 培训费用(售价未包含)
      */
     private BigDecimal trainingFee;
+    /**
+     * 商品pc端活动类型,0无活动,1云上美博会
+     */
+    private Integer pcActType;
+    /**
+     * 商品小程序端活动类型,0无活动,1云上美博会
+     */
+    private Integer appletsActType;
 }

+ 1 - 0
src/main/java/com/caimei365/commodity/service/PageService.java

@@ -6,6 +6,7 @@ import com.caimei365.commodity.model.vo.ProductRepairVo;
 import com.caimei365.commodity.model.search.ProductListVo;
 import com.caimei365.commodity.model.vo.*;
 
+import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 

+ 79 - 7
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -25,6 +25,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -213,8 +215,9 @@ public class PageServiceImpl implements PageService {
      * @param userId 用户id
      * @param source 来源 : 1 网站 ; 2 小程序
      */
+    @Cacheable(value = "getPageFloorData", key = "#userId +'-'+ #pageId +'-'+ #source", unless = "#result == null")
     @Override
-    public ResponseJson<Map<String, Object>> getPageData(Integer pageId, Integer userId, Integer source) {
+    public ResponseJson<Map<String, Object>> getPageData(Integer pageId, Integer userId, Integer source){
         if (pageId == null) {
             return ResponseJson.error("参数异常: 页面id不能为空!", null);
         }
@@ -228,13 +231,51 @@ public class PageServiceImpl implements PageService {
             page.setLinkParam(AppletsLinkUtil.getLinkParam(linkType,page.getHeadLink()));
         }
         List<PageFloorVo> floorList = pageMapper.getFloorByPageId(pageId, source);
-        for (PageFloorVo floor : floorList) {
+        ListIterator<PageFloorVo> iterator = floorList.listIterator();
+        while (iterator.hasNext()) {
+            PageFloorVo floor = iterator.next();
             FloorContentVo floorContent = pageMapper.getFloorContentByCentreId(floor.getId());
-            setFloorLinkType(floorContent);
-            floor.setFloorContent(floorContent);
-            List<FloorImageVo> floorImageList = pageMapper.getFloorImageByCentreId(floor.getId(), source);
-            setFloorImageProduct(userId, floorImageList);
-            floor.setFloorImageList(floorImageList);
+            if (null == floorContent) {
+                iterator.remove();
+            } else {
+                setFloorLinkType(floorContent);
+                List<FloorImageVo> floorImageList = pageMapper.getFloorImageByCentreId(floor.getId(), source);
+                setFloorImageProduct(userId, floorImageList);
+                floor.setFloorImageList(floorImageList);
+                String templateTypeStr = floorContent.getTemplateType();
+                if (StringUtils.isNotEmpty(templateTypeStr)) {
+                    int templateType = Integer.parseInt(floorContent.getTemplateType());
+                    // 日期切换模板处理
+                    if (templateType == 1 || templateType == 2 || (templateType >= 7 && templateType <= 10)) {
+                        floorContent.setTemplateClassify(1);
+                    } else if (templateType >= 3 && templateType <= 6) {
+                        floorContent.setTemplateClassify(2);
+                    } else if (templateType >= 11 && templateType <= 21) {
+                        floorContent.setTemplateClassify(3);
+                    } else if (templateType >= 22 && templateType <= 25) {
+                        floorContent.setTemplateClassify(1);
+                        List<FloorImageVo> floorImageList1 = new ArrayList<>();
+                        List<FloorImageVo> floorImageList2 = new ArrayList<>();
+                        List<FloorImageVo> floorImageList3 = new ArrayList<>();
+                        floorImageList.forEach(image -> {
+                            // 根据展示日期排序分割进3个列表中
+                            if (1 == image.getDisplaySort()) {
+                                floorImageList1.add(image);
+                            } else if (2 == image.getDisplaySort()) {
+                                floorImageList2.add(image);
+                            } else if (3 == image.getDisplaySort()) {
+                                floorImageList3.add(image);
+                            }
+                        });
+                        floor.setFloorImageList(floorImageList1);
+                        floor.setFloorImageList2(floorImageList2);
+                        floor.setFloorImageList3(floorImageList3);
+                    } else if (templateType >= 26 && templateType <= 29) {
+                        floorContent.setTemplateClassify(4);
+                    }
+                }
+                floor.setFloorContent(floorContent);
+            }
         }
         Map<String, Object> map = new HashMap<>(2);
         map.put("page", page);
@@ -278,6 +319,22 @@ public class PageServiceImpl implements PageService {
         }
         FloorContentVo floorContent = pageMapper.getFloorContentByCentreId(centreId);
         setFloorLinkType(floorContent);
+        String templateTypeStr = floorContent.getTemplateType();
+        if (StringUtils.isNotEmpty(templateTypeStr)) {
+            int templateType = Integer.parseInt(floorContent.getTemplateType());
+            // 日期切换模板处理
+            if (templateType == 1 || templateType == 2 || (templateType >= 7 && templateType <= 10)) {
+                floorContent.setTemplateClassify(1);
+            } else if (templateType >= 3 && templateType <= 6) {
+                floorContent.setTemplateClassify(2);
+            } else if (templateType >= 11 && templateType <= 21) {
+                floorContent.setTemplateClassify(3);
+            } else if (templateType >= 22 && templateType <= 25) {
+                floorContent.setTemplateClassify(1);
+            } else if (templateType >= 26 && templateType <= 29) {
+                floorContent.setTemplateClassify(4);
+            }
+        }
         List<FloorImageVo> floorImageList = pageMapper.getFloorImageByCentreId(centreId, source);
         setFloorImageProduct(userId, floorImageList);
         Map<String, Object> map = new HashMap<>(2);
@@ -347,6 +404,11 @@ public class PageServiceImpl implements PageService {
         product.setTinyTypeName(list.size() > 2 ? list.get(2) : null);
         //价格等级
         product.setPriceGrade(priceUtilService.getPriceGrade(product.getPrice()));
+        // 商品云上美博会活动状态
+        Integer pcBeautyStatus = shopMapper.getPcBeautyStatusById(product.getProductId());
+        Integer appletsBeautyStatus = shopMapper.getAppletsBeautyStatusById(product.getProductId());
+        product.setPcActType(null != pcBeautyStatus ? 1 : 0);
+        product.setAppletsActType(null != appletsBeautyStatus ? 1 : 0);
         //供应商信息
         ShopVo shop = shopMapper.getProductShopById(product.getShopId());
         if (null != shop) {
@@ -659,6 +721,16 @@ public class PageServiceImpl implements PageService {
                 floorContent.setLinkType3(linkType3);
                 floorContent.setLinkParam3(AppletsLinkUtil.getLinkParam(linkType3, floorContent.getAdsLink3()));
             }
+            if (StringUtils.isNotBlank(floorContent.getAdsLink4())) {
+                Integer linkType4 = AppletsLinkUtil.getLinkType(floorContent.getAdsLink4());
+                floorContent.setLinkType4(linkType4);
+                floorContent.setLinkParam4(AppletsLinkUtil.getLinkParam(linkType4, floorContent.getAdsLink4()));
+            }
+            if (StringUtils.isNotBlank(floorContent.getAdsLink5())) {
+                Integer linkType3 = AppletsLinkUtil.getLinkType(floorContent.getAdsLink3());
+                floorContent.setLinkType3(linkType3);
+                floorContent.setLinkParam3(AppletsLinkUtil.getLinkParam(linkType3, floorContent.getAdsLink3()));
+            }
         }
     }
 

+ 42 - 18
src/main/resources/mapper/PageMapper.xml

@@ -46,8 +46,8 @@
     </select>
     <select id="getFloorContentById" resultType="com.caimei365.commodity.model.vo.FloorContentVo">
         select
-         id, floorId, centreId, templateType, pcAdsImage1, pcAdsImage2, pcAdsImage3,
-         appletsAdsImage1, appletsAdsImage2, appletsAdsImage3, adsLink1, adsLink2, adsLink3
+         id, floorId, centreId, templateType, pcAdsImage1, pcAdsImage2, pcAdsImage3,pcAdsImage4,pcAdsImage5,
+         appletsAdsImage1, appletsAdsImage2, appletsAdsImage3, appletsAdsImage4, appletsAdsImage5, adsLink1, adsLink2, adsLink3
          from new_page_floor_content where floorId = #{id}
     </select>
     <select id="getFloorImageById" resultType="com.caimei365.commodity.model.vo.FloorImageVo">
@@ -64,14 +64,34 @@
         order by -sort desc, createDate desc
     </select>
     <select id="getFloorContentByCentreId" resultType="com.caimei365.commodity.model.vo.FloorContentVo">
-        select
-         id, floorId, centreId, templateType, pcAdsImage1, pcAdsImage2, pcAdsImage3,
-         appletsAdsImage1, appletsAdsImage2, appletsAdsImage3, adsLink1, adsLink2, adsLink3
-         from new_page_floor_content where centreId = #{id}
+        select id,
+               floorId,
+               centreId,
+               templateType,
+               pcAdsImage1,
+               pcAdsImage2,
+               pcAdsImage3,
+               pcAdsImage4,
+               pcAdsImage5,
+               appletsAdsImage1,
+               appletsAdsImage2,
+               appletsAdsImage3,
+               appletsAdsImage4,
+               appletsAdsImage5,
+               adsLink1,
+               adsLink2,
+               adsLink3,
+               adsLink4,
+               adsLink5,
+               displayDate1,
+               displayDate2,
+               displayDate3
+        from new_page_floor_content
+        where centreId = #{id}
     </select>
     <select id="getFloorImageByCentreId" resultType="com.caimei365.commodity.model.vo.FloorImageVo">
         select
-            id, floorId, centreId, productId, name, link, image, appletsImage, label, pcStatus, appletsStatus, sort, createDate
+            id, floorId, centreId, productId, name, link, image, appletsImage,adsImage, label,content, pcStatus, appletsStatus, sort,displaySort, createDate
         from new_page_floor_image
         where centreId = #{id}
         <if test="source == 1">
@@ -238,17 +258,21 @@
         order by p.sellNumber desc limit 0,7
     </select>
     <select id="findCmPageById" resultType="com.caimei365.commodity.model.vo.CmPageVo">
-        select
-            id,
-            type,
-            title,
-            keywords,
-            description,
-            headImage,
-            crmHeadImage,
-            headLink,
-            headText
-        from cm_page where id = #{pageId} and enabledStatus = '1'
+        select id,
+               type,
+               title,
+               keywords,
+               description,
+               headImage,
+               crmHeadImage,
+               headLink,
+               headText,
+               redPacketBeginTime,
+               redPacketEndTime,
+               infoBarStatus
+        from cm_page
+        where id = #{pageId}
+          and enabledStatus = '1'
     </select>
     <select id="getSearchKeyword" resultType="java.lang.String">
         select name from keyword

+ 8 - 0
src/main/resources/mapper/ShopMapper.xml

@@ -544,4 +544,12 @@
         </where>
         order by createDate desc
     </select>
+    <select id="getPcBeautyStatusById" resultType="java.lang.Integer">
+        select i.productId from new_page_floor_image i left join cm_page_centre c on i.centreId = c.id left join cm_page p on c.pageId = p.id
+        where i.productId = #{productId} and p.type = 7 and c.enabledStatus = 1 and p.enabledStatus = 1 limit 1
+    </select>
+    <select id="getAppletsBeautyStatusById" resultType="java.lang.Integer">
+        select i.productId from new_page_floor_image i left join cm_page_centre c on i.centreId = c.id left join cm_page p on c.pageId = p.id
+        where i.productId = #{productId} and p.type = 7 and c.crmEnabledStatus = 1 and p.enabledStatus = 1 limit 1
+    </select>
 </mapper>