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