Pārlūkot izejas kodu

更新删除重复索引

chao 4 gadi atpakaļ
vecāks
revīzija
f1ba2960ec

+ 54 - 9
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -81,6 +81,60 @@ public class ProductPageApi {
         return pageService.getHomeData(userId, source);
     }
 
+    /**
+     * 活动专题楼层数据(美博会)
+     *
+     * @param pageId 页面id
+     * @param userId 用户id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    @ApiOperation("活动专题楼层数据(美博会)(旧:/home/activity/data)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = false, name = "pageId", value = "页面id"),
+        @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
+        @ApiImplicitParam(required = false, name = "source", value = "来源:1网站,2小程序")
+    })
+    @GetMapping("/page/floor")
+    public ResponseJson<Map<String, Object>> getPageData(Integer pageId, Integer userId, Integer source) {
+        return pageService.getPageData(pageId, userId, source);
+    }
+
+    /**
+     * 楼层详情
+     *
+     * @param floorId 楼层id
+     * @param userId 用户id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    @ApiOperation("楼层详情(旧:/home/floorContentDetails)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = false, name = "floorId", value = "楼层id"),
+        @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
+        @ApiImplicitParam(required = false, name = "source", value = "来源:1网站,2小程序")
+    })
+    @GetMapping("/page/floor/details")
+    public ResponseJson<Map<String, Object>> getPageFloorData(Integer floorId, Integer userId, Integer source) {
+        return pageService.getPageFloorData(floorId, userId, source);
+    }
+
+    /**
+     * 分页详情楼层详情
+     *
+     * @param centreId 分页详情楼层id
+     * @param userId 用户id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    @ApiOperation("分页详情楼层详情(旧:/home/pageFloorDetails)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = false, name = "centreId", value = "分页详情楼层id"),
+        @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
+        @ApiImplicitParam(required = false, name = "source", value = "来源:1网站,2小程序")
+    })
+    @GetMapping("/page/floor/centre")
+    public ResponseJson<Map<String, Object>> getPageCentreData(Integer centreId, Integer userId, Integer source) {
+        return pageService.getPageCentreData(centreId, userId, source);
+    }
+
     /**
      * 商品详情页
      *
@@ -170,13 +224,4 @@ public class ProductPageApi {
         return pageService.getProductDetailRecommends(productId, recommendType, userId);
     }
 
-
-
-
-
-
-
-
-
-
 }

+ 2 - 0
src/main/java/com/caimei365/commodity/mapper/PageMapper.java

@@ -97,4 +97,6 @@ public interface PageMapper {
      */
     List<ProductListVo> getProductRecommendsById(Integer productId);
     List<ProductListVo> getAutoProductRecommends(Integer productId);
+    /** 页面数据 */
+    CmPageVo findCmPageById(Integer pageId);
 }

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

@@ -0,0 +1,50 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/5/19
+ */
+@Data
+public class CmPageVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    /**
+     * 类型:1二级列表 2项目详情 3讲师列表 4自由页面 5分页详情
+     */
+    private Integer type;
+    /**
+     * 标题
+     */
+    private String title;
+    /**
+     * seo关键词
+     */
+    private String keywords;
+    /**
+     * 描述
+     */
+    private String description;
+    /**
+     * 首层大图链接
+     */
+    private String headLink;
+    /**
+     * 首部文字
+     */
+    private String headText;
+    /**
+     * 轮播图链接类型
+     */
+    private Integer linkType;
+    /**
+     * 链接包含的参数
+     */
+    private Map<String, Object> linkParam;
+}

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

@@ -40,6 +40,33 @@ public interface PageService {
      */
     ResponseJson<Map<String, Object>> getHomeData(Integer userId, Integer source);
 
+    /**
+     * 活动专题楼层数据(美博会)
+     *
+     * @param pageId 页面id
+     * @param userId 用户id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    ResponseJson<Map<String, Object>> getPageData(Integer pageId, Integer userId, Integer source);
+
+    /**
+     * 楼层详情
+     *
+     * @param floorId 楼层id
+     * @param userId 用户id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    ResponseJson<Map<String, Object>> getPageFloorData(Integer floorId, Integer userId, Integer source);
+
+    /**
+     * 分页详情楼层详情
+     *
+     * @param centreId 分页详情楼层id
+     * @param userId 用户id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    ResponseJson<Map<String, Object>> getPageCentreData(Integer centreId, Integer userId, Integer source);
+
     /**
      * 商品详情页
      *
@@ -83,4 +110,5 @@ public interface PageService {
      * @param userId    用户Id
      */
     ResponseJson<List<ProductListVo>> getProductDetailRecommends(Integer productId, Integer recommendType, Integer userId);
+
 }

+ 80 - 0
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -158,6 +158,86 @@ public class PageServiceImpl implements PageService {
         return ResponseJson.success(map);
     }
 
