Selaa lähdekoodia

首页楼层数据

chao 4 vuotta sitten
vanhempi
commit
d024c567ea

+ 3 - 9
src/main/java/com/caimei365/commodity/controller/PriceApi.java

@@ -32,12 +32,10 @@ public class PriceApi {
     /**
      * 获取商品详情价格
      *
-     * spi旧接口:/product/detail/price
-     *
      * @param userId      用户Id
      * @param productId   商品Id
      */
-    @ApiOperation("获取商品详情价格")
+    @ApiOperation("获取商品详情价格(旧:/product/detail/price)")
     @ApiImplicitParams({
         @ApiImplicitParam(required = true, name = "userId", value = "用户Id"),
         @ApiImplicitParam(required = true, name = "productId", value = "商品Id")
@@ -53,12 +51,10 @@ public class PriceApi {
     /**
      * 获取商品列表价格
      *
-     * spi旧接口:/product/listPrice
-     *
      * @param userId       用户Id
      * @param productIds   商品Id
      */
-    @ApiOperation("获取商品列表价格")
+    @ApiOperation("获取商品列表价格(旧:/product/listPrice)")
     @ApiImplicitParams({
         @ApiImplicitParam(required = true, name = "userId", value = "用户Id"),
         @ApiImplicitParam(required = true, name = "productIds", value = "商品Ids,逗号拼接")
@@ -74,11 +70,9 @@ public class PriceApi {
     /**
      * 获取阶梯价格
      *
-     * spi旧接口:/product/ladderPrice
-     *
      * @param productId   商品Id
      */
-    @ApiOperation("获取阶梯价格")
+    @ApiOperation("获取阶梯价格(旧:/product/ladderPrice)")
     @ApiImplicitParam(required = true, name = "productId", value = "商品Id")
     @GetMapping("/ladder")
     public ResponseJson<List<LadderPriceVo>> getLadderPrice(Integer productId) {

+ 19 - 8
src/main/java/com/caimei365/commodity/controller/ProductApi.java

@@ -24,19 +24,17 @@ import java.util.Map;
 @Api(tags="商品API")
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/commodity/product")
+@RequestMapping("/commodity")
 public class ProductApi {
 
     private final ProductService productService;
     /**
      * 获取分类列表
      *
-     * spi旧接口:/product/classify
-     *
      * @param typeSort 分类类型:1产品,2仪器
      * @param source   请求来源:www,crm
      */
-    @ApiOperation("获取分类菜单")
+    @ApiOperation("获取分类菜单(旧:/product/classify)")
     @ApiImplicitParams({
         @ApiImplicitParam(required = true, name = "typeSort", value = "分类类型:1产品,2仪器"),
         @ApiImplicitParam(required = false, name = "source", value = "请求来源:www,crm")
@@ -49,19 +47,17 @@ public class ProductApi {
     /**
      * 产品/仪器页面数据
      *
-     * spi旧接口:/home/instrumentData
-     *
      * @param pageId 页面信息id
      * @param userId 用户id
      * @param source 来源:1网站,2小程序
      */
-    @ApiOperation("产品/仪器页面数据")
+    @ApiOperation("产品/仪器页面数据(旧:/home/instrumentData)")
     @ApiImplicitParams({
         @ApiImplicitParam(required = true, name = "pageId", value = "页面信息id"),
         @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
         @ApiImplicitParam(required = false, name = "source", value = "来源:1网站,2小程序")
     })
-    @GetMapping("/classify/data")
+    @GetMapping("/classify/product")
     public ResponseJson<Map<String, Object>> getClassifyData(Integer pageId, Integer userId, Integer source) {
         if (pageId == null) {
             return ResponseJson.error("参数异常", null);
@@ -69,6 +65,21 @@ public class ProductApi {
         return productService.getClassifyData(pageId, userId, source);
     }
 
+    /**
+     * 首页楼层数据
+     *
+     * @param userId 用户id
+     * @param source 来源 : 1 网站 ; 2 小程序
+     */
+    @ApiOperation("首页楼层数据(旧:/home/data)")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = false, name = "userId", value = "用户id"),
+        @ApiImplicitParam(required = false, name = "source", value = "来源:1网站,2小程序")
+    })
+    @GetMapping("/home/floor")
+    public ResponseJson<Map<String, Object>> getHomeData(Integer userId, Integer source) {
+        return productService.getHomeData(userId, source);
+    }
 
 
 }

+ 5 - 13
src/main/java/com/caimei365/commodity/controller/PromotionsApi.java

@@ -25,17 +25,15 @@ import java.util.List;
 @Api(tags="促销活动API")
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/promotions")
+@RequestMapping("/commodity/promotions")
 public class PromotionsApi {
     private final PromotionsService promotionsService;
     /**
      * 专题活动列表数据
      *
-     * spi旧接口:/promotions/list
-     *
      * @param source 来源
      */
-    @ApiOperation("专题活动列表数据")
+    @ApiOperation("专题活动列表数据(旧:/promotions/list)")
     @ApiImplicitParams({
         @ApiImplicitParam(required = false, name = "source", value = "来源"),
         @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
@@ -51,11 +49,9 @@ public class PromotionsApi {
     /**
      * 获取促销活动详情
      *
-     * spi旧接口:/product/promotion/info
-     *
      * @param promotionsId 促销活动Id
      */
-    @ApiOperation("获取促销活动详情")
+    @ApiOperation("获取促销活动详情(旧:/product/promotion/info)")
     @ApiImplicitParam(required = true, name = "promotionsId", value = "促销活动Id")
     @GetMapping("/info")
     public ResponseJson<PromotionsVo> promotionDetails(Integer promotionsId) {
@@ -68,12 +64,10 @@ public class PromotionsApi {
     /**
      * 获取促销活动凑单商品
      *
-     * spi旧接口:/product/promotion/products
-     *
      * @param promotionsId 促销活动Id
      * @param identity     用户身份
      */
-    @ApiOperation("获取促销活动凑单商品")
+    @ApiOperation("获取促销活动凑单商品(旧:/product/promotion/products)")
     @ApiImplicitParams({
         @ApiImplicitParam(required = true, name = "promotionsId", value = "促销活动Id"),
         @ApiImplicitParam(required = false, name = "identity", value = "用户身份: 0个人,1协销,2会员机构,3供应商,4普通机构"),
@@ -94,11 +88,9 @@ public class PromotionsApi {
     /**
      * 获取赠品
      *
-     * spi旧接口:/product/promotion/gifts
-     *
      * @param promotionsId 促销活动Id
      */
-    @ApiOperation("获取赠品")
+    @ApiOperation("获取赠品(旧:/product/promotion/gifts)")
     @ApiImplicitParam(required = true, name = "promotionsId", value = "促销活动Id")
     @GetMapping("/gifts")
     public ResponseJson<List<ProductItemVo>> getPromotionGifts(Integer promotionsId) {

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

@@ -41,6 +41,11 @@ public interface ProductMapper {
      * @param pageId
      */
     List<HotSearchVo> getHotSearchByPageId(Integer pageId, Integer source);
+    /**
+     * 首页楼层
+     * @param source
+     */
+    List<PageFloorVo> getHomePageFloor(Integer source);
     /**
      * 查询页面信息商品楼层
      * @param pageId
@@ -62,4 +67,13 @@ public interface ProductMapper {
      * @param productId
      */
     ProductItemVo getProductItemById(Integer productId);
+    /**
+     * 优质供应商楼层
+     */
+    ShopFloorVo getSupplierFloorImage();
+    /**
+     * 查询优质供应商数据
+     * @param source
+     */
+    List<ShopImageVo> getSupplierImage(Integer source);
 }

+ 48 - 0
src/main/java/com/caimei365/commodity/model/vo/ShopFloorVo.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/14
+ */
+@Data
+public class ShopFloorVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    /**
+     * 微信供应商主图
+     */
+    private String crmImage;
+    /**
+     * www供应商主图
+     */
+    private String wwwImage;
+    /**
+     * www端主图链接
+     */
+    private String wwwLink;
+    /**
+     * 链接类型 -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;
+
+    /**
+     * 优质供应商数据
+     */
+    private List<ShopImageVo> qualitySupplierList;
+}

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

@@ -0,0 +1,72 @@
+package com.caimei365.commodity.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/4/14
+ */
+@Data
+public class ShopImageVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+    /**
+     * 供应商名称
+     */
+    private String supplierName;
+    /**
+     * 供应商图片
+     */
+    private String image;
+    /**
+     * 链接
+     */
+    private String link;
+    /**
+     * 排序
+     */
+    private Integer sort;
+    /**
+     * Pc端状态 0停用 1启用
+     */
+    private String wwwEnabledStatus;
+    /**
+     * CRM端状态 0停用 1启用
+     */
+    private String crmEnabledStatus;
+    /**
+     * 创建人
+     */
+    private String createBy;
+    /**
+     * 创建日期
+     */
+    private Date createDate;
+    /**
+     * 最后更新人
+     */
+    private String updateBy;
+    /**
+     * 最后更新时间
+     */
+    private Date updateDate;
+    /**
+     * 删除标记 0 否,其余是
+     */
+    private String delFlag;
+    /** 链接类型 -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;
+}

+ 8 - 0
src/main/java/com/caimei365/commodity/service/ProductService.java

@@ -29,4 +29,12 @@ public interface ProductService {
      * @param source 来源:1网站,2小程序
      */
     ResponseJson<Map<String, Object>> getClassifyData(Integer pageId, Integer userId, Integer source);
+
+    /**
+     * 首页楼层数据
+     *
+     * @param userId 用户id
+     * @param source 来源:1网站,2小程序
+     */
+    ResponseJson<Map<String, Object>> getHomeData(Integer userId, Integer source);
 }

+ 50 - 0
src/main/java/com/caimei365/commodity/service/impl/ProductServiceImpl.java

@@ -10,6 +10,7 @@ import com.caimei365.commodity.components.PriceUtilService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -42,6 +43,7 @@ public class ProductServiceImpl implements ProductService {
      * @param source   请求来源:www,crm
      */
     @Override
+    @Cacheable(value = "getClassify", key = "#typeSort +'-'+ #source", unless = "#result == null")
     public ResponseJson<List<BigTypeVo>> getClassify(String typeSort, String source) {
         List<BigTypeVo> bigTypeList = productMapper.getBigTypeList(typeSort,source);
         bigTypeList.forEach(bigType -> {
@@ -76,6 +78,7 @@ public class ProductServiceImpl implements ProductService {
      * @param source 来源:1网站,2小程序
      */
     @Override
+    @Cacheable(value = "instrumentData", key = "#pageId+'-'+#userId+'-'+#source", unless = "#result == null")
     public ResponseJson<Map<String, Object>> getClassifyData(Integer pageId, Integer userId, Integer source) {
         source = source == null ? 1 : source;
         Map<String, Object> map = new HashMap<>(3);
@@ -96,6 +99,53 @@ public class ProductServiceImpl implements ProductService {
         return ResponseJson.success(map);
     }
 
+    /**
+     * 首页楼层数据
+     *
+     * @param userId 用户id
+     * @param source 来源:1网站,2小程序
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> getHomeData(Integer userId, Integer source) {
+        Map<String, Object> map = new HashMap<>(2);
+        //楼层管理
+        source = source == null ? 1 : source;
+        List<PageFloorVo> homePageFloor = productMapper.getHomePageFloor(source);
+        Iterator<PageFloorVo> floorIterator = homePageFloor.iterator();
+        while (floorIterator.hasNext()) {
+            PageFloorVo floor = floorIterator.next();
+            FloorContentVo floorContent = productMapper.getFloorContentById(floor.getId());
+            setFloorLinkType(floorContent);
+            floor.setFloorContent(floorContent);
+            List<FloorImageVo> floorImageList = productMapper.getFloorImageById(floor.getId(), source);
+            if (floorImageList == null || floorImageList.size() == 0) {
+                floorIterator.remove();
+                continue;
+            }
+            setFloorImageProduct(userId, floorImageList);
+            floor.setFloorImageList(floorImageList);
+        }
+        map.put("homePageFloor", homePageFloor);
+        // 优质供应商
+        ShopFloorVo supplierImage = productMapper.getSupplierFloorImage();
+        List<ShopImageVo> supplierList = productMapper.getSupplierImage(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);
+        return ResponseJson.success(map);
+    }
+
     /**
      * 设置跳转参数
      * @param floorContent FloorContentVo

+ 36 - 2
src/main/resources/mapper/ProductMapper.xml

@@ -58,7 +58,19 @@
         <if test="source == 2">
             and appletsStatus = 1
         </if>
-        order by sort desc, creationTime desc
+        order by -sort desc, creationTime desc
+    </select>
+    <select id="getHomePageFloor" resultType="com.caimei365.commodity.model.vo.PageFloorVo">
+        select id, type, floorTitle as title, floorDetail as detail
+		from new_page_floor
+		where delFlag = 0
+		<if test="source == 1">
+            AND wwwEnabledStatus = 1
+        </if>
+        <if test="source == 2">
+            AND crmEnabledStatus = 1
+        </if>
+		order by -sort desc,createDate desc
     </select>
     <select id="getFloorByPageId" resultType="com.caimei365.commodity.model.vo.PageFloorVo">
         select id, title ,description as detail
@@ -89,7 +101,7 @@
         <if test="source == 2">
             and appletsStatus = 1
         </if>
-        order by sort desc, createDate desc
+        order by -sort desc, createDate desc
     </select>
     <select id="getProductItemById" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
         select
@@ -116,5 +128,27 @@
         left join cm_second_hand_detail cshd on p.productID = cshd.productID
         where p.productID = #{productId}
     </select>
+    <select id="getSupplierFloorImage" resultType="com.caimei365.commodity.model.vo.ShopFloorVo">
+        select id, crmImage, wwwImage, wwwLink
+        from new_page_quality_supplier_image
+        limit 1
+    </select>
+    <select id="getSupplierImage" resultType="com.caimei365.commodity.model.vo.ShopImageVo">
+        select
+            id, supplierName, image, link, sort, wwwEnabledStatus, crmEnabledStatus,
+            createBy, createDate, updateBy, updateDate, delFlag
+        from
+          new_page_quality_supplier
+        where
+          delFlag = 0
+        <if test="source == 1">
+            and wwwEnabledStatus = 1
+        </if>
+        <if test="source == 2">
+            and crmEnabledStatus = 1
+        </if>
+        order by - sort desc,createDate desc
+    </select>
+
 
 </mapper>