Browse Source

项目仪器详情

chao 4 years ago
parent
commit
cad3e2d40c

+ 14 - 4
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -8,10 +8,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Map;
@@ -124,4 +121,17 @@ public class ProductPageApi {
                                                                          @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         return pageService.getBuyAgainProducts(userId, pageNum, pageSize);
     }
+
+
+    /**
+     * 项目仪器详情页
+     */
+    @ApiOperation("项目仪器详情页(旧:/equipment/recommend)")
+    @ApiImplicitParam(required = false, name = "equipmentId", value = "项目仪器Id")
+    @GetMapping("/equipment/details")
+    @ResponseBody
+    public ResponseJson<EquipmentVo> getEquipmentDetails(Integer equipmentId) {
+        return pageService.getEquipmentDetails(equipmentId);
+    }
+
 }

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

@@ -82,4 +82,18 @@ public interface PageMapper {
      * @param userId 用户Id
      */
     List<ProductItemVo> getBuyAgainProducts(Integer userId);
+    /**
+     * 项目仪器详情页
+     * @param equipmentId
+     */
+    EquipmentVo getEquipmentById(Integer equipmentId);
+    /**
+     * 根据仪器id和类型id获取仪器参数
+     */
+    List<EquipmentParameterVo> getEquipmentParametersByType(Integer equipmentId, Integer typeId);
+
+    /**
+     * 二级专题楼层下的数据
+     */
+    List<ImageLinkVo> getImageLinkByFloorId(Integer floorId);
 }

+ 35 - 0
src/main/java/com/caimei365/commodity/model/vo/EquipmentParameterVo.java

@@ -0,0 +1,35 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/4/25
+ */
+@Data
+public class EquipmentParameterVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    /**
+     * 页面信息ID
+     */
+    private Integer parentId;
+    /**
+     * 参数名称
+     */
+    private String name;
+    /**
+     * 参数内容
+     */
+    private String content;
+    /**
+     * 商品删除标记: 0否,其余是,
+     * 页面内容类型: 1-表示首层位置,2-表示二层位置,3-表示项目详情、培训手册、合作项目公司, 4-二层下方按钮 ,5-crm端项目详情、培训手册、合作项目公司
+     */
+    private String type;
+}

+ 48 - 0
src/main/java/com/caimei365/commodity/model/vo/EquipmentVo.java

@@ -0,0 +1,48 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/4/25
+ */
+@Data
+public class EquipmentVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    /**
+     * 类型:1二级列表 2项目详情 3讲师列表 4自由页面
+     */
+    private Integer type;
+    /**
+     * 标题
+     */
+    private String title;
+    /**
+     * seo关键词
+     */
+    private String keywords;
+    /**
+     * seo描述
+     */
+    private String description;
+    /**
+     * 主图
+     */
+    private String image;
+    /**
+     * 项目详情页名称和内容(根据类型分类)
+     */
+    private Map<String, List<EquipmentParameterVo>> pageContentMap;
+    /**
+     * 项目仪器中层数据
+     */
+    private List<PageFloorVo> floorList;
+}

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

@@ -57,4 +57,10 @@ public interface PageService {
      * @param userId    用户Id
      */
     ResponseJson<PaginationVo<ProductItemVo>> getBuyAgainProducts(Integer userId, int pageNum, int pageSize);
+
+    /**
+     * 项目仪器详情页
+     * @param equipmentId 项目仪器Id
+     */
+    ResponseJson<EquipmentVo> getEquipmentDetails(Integer equipmentId);
 }

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

@@ -306,6 +306,66 @@ public class PageServiceImpl implements PageService {
         return ResponseJson.success(pageData);
     }
 
