浏览代码

二级专题数据

chao 3 年之前
父节点
当前提交
d774ceca3b

+ 19 - 5
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -11,7 +11,6 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -95,6 +94,21 @@ public class ProductPageApi {
         return pageService.getHomeInit(source);
     }
 
+    /**
+     * 二级专题页楼层数据
+     *
+     * @param pageId 页面id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    @ApiOperation("二级专题页楼层数据(旧:/page/topic, /page/topic/info)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "pageId", value = "页面id"),
+            @ApiImplicitParam(required = false, name = "source", value = "来源:1网站,2小程序")
+    })
+    @GetMapping("/page/floor")
+    public ResponseJson<Map<String, Object>> getPageFloors(Integer pageId, Integer source) {
+        return pageService.getPageFloors(pageId, source);
+    }
 
     /**
      * 活动专题楼层数据(美博会)
@@ -109,9 +123,9 @@ public class ProductPageApi {
         @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);
+    @GetMapping("/page/beauty")
+    public ResponseJson<Map<String, Object>> getPageBeautyData(Integer pageId, Integer userId, Integer source) {
+        return pageService.getPageBeautyData(pageId, userId, source);
     }
 
     /**
@@ -192,7 +206,7 @@ public class ProductPageApi {
     @ApiImplicitParam(required = false, name = "equipmentId", value = "项目仪器Id")
     @GetMapping("/equipment/details")
     @ResponseBody
-    public ResponseJson<EquipmentVo> getEquipmentDetails(Integer equipmentId) {
+    public ResponseJson<PageDetailVo> getEquipmentDetails(Integer equipmentId) {
         return pageService.getEquipmentDetails(equipmentId);
     }
 

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

@@ -107,11 +107,11 @@ public interface PageMapper {
     List<ProductItemVo> getBuyAgainProducts(Integer userId);
 
     /**
-     * 项目仪器详情页
-     *
-     * @param equipmentId
+     * 页面详情
+     * @param id
+     * @param type 类型:1二级列表 2项目详情 3讲师列表 4自由页面
      */
-    EquipmentVo getEquipmentById(Integer equipmentId);
+    PageDetailVo getPageDetails(Integer id, Integer type);
 
     /**
      * 根据仪器id和类型id获取仪器参数

+ 21 - 1
src/main/java/com/caimei365/commodity/model/vo/EquipmentVo.java → src/main/java/com/caimei365/commodity/model/vo/PageDetailVo.java

@@ -13,7 +13,7 @@ import java.util.Map;
  * @date : 2021/4/25
  */
 @Data
