From 6fdcc0c26dd33e87a024a69ed635d9aedb59cad6 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 07 一月 2020 12:02:50 +0800
Subject: [PATCH] 订单搜索引擎增量更新

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java |  420 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 282 insertions(+), 138 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
index fbd2c38..d557dad 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -24,15 +24,22 @@
 import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
 import com.yeshi.fanli.entity.bus.homemodule.Special;
 import com.yeshi.fanli.entity.bus.homemodule.SpecialLabel;
+import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
+import com.yeshi.fanli.entity.common.JumpDetailV2;
 import com.yeshi.fanli.entity.dynamic.DynamicInfo;
 import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
+import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService;
 import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
 import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
 import com.yeshi.fanli.service.inter.homemodule.SpecialService;
+import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
 import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
 import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.VersionUtil;
 import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
+import com.yeshi.fanli.vo.dynamic.ArticleVO;
 import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
 
 import net.sf.json.JSONObject;
@@ -61,130 +68,17 @@
 
 	@Resource
 	private SpecialService specialService;
+
+	@Resource
+	private ArticleOfficialService articleOfficialService;
 	
+	@Resource
+	private SwiperPictureService swiperPictureService;
+
+	@Resource
+	private ConfigService configService;
 	
 
-	/**
-	 * 鍔ㄦ�佸晢鍝佸垪琛�
-	 * @param acceptData
-	 * @param page
-	 * @param cid
-	 * @param subId
-	 * @param out
-	 */
-	@RequestMapping(value = "getList", method = RequestMethod.POST)
-	public void getList(AcceptData acceptData, Integer page, Long cid, Long subId, PrintWriter out) {
-		if (cid == null) {
-			out.print(JsonUtil.loadFalseResult("涓诲垎绫籭d涓嶈兘涓虹┖"));
-			return;
-		}
-
-		if (cid != null && cid == 5) {
-			// 娲诲姩涓婚
-			getSpecialList(acceptData, page, subId, out);
-			return;
-		}
-		
-		
-		long count = 0;
-		
-		int platform = 1;
-		if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
-			platform = 2;
-		}
-		
-		int version = Integer.parseInt(acceptData.getVersion());
-		List<DynamicInfo> list = dynamicInfoService.queryV2(platform, version, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, cid,
-				subId);
-		if (list == null) {
-			list = new ArrayList<DynamicInfo>();
-		} else {
-			count = dynamicInfoService.count(cid, subId);
-		}
-
-		JSONObject data = new JSONObject();
-		data.put("count", count);
-		data.put("list", getGson().toJson(list));
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-	
-	
-	/**
-	 *  娲诲姩鍒楄〃
-	 * @param acceptData
-	 * @param out
-	 */
-	private void getSpecialList(AcceptData acceptData, Integer page, Long subId, PrintWriter out) {
-		if (subId == null) {
-			out.print(JsonUtil.loadFalseResult("鍒嗙被id涓嶈兘涓虹┖"));
-			return;
-		}
-		
-		// 骞冲彴鍖哄垎
-		int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
-		List<String> listKey = new ArrayList<String>();
-		
-		if (subId == 1) { // 娣樺疂
-			listKey.add("special_channel_tb");
-		} else if (subId == 2) { // 浜笢
-			listKey.add("special_channel_jd");
-		} else if (subId == 3) { // 鎷煎澶�
-			listKey.add("special_channel_pdd");
-		} else { // 鍏ㄩ儴
-			listKey.add("special_channel_tb");
-			listKey.add("special_channel_jd");
-			listKey.add("special_channel_pdd");
-		}
-		
-		List<Special> list = specialService.listByPlaceKeyHasLabel((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, listKey, platformCode,
-				Integer.parseInt(acceptData.getVersion()));
-		
-		long time = System.currentTimeMillis();
-		
-		// 鍒犻櫎灏氭湭鍚敤鐨勮繃鏈熺殑
-		for (int i = 0; i < list.size(); i++) {
-			Special special = list.get(i);
-			if (special.getState() == 1L) {
-				list.remove(i--);
-			} else {
-				if (special.getStartTime() != null && special.getEndTime() != null)
-					special.setTimeTask(true);
-				else
-					special.setTimeTask(false);
-				
-				if (special.isTimeTask()) {
-					if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
-						list.remove(i--);
-					} else// 璁剧疆鍊掕鏃�
-					{
-						special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
-					}
-				}
-				
-				List<SpecialLabel> listLabels = special.getListLabels();
-				if (listLabels != null && !listLabels.isEmpty()) {
-					List<ClientTextStyleVO> labels = new ArrayList<>();
-					for (SpecialLabel specialLabel: listLabels) {
-						 labels.add(new ClientTextStyleVO(specialLabel.getName(), specialLabel.getBgColor()));
-					}
-					special.setLabels(labels);
-				}
-			}
-		}
-		
-		long count = specialService.countByPlaceKeyList( listKey, platformCode,	Integer.parseInt(acceptData.getVersion()));
-
-		GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
-		Gson gson = gsonBuilder.create();
-		JSONObject data = new JSONObject();
-		data.put("count", count);
-		data.put("list", gson.toJson(list));
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-	
-	
-	
 	/**
 	 * 鏌ヨ椤堕儴鍒嗙被
 	 * 
@@ -229,19 +123,19 @@
 		List<GoodsClass> listSub = new ArrayList<GoodsClass>();
 		listSub.add(new GoodsClass(0L, "浠婃棩鍗曞搧"));
 		listSub.addAll(DaTaoKeUtil.goodsClasses);
-		
+
 		GoodsClass menu1 = new GoodsClass(1L, "鐑攢");
 		menu1.setListSub(listSub);
-		
+
 		GoodsClass menu2 = new GoodsClass(2L, "鎺ㄨ崘");
 		menu2.setListSub(new ArrayList<GoodsClass>());
-		
+
 		GoodsClass menu3 = new GoodsClass(3L, "濂藉簵");
 		menu3.setListSub(new ArrayList<GoodsClass>());
-		
+
 		GoodsClass menu4 = new GoodsClass(4L, "閭�璇�");
 		menu4.setListSub(new ArrayList<GoodsClass>());
-		
+
 		GoodsClass menu5 = new GoodsClass(5L, "娲诲姩");
 		List<GoodsClass> sub5 = new ArrayList<GoodsClass>();
 		sub5.add(new GoodsClass(0L, "鍏ㄩ儴"));
@@ -249,28 +143,160 @@
 		sub5.add(new GoodsClass(2L, "浜笢"));
 		sub5.add(new GoodsClass(3L, "鎷煎澶�"));
 		menu5.setListSub(sub5);
-		
+
+		GoodsClass menu6 = new GoodsClass(6L, "瀛﹂櫌");
+		menu6.setListSub(new ArrayList<GoodsClass>());
+
 		List<GoodsClass> list = new ArrayList<GoodsClass>();
 		list.add(menu1);
 		list.add(menu5);
 		list.add(menu2);
+
 		// 2.0.5鐗堟湰闅愯棌 濂藉簵鏍忕洰
-		if (!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
+		if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
 			list.add(menu3);
 		}
-		
+
+		// 2.0.6鐗堟湰澧炲姞 瀛﹂櫌鏍忕洰
+		if (VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) {
+			list.add(menu6);
+		}
 		list.add(menu4);
-		
+
 		JSONObject data = new JSONObject();
 		data.put("list", JsonUtil.getApiCommonGson().toJson(list));
 		out.print(JsonUtil.loadTrueResult(data));
 	}
+	
+	/**
+	 * 鍔ㄦ�佸晢鍝佸垪琛�
+	 * 
+	 * @param acceptData
+	 * @param page
+	 * @param cid
+	 * @param subId
+	 * @param out
+	 */
+	@RequestMapping(value = "getList", method = RequestMethod.POST)
+	public void getList(AcceptData acceptData, Integer page, Long cid, Long subId, PrintWriter out) {
+		if (cid == null) {
+			out.print(JsonUtil.loadFalseResult("涓诲垎绫籭d涓嶈兘涓虹┖"));
+			return;
+		}
 
+		if (cid != null) {
+			if (cid == 5) { // 娲诲姩涓婚
+				getSpecialList(acceptData, page, subId, out);
+				return;
+			} else if (cid == 6) { // 瀛﹂櫌
+				getArticleList(acceptData, page, null, false, out);
+				return;
+			}
+		}
+
+		long count = 0;
+
+		int platform = 1;
+		if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
+			platform = 2;
+		}
+
+		int version = Integer.parseInt(acceptData.getVersion());
+		List<DynamicInfo> list = dynamicInfoService.queryV2(platform, version, (page - 1) * Constant.PAGE_SIZE,
+				Constant.PAGE_SIZE, cid, subId);
+		if (list == null) {
+			list = new ArrayList<DynamicInfo>();
+		} else {
+			count = dynamicInfoService.count(cid, subId);
+		}
+
+		JSONObject data = new JSONObject();
+		data.put("count", count);
+		data.put("list", getGson().toJson(list));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 娲诲姩鍒楄〃
+	 * 
+	 * @param acceptData
+	 * @param out
+	 */
+	private void getSpecialList(AcceptData acceptData, Integer page, Long subId, PrintWriter out) {
+		if (subId == null) {
+			out.print(JsonUtil.loadFalseResult("鍒嗙被id涓嶈兘涓虹┖"));
+			return;
+		}
+
+		// 骞冲彴鍖哄垎
+		int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
+		List<String> listKey = new ArrayList<String>();
+
+		if (subId == 1) { // 娣樺疂
+			listKey.add("special_channel_tb");
+		} else if (subId == 2) { // 浜笢
+			listKey.add("special_channel_jd");
+		} else if (subId == 3) { // 鎷煎澶�
+			listKey.add("special_channel_pdd");
+		} else { // 鍏ㄩ儴
+			listKey.add("special_channel_tb");
+			listKey.add("special_channel_jd");
+			listKey.add("special_channel_pdd");
+		}
+
+		List<Special> list = specialService.listByPlaceKeyHasLabel((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE,
+				listKey, platformCode, Integer.parseInt(acceptData.getVersion()));
+
+		long time = System.currentTimeMillis();
+
+		// 鍒犻櫎灏氭湭鍚敤鐨勮繃鏈熺殑
+		for (int i = 0; i < list.size(); i++) {
+			Special special = list.get(i);
+			if (special.getState() == 1L) {
+				list.remove(i--);
+			} else {
+				if (special.getStartTime() != null && special.getEndTime() != null)
+					special.setTimeTask(true);
+				else
+					special.setTimeTask(false);
+
+				if (special.isTimeTask()) {
+					if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
+						list.remove(i--);
+					} else// 璁剧疆鍊掕鏃�
+					{
+						special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
+					}
+				}
+
+				List<SpecialLabel> listLabels = special.getListLabels();
+				if (listLabels != null && !listLabels.isEmpty()) {
+					List<ClientTextStyleVO> labels = new ArrayList<>();
+					for (SpecialLabel specialLabel : listLabels) {
+						labels.add(new ClientTextStyleVO(specialLabel.getName(), specialLabel.getBgColor()));
+					}
+					special.setLabels(labels);
+				}
+			}
+		}
+
+		long count = specialService.countByPlaceKeyList(listKey, platformCode,
+				Integer.parseInt(acceptData.getVersion()));
+
+		GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
+		Gson gson = gsonBuilder.create();
+		JSONObject data = new JSONObject();
+		data.put("count", count);
+		data.put("list", gson.toJson(list));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
 
 
 	
+	
 	/**
 	 * 鏃堕棿澶勭悊
+	 * 
 	 * @return
 	 */
 	private Gson getGson() {
@@ -282,18 +308,18 @@
 				String desc = "";
 				if (value != null) {
 					// 鍒ゆ柇鏄惁鏄悓涓�澶�
-					
+
 					Calendar calendar = Calendar.getInstance();
 					calendar.setTime(value);
-					int y1 = calendar.get(Calendar.YEAR);//鑾峰彇骞翠唤
-					int d1 = calendar.get(Calendar.DAY_OF_YEAR);//鑾峰彇骞翠腑绗嚑澶�
+					int y1 = calendar.get(Calendar.YEAR);// 鑾峰彇骞翠唤
+					int d1 = calendar.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶�
 
 					Date nowDate = new Date();
 					Calendar calendar2 = Calendar.getInstance();
 					calendar2.setTime(nowDate);
-					int y2 = calendar2.get(Calendar.YEAR);//鑾峰彇骞翠唤
-					int d2 = calendar2.get(Calendar.DAY_OF_YEAR);//鑾峰彇骞翠腑绗嚑澶�
-					
+					int y2 = calendar2.get(Calendar.YEAR);// 鑾峰彇骞翠唤
+					int d2 = calendar2.get(Calendar.DAY_OF_YEAR);// 鑾峰彇骞翠腑绗嚑澶�
+
 					long old = value.getTime();
 					long now = nowDate.getTime();
 					if (y1 == y2) {
@@ -301,9 +327,9 @@
 							long cha = now - old;
 							if (cha < 1000 * 60 * 2L) {
 								desc = "鍒氬垰";
-							}else if (cha < 1000 * 60 * 60L) {
+							} else if (cha < 1000 * 60 * 60L) {
 								desc = (cha / (1000 * 60)) + "鍒嗛挓鍓�";
-							}else {
+							} else {
 								desc = (cha / (1000 * 60 * 60)) + "灏忔椂鍓�";
 							}
 						} else if (d2 - d1 == 1) {
@@ -333,4 +359,122 @@
 		Gson gson = gb.create();
 		return gson;
 	}
+	
+	/**
+	 * 娲诲姩鍒楄〃
+	 * 
+	 * @param acceptData
+	 * @param out
+	 */
+	private void getArticleList(AcceptData acceptData, Integer page, String key, boolean search, PrintWriter out) {
+		List<ArticleVO> list = articleOfficialService.queryValid((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, key);
+		if (list != null) {
+			for (ArticleVO article: list) {
+				String tags = article.getTags();
+				if (StringUtil.isNullOrEmpty(tags)) {
+					continue;
+				}
+				
+				String[] arrayTags = tags.split("\\s+");
+				if (arrayTags == null || arrayTags.length == 0) {
+					continue;
+				}
+				
+				String[] arrayTagsColour = null;
+				String tagsColour = article.getTagsColour();
+				if (!StringUtil.isNullOrEmpty(tagsColour)) {
+					arrayTagsColour = tagsColour.split("\\s+");
+				}
+				
+				String color = "#FE0014";
+				List<ClientTextStyleVO> labels = new ArrayList<ClientTextStyleVO>();
+				for (int i = 0; i < arrayTags.length;i ++) {
+					String tag = arrayTags[i];
+					if (arrayTagsColour != null && arrayTagsColour.length == arrayTags.length) {
+						color = arrayTagsColour[i];
+					}
+					ClientTextStyleVO styleVO = new ClientTextStyleVO();
+					styleVO.setColor(color);
+					styleVO.setContent(tag);
+					labels.add(styleVO);
+				}
+				article.setLabels(labels);
+			}
+		}
+		
+		GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
+		Gson gson = gsonBuilder.create();
+		
+		JSONObject data = new JSONObject();
+		if (page == 1 && !search) {
+			List<SwiperPicture> banners = swiperPictureService.getByBannerCardAndVersion("article_banners",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
+			if (banners == null)
+				banners = new ArrayList<>();
+			data.put("banners", gson.toJson(banners));
+			
+			List<Special> listSpecial = specialService.listByVersion(0, Integer.MAX_VALUE, "article_specials",
+					acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
+			if (listSpecial == null)
+				listSpecial = new ArrayList<>();
+			
+			for (Special special : listSpecial) {
+				boolean needLogin = special.isJumpLogin();
+				JumpDetailV2 jumpDetail = special.getJumpDetail();
+				if (jumpDetail != null) {
+					jumpDetail.setNeedLogin(needLogin);
+					special.setJumpDetail(jumpDetail);
+				}
+			}
+			data.put("specials", gson.toJson(listSpecial));
+		}
+		data.put("count", articleOfficialService.countValid(key));
+		data.put("list", gson.toJson(list));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+	
+	/**
+	 * 鏂囩珷鎼滅储
+	 * @param acceptData
+	 * @param page
+	 * @param key
+	 * @param out
+	 */
+	@RequestMapping(value = "readArticle", method = RequestMethod.POST)
+	public void readArticle(AcceptData acceptData, String id, PrintWriter out) {
+		if(StringUtil.isNullOrEmpty(id)) {
+			out.print(JsonUtil.loadFalseResult("id涓嶈兘涓虹┖"));
+			return;
+		}
+		articleOfficialService.updateReadNum(id);
+		out.print(JsonUtil.loadTrueResult("鎿嶄綔鎴愬姛"));
+	}
+	
+	
+	/**
+	 * 鏂囩珷鎼滅储
+	 * @param acceptData
+	 * @param page
+	 * @param key
+	 * @param out
+	 */
+	@RequestMapping(value = "searchArticle", method = RequestMethod.POST)
+	public void searchArticle(AcceptData acceptData, Integer page, String key, PrintWriter out) {
+		getArticleList(acceptData, page, key, true, out);
+	}
+	
+	
+	/**
+	 * 鏂囩珷鎼滅储
+	 * @param acceptData
+	 * @param page
+	 * @param key
+	 * @param out
+	 */
+	@RequestMapping(value = "getArticleHot", method = RequestMethod.POST)
+	public void getArticleHot(AcceptData acceptData, PrintWriter out) {
+		JSONObject data = new JSONObject();
+		data.put("words", configService.get("article_hot_words"));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
 }

--
Gitblit v1.8.0