+    /**
+     * 项目仪器详情页
+     *
+     * @param equipmentId 项目仪器Id
+     */
+    @Override
+    public ResponseJson<EquipmentVo> getEquipmentDetails(Integer equipmentId) {
+        if (equipmentId == null) {
+            return ResponseJson.error("参数异常:项目仪器Id不能为空!", null);
+        }
+        //仪器详情
+        EquipmentVo equipment = pageMapper.getEquipmentById(equipmentId);
+        if (null != equipment) {
+            Map<String, List<EquipmentParameterVo>> pageContentMap = new HashMap<>();
+            List<EquipmentParameterVo> firstFloorList = pageMapper.getEquipmentParametersByType(equipmentId, 1);
+            List<EquipmentParameterVo> secondFloorList = pageMapper.getEquipmentParametersByType(equipmentId, 2);
+            List<EquipmentParameterVo> underSecondFloorList = pageMapper.getEquipmentParametersByType(equipmentId, 4);
+            List<EquipmentParameterVo> pcDetailList = pageMapper.getEquipmentParametersByType(equipmentId, 3);
+            List<EquipmentParameterVo> crmDetailList = pageMapper.getEquipmentParametersByType(equipmentId, 5);
+            pageContentMap.put("firstFloorList", firstFloorList);
+            pageContentMap.put("secondFloorList", secondFloorList);
+            pageContentMap.put("underSecondFloorList", underSecondFloorList);
+            pageContentMap.put("pcDetailList", pcDetailList);
+            pageContentMap.put("crmDetailList", crmDetailList);
+            equipment.setPageContentMap(pageContentMap);
+        } else {
+            return ResponseJson.error("该仪器不存在", null);
+        }
+        List<PageFloorVo> floorList = pageMapper.getFloorByPageId(equipmentId, 1);
+        if (floorList.size() > 0) {
+            List<PageFloorVo> tempList = new ArrayList<>();
+            floorList.forEach(floor -> {
+                List<ImageLinkVo> imageLinks = pageMapper.getImageLinkByFloorId(floor.getId());
+                //设置链接类型及参数
+                if (StringUtils.isNotEmpty(floor.getLink())) {
+                    floor.setLinkType(AppletsLinkUtil.getLinkType(floor.getLink()));
+                    floor.setLinkParam(AppletsLinkUtil.getLinkParam(floor.getLinkType(), floor.getLink()));
+                }
+                if (imageLinks.size() > 0) {
+                    imageLinks.forEach(img -> {
+                        img.setImage(ImageUtils.getImageURL("actType", img.getImage(), 0, domain));
+                        //设置链接类型及参数
+                        if (StringUtils.isNotEmpty(img.getLink())) {
+                            img.setLinkType(AppletsLinkUtil.getLinkType(img.getLink()));
+                            img.setLinkParam(AppletsLinkUtil.getLinkParam(img.getLinkType(), img.getLink()));
+                        }
+                    });
+                    floor.setFloorData(imageLinks);
+                } else {
+                    tempList.add(floor);
+                }
+            });
+            if (tempList.size() > 0) {
+                floorList.removeAll(tempList);
+            }
+        }
+        equipment.setFloorList(floorList);
+        return ResponseJson.success(equipment);
+    }
+
     /**
      * 设置跳转参数
      * @param floorContent FloorContentVo

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

@@ -190,6 +190,27 @@
         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>
+    <select id="getEquipmentParametersByType" resultType="com.caimei365.commodity.model.vo.EquipmentParameterVo">
+        select id, pageId as parentId, name, content, type
+        from cm_page_name_content
+        where pageId = #{equipmentId}
+        and type = #{typeId}
+    </select>
+    <select id="getImageLinkByFloorId" resultType="com.caimei365.commodity.model.vo.ImageLinkVo">
+        select  a.id as id,
+                a.title as title,
+                a.link as link,
+                a.image as image
+        from cm_page_image a
+        right join cm_page_centre_image b on b.imageId=a.id
+        where b.centreId=#{floorId} and  a.enabledStatus=1
+        order  by a.sort desc,a.createDate desc
+    </select>
 
 
 </mapper>