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 |  346 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 334 insertions(+), 12 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 7689c23..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
@@ -21,12 +21,26 @@
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
 import com.yeshi.fanli.entity.accept.AcceptData;
+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.hongbao.HongBaoManageService;
+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;
 
@@ -52,9 +66,111 @@
 	@Resource
 	private DynamicInfoService dynamicInfoService;
 
+	@Resource
+	private SpecialService specialService;
+
+	@Resource
+	private ArticleOfficialService articleOfficialService;
+	
+	@Resource
+	private SwiperPictureService swiperPictureService;
+
+	@Resource
+	private ConfigService configService;
+	
 
 	/**
+	 * 鏌ヨ椤堕儴鍒嗙被
+	 * 
+	 * @param acceptData
+	 * @param page
+	 * @param cid
+	 * @param out
+	 */
+	@RequestMapping(value = "getClass", method = RequestMethod.POST)
+	public void getClass(AcceptData acceptData, Integer cid, PrintWriter out) {
+		// ios 鍙繑鍥炲瓙闆嗗垎绫�
+		if (cid != null) {
+			List<GoodsClass> list = new ArrayList<GoodsClass>();
+
+			switch (cid) {
+			case 1:
+				list.add(new GoodsClass(0L, "浠婃棩鍗曞搧"));
+				list.addAll(DaTaoKeUtil.goodsClasses);
+				break;
+			case 2:
+				break;
+			case 3:
+				break;
+			case 4:
+				break;
+			case 5:
+				list.add(new GoodsClass(0L, "鍏ㄩ儴"));
+				list.add(new GoodsClass(1L, "娣樺疂"));
+				list.add(new GoodsClass(2L, "浜笢"));
+				list.add(new GoodsClass(3L, "鎷煎澶�"));
+				break;
+			default:
+				break;
+			}
+			JSONObject data = new JSONObject();
+			data.put("list", JsonUtil.getApiCommonGson().toJson(list));
+			out.print(JsonUtil.loadTrueResult(data));
+			return;
+		}
+
+		// Android 杩斿洖鍒嗙被浠ュ強椤堕儴鏁版嵁
+		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, "鍏ㄩ儴"));
+		sub5.add(new GoodsClass(1L, "娣樺疂"));
+		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_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
@@ -68,15 +184,26 @@
 			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);
+		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 {
@@ -89,10 +216,87 @@
 		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() {
@@ -104,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) {
@@ -123,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) {
@@ -155,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