Przeglądaj źródła

首页数据part2

chao 4 lat temu
rodzic
commit
238409c8de

+ 9 - 1
src/main/java/com/caimei/www/controller/HomeController.java

@@ -71,6 +71,14 @@ public class HomeController extends BaseController {
         return homeService.getRecommendProducts();
     }
 
-
+    /**
+     * 首页专题数据
+     * @return
+     */
+    @GetMapping("/home/topic")
+    @ResponseBody
+    public JsonModel getHomeTopicData() {
+        return homeService.getHomeTopicData();
+    }
 
 }

+ 15 - 3
src/main/java/com/caimei/www/mapper/HomeDao.java

@@ -24,7 +24,7 @@ public interface HomeDao {
     /**
      * 大专题二级楼层
      */
-    List<HomeFloor> getHomeSecondFloor();
+    List<HomeFloor> getHomeBigTopicFloor();
     /**
      * 首页轮播图
      */
@@ -38,7 +38,19 @@ public interface HomeDao {
      */
     List<ProductList> getRecommendeds();
     /**
-     * 大专题数据列表
+     * type6大专题数据列表
      */
-    List<SubMenu> getBigTopicData(@Param("topId") Integer topId);
+    List<ImageLink> getBigTopicData(@Param("topId") Integer topId);
+    /**
+     * type4商品专题
+     */
+    List<ImageLink> getCommodityTopicData();
+    /**
+     * type5小专题
+     */
+    List<ImageLink> getSmallTopicData();
+    /**
+     * type3优质供应商
+     */
+    List<ImageLink> getSuppliersTopData();
 }

+ 2 - 2
src/main/java/com/caimei/www/pojo/HomeFloor.java

@@ -16,6 +16,6 @@ public class HomeFloor {
 	private Integer type;
 	private String title;
 	private String detail;
-	private List<HomeFloor> secondFloors;
-	private List<SubMenu> floorData;
+	private List<HomeFloor> subFloors;
+	private List<ImageLink> floorData;
 }

+ 6 - 0
src/main/java/com/caimei/www/pojo/ImageLink.java

@@ -2,6 +2,8 @@ package com.caimei.www.pojo;
 
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * Description
  *
@@ -14,4 +16,8 @@ public class ImageLink {
 	private String title;
 	private String link;
 	private String image;
+	/** 活动开始时间 */
+	private Date beginTime;
+	/** 活动开始时间 */
+	private Date endTime;
 }

+ 0 - 1
src/main/java/com/caimei/www/pojo/ProductList.java

@@ -10,7 +10,6 @@ import lombok.Data;
  */
 @Data
 public class ProductList {
-	private Integer id;
 	private Integer pid;
 	private String name;
 	private String image;

+ 4 - 1
src/main/java/com/caimei/www/service/HomeService.java

@@ -32,5 +32,8 @@ public interface HomeService {
      */
     JsonModel getRecommendProducts();
 
-
+    /**
+     * 首页专题数据
+     */
+    JsonModel getHomeTopicData();
 }

+ 30 - 14
src/main/java/com/caimei/www/service/impl/HomeServiceImpl.java

@@ -10,12 +10,11 @@ import com.caimei.www.service.HomeService;
 import com.caimei.www.utils.PriceUtil;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Map;
 
 /**
  * Description
@@ -34,16 +33,6 @@ public class HomeServiceImpl implements HomeService {
     @Override
     public List<HomeFloor> getHomePageFloor() {
         List<HomeFloor> floorList = homeDao.getHomePageFloor();
-        floorList.forEach(floor -> {
-            if (6 == floor.getType()){
-                List<HomeFloor> secondFloors = homeDao.getHomeSecondFloor();
-                secondFloors.forEach(second -> {
-                    List<SubMenu>  topicData = homeDao.getBigTopicData(second.getId());
-                    second.setFloorData(topicData);
-                });
-                floor.setSecondFloors(secondFloors);
-            }
-        });
         return floorList;
     }
 
@@ -68,7 +57,7 @@ public class HomeServiceImpl implements HomeService {
     }
 
     /**
-     * 首页推荐专区
+     * 首页推荐专区商品
      */
     @Override
     @Cacheable(value = "getRecommendProducts", key="'www'", unless="#result == null")
@@ -84,4 +73,31 @@ public class HomeServiceImpl implements HomeService {
         return JsonModel.newInstance().success(list);
     }
 
+    /**
+     * 首页专题数据
+     */
+    @Override
+    public JsonModel getHomeTopicData() {
+        // 大专题:6,小专题:5,商品专题:4,优质供应商:3
+        Map<String, Object> topicMap = new HashMap<>();
+        // 6大专题二级楼层
+        List<HomeFloor> bigTopicFloors = homeDao.getHomeBigTopicFloor();
+        bigTopicFloors.forEach(bigTopic -> {
+            List<ImageLink>  topicData = homeDao.getBigTopicData(bigTopic.getId());
+            bigTopic.setFloorData(topicData);
+        });
+        topicMap.put("bigTopicData", bigTopicFloors);
+        // 专题4
+        List<ImageLink>  topicData4 = homeDao.getCommodityTopicData();
+        topicMap.put("topicData4", topicData4);
+        // 专题5
+        List<ImageLink>  topicData5 = homeDao.getSmallTopicData();
+        topicMap.put("topicData5", topicData5);
+        // 专题3
+        List<ImageLink>  topicData3 = homeDao.getSuppliersTopData();
+        topicMap.put("topicData3", topicData3);
+
+        return JsonModel.newInstance().success(topicMap);
+    }
+
 }

+ 40 - 6
src/main/resources/mapper/HomeMapper.xml

@@ -7,7 +7,7 @@
 		where delFlag = 0 and wwwEnabledStatus = '1'
 		order by sort
 	</select>
-	<select id="getHomeSecondFloor" resultType="com.caimei.www.pojo.HomeFloor">
+	<select id="getHomeBigTopicFloor" resultType="com.caimei.www.pojo.HomeFloor">
 		select id, title, description as detail
 		from cm_page_big_topic
 		where delFlag = 0 and enabledStatus = '1'
@@ -40,14 +40,12 @@
 		and p.shopID not in (SELECT s.`value` FROM `sys_dict` s WHERE s.type='heheShopID')
 		order by p.actSort
 	</select>
-	<select id="getBigTopicData" resultType="com.caimei.www.pojo.SubMenu">
+	<select id="getBigTopicData" resultType="com.caimei.www.pojo.ImageLink">
 		select
             id,
-            bigTopicId as topId,
-            title as name,
-            image,
+            title,
             link,
-            sort
+            image
 		from cm_page_big_topic_floor
 		<where>
 			delFlag = 0 and enabledStatus = '1'
@@ -58,4 +56,40 @@
 		order by sort ,enabledStatus ,createDate
 		limit 0,5
 	</select>
+    <select id="getCommodityTopicData" resultType="com.caimei.www.pojo.ImageLink">
+		select
+            id,
+            title,
+            link,
+            image,
+            beginTime,
+            endTime
+		from new_page_commodity_topic
+		where wwwEnabledStatus = 1
+		and <![CDATA[ endTime > sysdate() ]]>
+		and <![CDATA[ beginTime < sysdate() ]]>
+		order by sort limit 0,3
+    </select>
+	<select id="getSmallTopicData" resultType="com.caimei.www.pojo.ImageLink">
+		select
+            id,
+            title,
+            link,
+            image
+		from new_page_small_topic
+		where wwwEnabledStatus = 1
+		order by sort
+		limit 0,4
+	</select>
+	<select id="getSuppliersTopData" resultType="com.caimei.www.pojo.ImageLink">
+		select
+            id,
+            supplierName as title,
+            link,
+            image
+		from new_page_quality_supplier
+		where delFlag = 0 and wwwEnabledStatus = 1
+		order by sort
+	</select>
+
 </mapper>

BIN
src/main/resources/static/img/home/goodsup.png


+ 26 - 1
src/main/resources/static/js/index.js

@@ -4,6 +4,10 @@ var homeData = new Vue({
     data: {
         images: [],
         recommends: [],
+        bigTopicData: [],
+        topicData3: [],
+        topicData4: [],
+        topicData5: [],
         advertising: []
     },
     methods: {
@@ -28,7 +32,7 @@ var homeData = new Vue({
         },
         getRecommends: function(){
             var _self = this;
-            $.getJSON("/home/recommended").done(function (r) {
+            $.getJSON("/home/recommend").done(function (r) {
                 if (r.code === 0 && r.data) {
                     _self.recommends = r.data;
                     setTimeout(function(){
@@ -53,14 +57,35 @@ var homeData = new Vue({
                     _self.advertising = r.data;
                 }
             });
+        },
+        getTopicData: function(){
+            var _self = this;
+            $.getJSON("/home/topic").done(function (r) {
+                if (r.code === 0 && r.data) {
+                    _self.bigTopicData = r.data.bigTopicData;
+                    _self.topicData3 = r.data.topicData3;
+                    _self.topicData4 = r.data.topicData4;
+                    _self.topicData5 = r.data.topicData5;
+                }
+            });
+        },
+        test: function(key){
+            console.log(key);
+            console.log(this.$refs[key]);
+            if (key == 5) {
+                return true;
+            }
+            return false;
         }
 
     },
     created: function() {
         this.getBanners();
         this.getRecommends();
+        this.getTopicData();
     },
     mounted: function() {
+
         this.getAdvertising();
     }
 });

+ 54 - 19
src/main/resources/templates/index.html

@@ -23,12 +23,14 @@
         <a class="prev" href="javascript:void(0)"></a>
         <a class="next" href="javascript:void(0)"></a>
     </div>
+    <!--页面主体数据-->
     <div class="main">
-        <!--页面主体数据-->
         <div th:each="item: ${pageFloors}">
             <div th:if="${item.type}==1">
                 <!--推荐专区-->
-                <h2 th:text="${item.title}"></h2>
+                <div>
+                    <h2 th:text="${item.title}"></h2>
+                </div>
                 <div id="recommendBox" class="picScroll-left">
                     <ul class="bd">
                         <li v-for="product in recommends">
@@ -50,45 +52,78 @@
             </div>
             <div th:if="${item.type}==3">
                 <!--优质供应商-->
-                <h2 th:text="${item.title}"></h2>
+                <div>
+                    <h2 th:text="${item.title}">优质供应商</h2>
+                    <h5>采美正品联盟 质量保证</h5>
+                </div>
+                <div>
+                    <img src="/img/home/goodsup.png"/>
+                    <ul>
+                        <li v-for="topic in topicData3" style="display: inline-block">
+                            <a href="javascript:void(0);">
+                                <img :src="topic.image" :alt="topic.title">
+                                <p v-text="topic.title"></p>
+                            </a>
+                        </li>
+                    </ul>
+                </div>
             </div>
             <div th:if="${item.type}==4">
                 <!--商品专题-->
                 <div>
-                    <h2>专题</h2>
+                    <h2 th:text="${item.title}">商品专题</h2>
                     <a href="javascript:void(0);">更多商品专题</a>
                 </div>
-                <div>
-
-                </div>
+                <ul>
+                    <li v-for="topic in topicData4" style="display: inline-block">
+                        <a href="javascript:void(0);">
+                            <img :src="topic.image" :alt="topic.title">
+                            <p v-text="topic.title"></p>
+                        </a>
+                    </li>
+                </ul>
             </div>
             <div th:if="${item.type}==5">
                 <!--小专题-->
-                <h2 th:text="${item.title}"></h2>
+                <ul>
+                    <li v-for="topic in topicData5" style="display: inline-block">
+                        <a href="javascript:void(0);">
+                            <img :src="topic.image" :alt="topic.title">
+                            <p v-text="topic.title"></p>
+                        </a>
+                    </li>
+                </ul>
             </div>
             <div th:if="${item.type}==6">
                 <!--大专题-->
-                <div th:each="topic: ${item.secondFloors}">
+                <div v-for="bigTopic in bigTopicData">
                     <div>
-                        <h3 th:text="${topic.title}"></h3>
-                        <h5 th:text="${topic.detail}"></h5>
+                        <h3 v-text="bigTopic.title"></h3>
+                        <h5 v-text="bigTopic.detail"></h5>
                     </div>
-                    <div class="picScroll-left">
-                        <div th:each="sub: ${topic.floorData}">
+                    <ul>
+                        <li v-for="floor in bigTopic.floorData" style="display: inline-block">
                             <a href="javascript:void(0);">
-                                <img th:src="${sub.image}" th:alt="${sub.name}">
-                                <p th:text="${sub.name}"></p>
+                                <img :src="floor.image" :alt="floor.title">
+                                <p v-text="floor.title"></p>
                             </a>
-                        </div>
-                    </div>
+                        </li>
+                    </ul>
                 </div>
             </div>
         </div>
     </div>
     <!--右侧边栏导航-->
-    <div></div>
+    <div><hr></div>
     <!--左侧广告图-->
-    <div></div>
+    <div class="ad">
+        <div v-for="ad in advertising">
+            <a href="javascript:void(0);">
+                <img :src="ad.image" :alt="ad.title">
+                <p v-text="ad.title"></p>
+            </a>
+        </div>
+    </div>
 </div>
 
 <!-- 引入底部 -->