+    /**
+     * 活动专题楼层数据(美博会)
+     *
+     * @param pageId 页面id
+     * @param userId 用户id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> getPageData(Integer pageId, Integer userId, Integer source) {
+        if (pageId == null) {
+            return ResponseJson.error("参数异常: 页面id不能为空!", null);
+        }
+        source = source == null ? 1 : source;
+        // 页面数据
+        CmPageVo page = pageMapper.findCmPageById(pageId);
+        //轮播图设置链接类型
+        if (StringUtils.isNotBlank(page.getHeadLink())) {
+            Integer linkType = AppletsLinkUtil.getLinkType(page.getHeadLink());
+            page.setLinkType(linkType);
+            page.setLinkParam(AppletsLinkUtil.getLinkParam(linkType,page.getHeadLink()));
+        }
+        List<PageFloorVo> floorList = pageMapper.getFloorByPageId(pageId, source);
+        for (PageFloorVo floor : floorList) {
+            FloorContentVo floorContent = pageMapper.getFloorContentById(floor.getId());
+            setFloorLinkType(floorContent);
+            floor.setFloorContent(floorContent);
+            List<FloorImageVo> floorImageList = pageMapper.getFloorImageById(floor.getId(), source);
+            setFloorImageProduct(userId, floorImageList);
+            floor.setFloorImageList(floorImageList);
+        }
+        Map<String, Object> map = new HashMap<>(2);
+        map.put("page", page);
+        map.put("floorList", floorList);
+        return ResponseJson.success(map);
+    }
+
+    /**
+     * 楼层详情
+     *
+     * @param floorId 楼层id
+     * @param userId  用户id
+     * @param source  来源 : 1 网站 ; 2 小程序
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> getPageFloorData(Integer floorId, Integer userId, Integer source) {
+        if (floorId == null) {
+            return ResponseJson.error("参数异常: 页面id不能为空!", null);
+        }
+        FloorContentVo floorContent = pageMapper.getFloorContentById(floorId);
+        setFloorLinkType(floorContent);
+        List<FloorImageVo> floorImageList = pageMapper.getFloorImageById(floorId, source);
+        setFloorImageProduct(userId, floorImageList);
+        Map<String, Object> map = new HashMap<>(2);
+        map.put("floorContent", floorContent);
+        map.put("floorImageList", floorImageList);
+        return ResponseJson.success(map);
+    }
+
+    /**
+     * 分页详情楼层详情
+     *
+     * @param centreId 分页详情楼层id
+     * @param userId   用户id
+     * @param source   来源 : 1 网站 ; 2 小程序
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> getPageCentreData(Integer centreId, Integer userId, Integer source) {
+        if (centreId == null) {
+            return ResponseJson.error("参数异常: 分页详情楼层id不能为空!", null);
+        }
+        FloorContentVo floorContent = pageMapper.getFloorContentByCentreId(centreId);
+        setFloorLinkType(floorContent);
+        List<FloorImageVo> floorImageList = pageMapper.getFloorImageByCentreId(centreId, source);
+        setFloorImageProduct(userId, floorImageList);
+        Map<String, Object> map = new HashMap<>(2);
+        map.put("floorContent", floorContent);
+        map.put("floorImageList", floorImageList);
+        return ResponseJson.success(map);
+    }
+
     /**
      * 商品详情页
      *

+ 33 - 3
src/main/java/com/caimei365/commodity/service/impl/SearchIndexServiceImpl.java

@@ -214,6 +214,12 @@ public class SearchIndexServiceImpl implements SearchIndexService {
             // 商品文档 type=1
             setMainDocument(1, mainList, mainId, productId);
             try {
+                // 查询商品数量是否唯一,不唯一则删除后更新索引
+                Integer count = searchQueryService.getCountByDocId("product", productId);
+                if (count > 1) {
+                    log.info("商品重复,重复商品id>>>>>>>>>>>" + productId);
+                    deleteProductIndexById(productId);
+                }
                 // 推送到阿里云
                 pushProductDocument(mainList, productList, mallProductList);
                 // 返回结果
@@ -252,6 +258,12 @@ public class SearchIndexServiceImpl implements SearchIndexService {
             // 供应商文档 type=2
             setMainDocument(2, mainList, mainId, shopId);
             try {
+                // 查询供应商是否唯一,不唯一则删除后重新更新索引
+                Integer count = searchQueryService.getCountByDocId("shop", shopId);
+                if (count > 1) {
+                    log.info("供应商重复,重复供应商id>>>>>>>>>>>" + shopId);
+                    deleteSupplierIndexById(shopId);
+                }
                 // 将文档列表转换成Json串,并推送到阿里云
                 pushSupplierDocument(mainList, supplierList);
                 // 返回结果
@@ -290,6 +302,12 @@ public class SearchIndexServiceImpl implements SearchIndexService {
             // 项目仪器文档 type=3
             setMainDocument(3, mainList, mainId, equipmentId);
             try {
+                // 查询项目仪器数量是否唯一,不唯一则删除后重新更新索引
+                Integer count = searchQueryService.getCountByDocId("equipment", equipmentId);
+                if (count > 1) {
+                    log.info("项目仪器重复,重复项目仪器id>>>>>>>>>>>" + equipmentId);
+                    deleteEquipmentIndexById(equipmentId);
+                }
                 // 将文档列表转换成Json串,并推送到阿里云
                 pushEquipmentDocument(mainList, equipmentList);
                 // 返回结果
@@ -328,15 +346,14 @@ public class SearchIndexServiceImpl implements SearchIndexService {
             // 文章文档 type=4
             setMainDocument(4, mainList, mainId, articleId);
             try {
-                // 将主文档列表转换成Json串,并推送到阿里云
-                pushArticleDocument(mainList, articleList);
                 // 查询文章数量是否唯一,不唯一则删除后重新更新索引
                 Integer count = searchQueryService.getCountByDocId("article", articleId);
                 if (count > 1) {
                     log.info("文章重复,重复文章id>>>>>>>>>>>" + articleId);
                     deleteArticleIndexById(articleId);
-                    updateArticleIndexById(articleId);
                 }
+                // 将主文档列表转换成Json串,并推送到阿里云
+                pushArticleDocument(mainList, articleList);
                 // 返回结果
                 return ResponseJson.success(mainList.size());
             } catch (OpenSearchClientException | OpenSearchException | JSONException e) {
@@ -364,6 +381,9 @@ public class SearchIndexServiceImpl implements SearchIndexService {
                 deleteDocByTypeId("m_id", mallId, "search_product_mall");
             }
             deleteDocByTypeId("p_id", productId, "search_product");
+            // 删除主文档记录
+            Integer mainId = searchQueryService.getIdByDocId("product", productId);
+            deleteDocByTypeId("id", mainId, "search_main");
             // 返回结果
             return ResponseJson.success(1);
         } catch (OpenSearchClientException | OpenSearchException | JSONException e) {
@@ -382,6 +402,9 @@ public class SearchIndexServiceImpl implements SearchIndexService {
     public ResponseJson<Integer> deleteSupplierIndexById(Integer shopId) {
         try {
             deleteDocByTypeId("s_id", shopId, "search_supplier");
+            // 删除主文档记录
+            Integer mainId = searchQueryService.getIdByDocId("shop", shopId);
+            deleteDocByTypeId("id", mainId, "search_main");
             // 返回结果
             return ResponseJson.success(1);
         } catch (OpenSearchClientException | OpenSearchException | JSONException e) {
@@ -400,6 +423,9 @@ public class SearchIndexServiceImpl implements SearchIndexService {
     public ResponseJson<Integer> deleteEquipmentIndexById(Integer equipmentId) {
         try {
             deleteDocByTypeId("e_id", equipmentId, "search_equipment");
+            // 删除主文档记录
+            Integer mainId = searchQueryService.getIdByDocId("equipment", equipmentId);
+            deleteDocByTypeId("id", mainId, "search_main");
             // 返回结果
             return ResponseJson.success(1);
         } catch (OpenSearchClientException | OpenSearchException | JSONException e) {
@@ -417,7 +443,11 @@ public class SearchIndexServiceImpl implements SearchIndexService {
     @Override
     public ResponseJson<Integer> deleteArticleIndexById(Integer articleId) {
         try {
+            // 删除文章文档记录
             deleteDocByTypeId("a_id", articleId, "search_article");
+            // 删除主文档记录
+            Integer mainId = searchQueryService.getIdByDocId("article", articleId);
+            deleteDocByTypeId("id", mainId, "search_main");
             // 返回结果
             return ResponseJson.success(1);
         } catch (OpenSearchClientException | OpenSearchException | JSONException e) {

+ 3 - 0
src/main/java/com/caimei365/commodity/service/impl/SearchQueryServiceImpl.java

@@ -326,6 +326,9 @@ public class SearchQueryServiceImpl implements SearchQueryService {
     @Override
     public ResponseJson<String> queryArticleByKeyword(String keyword, int pageNum, int pageSize) {
         String queryStr = "article:'" + keyword + "'";
+        if (StringUtils.isEmpty(keyword)) {
+            queryStr = "a_all:'1'";
+        }
         ArrayList<String> fetchFields = Lists.newArrayList("id", "a_id", "a_title", "a_image", "a_publisher", "a_publish_date", "a_intro", "a_pv", "a_type_id", "a_type_text", "a_label_ids", "a_label_text");
         List<Map<String, String>> summaryList = new ArrayList<>(2);
         Map<String, String> summaryField = new HashMap<>(2);

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

@@ -235,6 +235,17 @@
 			p.tinyTypeID = (select tinyTypeID from product as p1 where p1.productID = #{productId})
         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,
+            headLink,
+            headText
+        from cm_page where id = #{pageId} and enabledStatus = '1'
+    </select>
 
 
 </mapper>