-public class EquipmentVo implements Serializable {
+public class PageDetailVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private Integer id;
@@ -37,6 +37,26 @@ public class EquipmentVo implements Serializable {
      * 主图
      */
     private String image;
+    /**
+     * 按钮名称
+     */
+    private String buttonName;
+
+    /**
+     * 按钮跳转链接
+     */
+    private String buttonLink;
+    /**
+     * 链接类型 -1未知类型 1二级页面 2项目仪器 3直播页面 4自由页面 5商品详情 6项目仪器详情
+     * 7供应商主页 8专题活动页 9二手市场介绍 10二手商品列表 11二手商品发布 12商品搜索 13信息详情
+     * 14品牌招商介绍页 15维修保养介绍页 16首页 17注册页 18信息中心 19供应商列表
+     */
+    private Integer linkType;
+
+    /**
+     * 链接包含的参数
+     */
+    private Map<String, Object> linkParam;
     /**
      * 项目详情页名称和内容(根据类型分类)
      */

+ 10 - 2
src/main/java/com/caimei365/commodity/service/PageService.java

@@ -47,6 +47,13 @@ public interface PageService {
      */
     ResponseJson<Map<String, Object>> getHomeInit(Integer source);
 
+    /**
+     * 二级专题页楼层数据
+     * @param pageId 页面id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    ResponseJson<Map<String, Object>> getPageFloors(Integer pageId, Integer source);
+
     /**
      * 活动专题楼层数据(美博会)
      *
@@ -54,7 +61,7 @@ public interface PageService {
      * @param userId 用户id
      * @param source 来源 : 1 网站 ; 2 小程序
      */
-    ResponseJson<Map<String, Object>> getPageData(Integer pageId, Integer userId, Integer source);
+    ResponseJson<Map<String, Object>> getPageBeautyData(Integer pageId, Integer userId, Integer source);
 
     /**
      * 楼层详情
@@ -94,7 +101,7 @@ public interface PageService {
      *
      * @param equipmentId 项目仪器Id
      */
-    ResponseJson<EquipmentVo> getEquipmentDetails(Integer equipmentId);
+    ResponseJson<PageDetailVo> getEquipmentDetails(Integer equipmentId);
 
     /**
      * 商品详情页-图片
@@ -164,4 +171,5 @@ public interface PageService {
      * @return
      */
     ResponseJson<Map<String, Object>> getSvipProductPage(Integer userId, Integer source, Integer pageNum, Integer pageSize);
+
 }

+ 51 - 5
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -230,6 +230,52 @@ public class PageServiceImpl implements PageService {
         return ResponseJson.success(map);
     }
 
+    /**
+     * 二级专题页楼层数据
+     *
+     * @param pageId 页面id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    @Cacheable(value = "getPageFloorData", key = "#userId +'-'+ #pageId +'-'+ #source", unless = "#result == null")
+    @Override
+    public ResponseJson<Map<String, Object>> getPageFloors(Integer pageId, Integer source) {
+        if (pageId == null) {
+            return ResponseJson.error("参数异常: 页面id不能为空!", null);
+        }
+        source = source == null ? 1 : source;
+        List<PageFloorVo> floorList = pageMapper.getFloorByPageId(pageId, source);
+        if (!CollectionUtils.isEmpty(floorList)) {
+            floorList.forEach(floor -> {
+                if (StringUtils.isNotEmpty(floor.getLink())) {
+                    floor.setLinkType(AppletsLinkUtil.getLinkType(floor.getLink()));
+                    floor.setLinkParam(AppletsLinkUtil.getLinkParam(floor.getLinkType(), floor.getLink()));
+                }
+                List<ImageLinkVo> floorData = pageMapper.getImageLinkByFloorId(floor.getId());
+                if (!CollectionUtils.isEmpty(floorData)) {
+                    floorData.forEach(data -> {
+                        if (StringUtils.isNotEmpty(data.getLink())) {
+                            data.setLinkType(AppletsLinkUtil.getLinkType(data.getLink()));
+                            data.setLinkParam(AppletsLinkUtil.getLinkParam(data.getLinkType(), data.getLink()));
+                        }
+                        data.setImage(ImageUtils.getImageURL("actType", data.getImage(), 0, domain));
+                    });
+                }
+                floor.setFloorData(floorData);
+            });
+        }
+        // 页面详情
+        PageDetailVo topicPage = pageMapper.getPageDetails(pageId, 1);
+        if (topicPage != null && StringUtils.isNotBlank(topicPage.getButtonLink())) {
+            Integer linkType = AppletsLinkUtil.getLinkType(topicPage.getButtonLink());
+            topicPage.setLinkType(linkType);
+            topicPage.setLinkParam(AppletsLinkUtil.getLinkParam(linkType, topicPage.getButtonLink()));
+        }
+        Map<String, Object> map = new HashMap<>(2);
+        map.put("page", topicPage);
+        map.put("floorList", floorList);
+        return ResponseJson.success(map);
+    }
+
     /**
      * 活动专题楼层数据(美博会)
      *
@@ -237,9 +283,9 @@ public class PageServiceImpl implements PageService {
      * @param userId 用户id
      * @param source 来源 : 1 网站 ; 2 小程序
      */
-    @Cacheable(value = "getPageFloorData", key = "#userId +'-'+ #pageId +'-'+ #source", unless = "#result == null")
+    @Cacheable(value = "getPageBeautyData", 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>> getPageBeautyData(Integer pageId, Integer userId, Integer source) {
         if (pageId == null) {
             return ResponseJson.error("参数异常: 页面id不能为空!", null);
         }
@@ -247,7 +293,7 @@ public class PageServiceImpl implements PageService {
         // 页面数据
         CmPageVo page = pageMapper.findCmPageById(pageId);
         //轮播图设置链接类型
-        if (StringUtils.isNotBlank(page.getHeadLink())) {
+        if (null != page && StringUtils.isNotBlank(page.getHeadLink())) {
             Integer linkType = AppletsLinkUtil.getLinkType(page.getHeadLink());
             page.setLinkType(linkType);
             page.setLinkParam(AppletsLinkUtil.getLinkParam(linkType, page.getHeadLink()));
@@ -541,12 +587,12 @@ public class PageServiceImpl implements PageService {
      * @param equipmentId 项目仪器Id
      */
     @Override
-    public ResponseJson<EquipmentVo> getEquipmentDetails(Integer equipmentId) {
+    public ResponseJson<PageDetailVo> getEquipmentDetails(Integer equipmentId) {
         if (equipmentId == null) {
             return ResponseJson.error("参数异常:项目仪器Id不能为空!", null);
         }
         //仪器详情
-        EquipmentVo equipment = pageMapper.getEquipmentById(equipmentId);
+        PageDetailVo equipment = pageMapper.getPageDetails(equipmentId, 2);
         if (null != equipment) {
             Map<String, List<EquipmentParameterVo>> pageContentMap = new HashMap<>();
             List<EquipmentParameterVo> firstFloorList = pageMapper.getEquipmentParametersByType(equipmentId, 1);

+ 4 - 5
src/main/resources/mapper/PageMapper.xml

@@ -33,7 +33,7 @@
 		order by -sort desc,createDate desc
     </select>
     <select id="getFloorByPageId" resultType="com.caimei365.commodity.model.vo.PageFloorVo">
-        select id, title ,description as detail
+        select id, pageId as type, title ,description as detail
         from cm_page_centre
         where pageId = #{pageId}
         <if test="source == 1">
@@ -210,10 +210,9 @@
         and rpp.userId = #{userId}
         order by rpp.createTime desc
     </select>
-    <select id="getEquipmentById" resultType="com.caimei365.commodity.model.vo.EquipmentVo">
-        select id, type, title, keywords, description, headImage as image
-		from cm_page
-		where id = #{equipmentId} and type='2' and enabledStatus=1
+    <select id="getPageDetails" resultType="com.caimei365.commodity.model.vo.PageDetailVo">
+        select  a.id, a.type, a.title, a.keywords, a.description, a.headImage as image, a.headText as content, a.buttonName, a.buttonLink
+        from cm_page a where a.id=#{id} and a.type=#{type} and a.enabledStatus=1
     </select>
     <select id="getEquipmentParametersByType" resultType="com.caimei365.commodity.model.vo.EquipmentParameterVo">
         select id, pageId as parentId, name, content, type