From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java | 1939 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 1,017 insertions(+), 922 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java index 9d333e2..7cb00a5 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java @@ -1,922 +1,1017 @@ -package com.yeshi.fanli.controller.client.v2; - -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.List; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.yeshi.utils.JsonUtil; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.yeshi.fanli.dto.ConfigParamsDTO; -import com.yeshi.fanli.dto.jd.JDSearchResult; -import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; -import com.yeshi.fanli.dto.pdd.PDDGoodsResult; -import com.yeshi.fanli.entity.accept.AcceptData; -import com.yeshi.fanli.entity.bus.homemodule.Special; -import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture; -import com.yeshi.fanli.entity.common.JumpDetailV2; -import com.yeshi.fanli.entity.jd.JDGoods; -import com.yeshi.fanli.entity.taobao.TLJBuyGoods; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; -import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; -import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; -import com.yeshi.fanli.service.inter.goods.recommend.HomeRecommendGoodsService; -import com.yeshi.fanli.service.inter.goods.recommend.RecommendGoodsDeleteHistoryService; -import com.yeshi.fanli.service.inter.homemodule.DeviceSexService; -import com.yeshi.fanli.service.inter.homemodule.SpecialService; -import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; -import com.yeshi.fanli.service.inter.jd.JDGoodsService; -import com.yeshi.fanli.service.inter.lable.QualityFlashSaleService; -import com.yeshi.fanli.service.inter.lable.QualityGoodsService; -import com.yeshi.fanli.service.inter.monitor.MonitorService; -import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; -import com.yeshi.fanli.service.inter.pdd.PDDGoodsService; -import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; -import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService; -import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service; -import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService; -import com.yeshi.fanli.tag.PageEntity; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TaoBaoConstant; -import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.VersionUtil; -import com.yeshi.fanli.util.factory.MonitorFactory; -import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; -import com.yeshi.fanli.util.taobao.DaTaoKeUtil; -import com.yeshi.fanli.util.taobao.TaoBaoUtil; -import com.yeshi.fanli.util.taobao.TaoKeApiUtil; -import com.yeshi.fanli.vo.goods.GoodsDetailVO; -import com.yeshi.fanli.vo.goods.OtherInfo; -import com.yeshi.fanli.vo.goods.SpikeTimeVO; -import com.yeshi.fanli.vo.msg.ClientTextStyleVO; -import com.yeshi.fanli.vo.search.SearchKeyTOPVO; -import com.yeshi.fanli.vo.search.SearchKeyVO; -import com.yeshi.fanli.vo.tlj.ReduceHongBao; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -@Controller -@RequestMapping("api/v2/recommend") -public class RecommendControllerV2 { - - @Resource - private HongBaoManageService hongBaoManageService; - - @Resource - private QualityGoodsService qualityGoodsService; - - @Resource - private RedisManager redisManager; - - @Resource - private HomeRecommendGoodsService homeRecommendGoodsService; - - @Resource - private ConfigService configService; - - @Resource - private MonitorService monitorService; - - @Resource - private QualityFlashSaleService qualityFlashSaleService; - - @Resource - private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService; - - @Resource - private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService; - - @Resource - private JumpDetailV2Service jumpDetailV2Service; - - @Resource - private DeviceSexService deviceSexService; - - @Resource - private SpecialService specialService; - - @Resource - private SwiperPictureService swiperPictureService; - - @Resource - private JDGoodsService jdGoodsService; - - @Resource - private PDDGoodsService pddGoodsService; - - @Resource - private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService; - - @Resource - private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; - - @Resource - private DaTaoKeGoodsService daTaoKeGoodsService; - - @Resource - private HongBaoV2CountService hongBaoV2CountService; - - - - /** - * 鏂扮増鎺ㄨ崘涓撻绠$悊(1.5.3) - * - * @param acceptData - * @param out - */ - @RequestMapping(value = "getRecommendIndex") - public void getRecommendIndex(AcceptData acceptData, Long uid, PrintWriter out) { - try { - // 鑾峰彇璁惧瀹氫箟鎬у埆 - int deviceSex = deviceSexService.getDeviceSex(acceptData.getDevice()); - - // 1銆佷笓棰樻ā鍧� - JSONObject root = specialService.listCacheSpecialToIndex(acceptData, deviceSex); - - // 2銆侀《閮ㄨ疆鎾浘 - List<SwiperPicture> oldtopPicList = swiperPictureService.getByBannerCard("index_top"); - List<SwiperPicture> topPicList = new ArrayList<>(); - if (oldtopPicList != null && oldtopPicList.size() > 0) - topPicList.addAll(oldtopPicList); - - root.put("topPicList", JsonUtil.getApiCommonGson().toJson(topPicList)); - - // 3銆侀個璇锋湁濂� - List<SwiperPicture> invitePicList = null; - if ("ios".equalsIgnoreCase(acceptData.getPlatform()) - && configService.iosOnLining(Integer.parseInt(acceptData.getVersion()))) { - // 濡傛灉IOS褰撳墠鐗堟湰澶勪簬瀹℃牳鐘舵�佸氨涓嶈繑鍥� - } else { - invitePicList = swiperPictureService.getByBannerCard("index_invite"); - } - - if (invitePicList == null) { - invitePicList = new ArrayList<SwiperPicture>(); - } - root.put("invitePicList", JsonUtil.getApiCommonGson().toJson(invitePicList)); - - // 4銆両OS鐨勫簳閮ㄧ綉椤甸摼鎺� - String platform = acceptData.getPlatform(); - if ("ios".equalsIgnoreCase(platform)) { - root.put("htmlLink", configService.get("index_html_link_ios")); - } - - root.put("spikeGoods", getSpikeGoodsContent(acceptData)); - if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) - root.put("scoreExchange", getScoreExchangeInfo(acceptData)); - - if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) - root.put("searchDiscovery", getSearchDiscoveryInfo(acceptData)); - - out.print(JsonUtil.loadTrueResult(root)); - } catch (Exception e) { - out.print(JsonUtil.loadFalseResult(1, "鑾峰彇鏁版嵁澶辫触")); - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - } - - /** - * 闄愭椂绉掓潃 1.5.3 - * - * @param acceptData - * @param out - */ - @RequestMapping(value = "getSpikeGoods") - public void getSpikeGoods(AcceptData acceptData, PrintWriter out) { - JSONObject root = getSpikeGoodsContent(acceptData); - out.print(JsonUtil.loadTrueResult(root)); - } - - private JSONObject getSpikeGoodsContent(AcceptData acceptData) { - long nowTime = System.currentTimeMillis(); - Calendar calendar= Calendar.getInstance(); - calendar.setTimeInMillis(nowTime); - List<String> dtoList = DaTaoKeUtil.getDingDongQiangTime(calendar); - int dateNum = Integer.parseInt(TimeUtil.getGernalTime(nowTime, "ddHH")); - String timeStr = null; - int nextPos = 0; - for (int i = 0; i < dtoList.size() - 1; i++) { - if (dateNum >= Integer.parseInt(dtoList.get(i)) && dateNum < Integer.parseInt(dtoList.get(i + 1))) { - timeStr = dtoList.get(i); - nextPos = i + 1; - break; - } - } - - if (timeStr == null) - timeStr = dtoList.get(dtoList.size() - 1); - - long nextTime = nowTime + 1000 * 60 * 60L;// 榛樿涓�1灏忔椂 - if (nextPos < dtoList.size()) { - nextTime = TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(nowTime, "yyyyMM") + dtoList.get(nextPos), - "yyyyMMddHH"); - } - - JSONArray array = null; - String timekey = String.format("spikeGoods_hour_new-%s-%s", acceptData.getPlatform(), acceptData.getVersion()); - String cachekey = String.format("spikeGoodsList_new-%s-%s", acceptData.getPlatform(), acceptData.getVersion()); - Calendar nowCalendar = Calendar.getInstance(); - nowCalendar.setTimeInMillis(nowTime); - int hour = nowCalendar.get(Calendar.HOUR_OF_DAY); - - String timeValue = redisManager.getCommonString(timekey); - if (timeValue == null || !timeValue.equals(hour + "")) { - redisManager.cacheCommonString(timekey, hour + "", 60 * 30); - } else { - String cacheValue = redisManager.getCommonString(cachekey); - if (!StringUtil.isNullOrEmpty(cacheValue)) { - array = JSONArray.fromObject(cacheValue); - } - } - - JumpDetailV2 jumpDetail = null; - if(VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) { - jumpDetail = jumpDetailV2Service.getByTypeCache("spike_goods_list"); - } else { - jumpDetail = jumpDetailV2Service.getByTypeCache("web"); - } - - - if (array == null) { - array = new JSONArray(); - - BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); - BigDecimal shareRate = hongBaoManageService.getShareRate(); - - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - - // 缂撳瓨涓笉瀛樺湪 - List<DaTaoKeDetailV2> listGoods = daTaoKeGoodsDetailV2Service.getDingDongQiangData(timeStr); - if (listGoods == null) { - listGoods = new ArrayList<>(); - } - - if (listGoods != null && listGoods.size() > 3) - listGoods = listGoods.subList(0, 3); - - /* 閬嶅巻鍒楄〃鏁版嵁 */ - - for (DaTaoKeDetailV2 detail : listGoods) { - TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(detail); - if (taoBaoGoodsBrief == null) { - continue; - } - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE)); - - JSONObject params = new JSONObject(); - params.put("url", configService.get("spike_goods_link") + "?id=" + taoBaoGoodsBrief.getAuctionId()); - - JSONObject goods = new JSONObject(); - goods.put("goods", gson.toJson(detailVO)); - goods.put("params", params); - goods.put("jumpDetail", jumpDetail); - - // 1.5.4鍙婁互鍚庤繑鍥� - if (VersionUtil.greaterThan_1_5_40(acceptData.getPlatform(), acceptData.getVersion())) { - array.add(goods); - } else { - array.add(goods.optJSONObject("goods")); - } - } - - // 缂撳瓨鍗婁釜灏忔椂 - redisManager.cacheCommonString(cachekey, array.toString(), 60 * 30); - } - - // 鑾峰彇浠婂ぉ鐨勬暟鎹� - - Long endTime = nextTime - nowTime; - - JSONObject root = new JSONObject(); - - if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) { - root.put("time", nextTime); - root.put("endTime", endTime > 0 ? endTime : 0); - JSONArray imgArray = new JSONArray(); - if (array != null) - for (int i = 0; i < array.size(); i++) { - imgArray.add(array.optJSONObject(i).optJSONObject("goods").optString("picUrl")); - } - root.put("imgList", imgArray); - JSONObject params = new JSONObject(); - params.put("url", configService.get("spike_goods_link")); - root.put("params", params); - root.put("jumpDetail", jumpDetail); - root.put("name", "闄愭椂绉掓潃"); - root.put("desc", "鏁寸偣鏇存柊锛屽ソ鐗╂姠璐�"); - } else { - root.put("time", nextTime); - root.put("endTime", endTime > 0 ? endTime : 0); - root.put("listgoods", array); - JSONObject params = new JSONObject(); - params.put("url", configService.get("spike_goods_link")); - root.put("params", params); - root.put("jumpDetail", jumpDetail); - } - - root.put("time", nextTime); - root.put("endTime", endTime > 0 ? endTime : 0); - root.put("listgoods", array); - - return root; - } - - - - /** - * 闄愭椂绉掓潃鍒楄〃 - * @param acceptData - * @param page - * @param auctionId - * @param time - * @param out - */ - @RequestMapping("getSpikTime") - public void getSpikTime(AcceptData acceptData, PrintWriter out) { - List<SpikeTimeVO> list = new ArrayList<SpikeTimeVO>(); - SpikeTimeVO spikeTime1 = new SpikeTimeVO(); - spikeTime1.setTime("08:00"); - spikeTime1.setState("杩涜涓�"); - spikeTime1.setRequestTime("2408"); - - SpikeTimeVO spikeTime2 = new SpikeTimeVO(); - spikeTime2.setTime("10:00"); - spikeTime2.setState("杩涜涓�"); - spikeTime2.setChecked(true); - spikeTime2.setRequestTime("2410"); - - SpikeTimeVO spikeTime3 = new SpikeTimeVO(); - spikeTime3.setTime("13:00"); - spikeTime3.setState("鍗冲皢寮�濮�"); - spikeTime3.setRequestTime("2413"); - - SpikeTimeVO spikeTime4 = new SpikeTimeVO(); - spikeTime4.setTime("15:00"); - spikeTime4.setState("鍗冲皢寮�濮�"); - spikeTime4.setRequestTime("2415"); - - list.add(spikeTime1); - list.add(spikeTime2); - list.add(spikeTime3); - list.add(spikeTime4); - - JSONObject data = new JSONObject(); - data.put("count", list.size()); - data.put("list", list); - out.print(JsonUtil.loadTrueResult(data)); - } - - - - /** - * 闄愭椂绉掓潃鍒楄〃 - * @param acceptData - * @param page - * @param auctionId - * @param time - * @param out - */ - @RequestMapping("getSpikeGoodsList") - public void getSpikeGoodsList(AcceptData acceptData, Integer page, Long goodsId, String qtime, PrintWriter out) { - List<DaTaoKeDetailV2> detailList0 = daTaoKeGoodsDetailV2Service.getDingDongQiangData(qtime); - if (detailList0 == null) - detailList0 = new ArrayList<>(); - - List<DaTaoKeDetailV2> detailList = new ArrayList<>(); - detailList.addAll(detailList0); - JSONArray array = new JSONArray(); - if (page == 1 && goodsId != null && detailList != null) { - for (int i = 0; i < detailList.size(); i++) { - if (detailList.get(i).getGoodsId().longValue() == goodsId) { - DaTaoKeDetailV2 goods = detailList.get(i); - detailList.remove(i); - detailList.add(0, goods); - break; - } - } - } - - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - if (detailList != null) { - BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); - BigDecimal shareRate = hongBaoManageService.getShareRate(); - ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE); - - for (DaTaoKeDetailV2 detail : detailList) { - array.add(gson.toJson(GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(detail), paramsDTO))); - } - } - - JSONObject data = new JSONObject(); - data.put("count", detailList.size()); - data.put("list", array); - out.print(JsonUtil.loadTrueResult(data)); - } - - - - - /** - * 閲戝竵鍏戞崲淇℃伅 - * - * @param acceptData - * @return - */ - private JSONObject getScoreExchangeInfo(AcceptData acceptData) { - - JSONObject root = new JSONObject(); - JSONArray array = new JSONArray(); - array.add("http://img.flqapp.com/resource/integral/integral_home_icon_2.png"); - array.add("http://img.flqapp.com/resource/integral/integral_home_icon_1.png"); - root.put("imgList", array); - JSONObject params = new JSONObject(); - params.put("balanceMore", true); - root.put("params", params); - root.put("jumpDetail", jumpDetailV2Service.getByTypeCache("integralExchange", - Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()))); - - root.put("name", "閲戝竵鍏戞崲"); - root.put("desc", "姣忔棩绛惧埌锛屾儕鍠滀笉鍋�"); - root.put("tagImg", "http://img.flqapp.com/resource/score_exchange_tag.png"); - return root; - } - - /** - * 閲戝竵鍏戞崲淇℃伅 - * - * @param acceptData - * @return - */ - private JSONObject getSearchDiscoveryInfo(AcceptData acceptData) { - JSONArray array = new JSONArray(); - String keys = configService.getSearchDiscoveryKeys(); - if (!StringUtil.isNullOrEmpty(keys)) { - JSONArray arrayKeys = JSONArray.fromObject(keys); - for (int i = 0; i < arrayKeys.size(); i++) { - String name = arrayKeys.get(i).toString(); - JSONObject params = new JSONObject(); - params.put("content", name); - - SearchKeyVO keyVO = new SearchKeyVO(); - keyVO.setName(name); - keyVO.setParams(params.toString()); - array.add(keyVO); - } - } - - JSONObject params = new JSONObject(); - params.put("url", configService.get("search_discovery_h5_link")); - - JSONObject root = new JSONObject(); - root.put("picture", "http://img.flqapp.com/resource/home_search_found.png"); - root.put("params", params); - root.put("jumpDetail", jumpDetailV2Service.getByTypeCache("web", - Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()))); - - root.put("jumpResult", jumpDetailV2Service.getByTypeCache("search_goods_result", - Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()))); - root.put("keyList", array); - return root; - } - - /** - * 棣栭〉搴曢儴鍟嗗搧鎺ㄨ崘 - * - * @param acceptData - * @param out - */ - @RequestMapping(value = "getGoodList") - public void getGoodList(AcceptData acceptData, Integer goodsType, Integer page, HttpServletRequest request, - PrintWriter out) { - - if (goodsType == null || page == null) { - out.print(JsonUtil.loadFalseResult("鍙傛暟淇℃伅涓嶆甯�")); - return; - } - - try { - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - taoBaoGuessUserLikeByDevice(acceptData, page, request, out); - return; - } - - if (goodsType == Constant.SOURCE_TYPE_JD) { - getIndexJDGoods(acceptData, page, out); - return; - } - - if (goodsType == Constant.SOURCE_TYPE_PDD) { - getIndexPDDGoods(acceptData, page, out); - return; - } - out.print(JsonUtil.loadFalseResult("鍟嗗搧绫诲瀷閿欒")); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - JSONObject data = new JSONObject(); - data.put("list", new JSONArray()); - data.put("count", 0); - out.print(JsonUtil.loadTrueResult(data)); - } - } - - /** - * 鏍规嵁璁惧淇℃伅鑾峰彇鐚滀綘鍠滄鐨勫唴瀹� - * - * @param acceptData - * @param imei - * -Android鐨処MEI淇℃伅 - * @param idfa - * -IOS鐨刬dfa骞垮憡鏍囪瘑淇℃伅 - */ - public void taoBaoGuessUserLikeByDevice(AcceptData acceptData, int page, HttpServletRequest request, - PrintWriter out) { - int pageSize = Constant.PAGE_SIZE; - JSONArray array = new JSONArray(); - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create(); - - String idfa = acceptData.getIdfa(); - String imei = acceptData.getImei(); - if (VersionUtil.greaterThan_1_5_70(acceptData.getPlatform(), acceptData.getVersion())) { - List<TaoBaoGoodsBrief> goodsList = homeRecommendGoodsService.listGoodsByPage(null, acceptData.getDevice(), - imei, idfa, page); - - if (page < 4) {// 鍓嶄笁椤靛姞鍏ユ洿鏂� - try { - taoBaoGoodsUpdateService.addUpdateQueueAsync(goodsList); - } catch (Exception e) { - } - } - - BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); - BigDecimal shareRate = hongBaoManageService.getShareRate(); - ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE); - - for (TaoBaoGoodsBrief goods : goodsList) { - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); - if (page < 3) - detailVO.setRecommend(true); - - try { - array.add(gson.toJson(detailVO)); - } catch (Exception e) { - e.printStackTrace(); - } - } - - if (page == 1) { - List<TLJBuyGoods> list = homeRecommendGoodsService.getZiGouLiJianHotGoods(acceptData.getDevice()); - if (list != null && list.size() > 0) { - BigDecimal rateBuy = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE; - ConfigParamsDTO paramsBuy = new ConfigParamsDTO(rateBuy, rateBuy, Constant.MAX_REWARD_RATE); - for (int i = list.size() - 1; i >= 0; i--) { - TLJBuyGoods goods = list.get(i); - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), paramsBuy); - - String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(), - TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE); - - ReduceHongBao reduceHongBao = new ReduceHongBao(); - reduceHongBao.setLeft(goods.getLeftHongBaoCount()); - reduceHongBao.setMoney(hongBao); - reduceHongBao.setName("浠樻绔嬪噺 "); - reduceHongBao.setTip(""); - reduceHongBao.setTotal(goods.getTotalHongBaoCount()); - - OtherInfo otherInfo = new OtherInfo(); - otherInfo.setReduceHongBao(reduceHongBao); - - detailVO.setOtherInfo(otherInfo); - detailVO.setPictureTag(new ClientTextStyleVO("绔嬪噺TOP" + (i + 1), "#E5005C", "#FCE431", null)); - detailVO.setRecommend(true); - array.add(0, gson.toJson(detailVO)); - } - } - } - - JSONObject data = new JSONObject(); - data.put("list", array); - data.put("count", 1000); - out.print(JsonUtil.loadTrueResult(data)); - return; - } - - // 浠庢帹鑽愭潵 - if (page <= 1) { - array.clear(); - if (!StringUtil.isNullOrEmpty(imei) || !StringUtil.isNullOrEmpty(idfa)) { - long startTime = java.lang.System.currentTimeMillis(); - - TaoBaoSearchResult result = TaoKeApiUtil.guessDeviceLike(page, 50, imei, idfa); - - if (result != null && result.getTaoBaoGoodsBriefs() != null) { - // 绛涢�� - List<GoodsDetailVO> goodsList = new ArrayList<>(); - - List<TaoBaoGoodsBrief> gList = recommendGoodsDeleteHistoryService - .filterGoods(acceptData.getDevice(), result.getTaoBaoGoodsBriefs()); - - // filter - try { - gList = daTaoKeGoodsDetailService.filterTaoBaoGoods(gList); - } catch (Exception e) { - } - - // 璁惧鎺ㄨ崘 - if (gList != null) { - BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); - BigDecimal shareRate = hongBaoManageService.getShareRate(); - ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE); - for (TaoBaoGoodsBrief goods : gList) { - if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && goods.getCouponAmount() != null - && goods.getCouponAmount().compareTo(new BigDecimal("5")) >= 0 - && goods.getBiz30day() > 1000 - && !StringUtil.isNullOrEmpty(goods.getPictUrlWhite())) { - - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); - detailVO.setRecommend(true); - goodsList.add(detailVO); - } - } - } - - try { - monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0, - (int) (java.lang.System.currentTimeMillis() - startTime), "鎺ㄨ崘鏁伴噺:" + goodsList.size())); - } catch (Exception e) { - e.printStackTrace(); - } - - Collections.shuffle(goodsList); - goodsList = goodsList.size() > 20 ? goodsList.subList(0, 20) : goodsList; - for (GoodsDetailVO goods : goodsList) { - array.add(gson.toJson(goods)); - } - } else { - try { - monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0, - (int) (java.lang.System.currentTimeMillis() - startTime), "鏃犳帹鑽�")); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - JSONArray localArray = qualityGoodsService.getRecommendToIndexV2((page - 1) * pageSize, pageSize); - array.addAll(localArray); - } else {// 浠庣簿閫夊簱鏉� - array = qualityGoodsService.getRecommendToIndexV2((page - 1) * pageSize, pageSize); - if (array == null) { - out.print(JsonUtil.loadFalseResult("娌℃湁鏇村浜�")); - return; - } - } - - JSONObject data = new JSONObject(); - data.put("list", array); - data.put("count", 1000); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 浜笢棣栭〉鍟嗗搧 - * - * @param acceptData - * @param page - * @param out - */ - private void getIndexJDGoods(AcceptData acceptData, int page, PrintWriter out) { - JDSearchResult result = jdGoodsService.getIndexJDGoods(page); - long count = 0; - JSONObject data = new JSONObject(); - JSONArray array = new JSONArray(); - if (result != null) { - PageEntity pageEntity = result.getPageEntity(); - if (pageEntity != null) { - count = pageEntity.getTotalCount(); - } - - List<JDGoods> goodsList = result.getGoodsList(); - if (goodsList != null && goodsList.size() > 0) { - BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); - BigDecimal shareRate = hongBaoManageService.getShareRate(); - ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE); - - Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) - .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - for (JDGoods goods : goodsList) { - GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO); - array.add(gson.toJson(goodsDetailVO)); - } - } - } - - data.put("list", array); - data.put("count", count); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鐖嗘鎺掕鍟嗗搧-瀹炴椂鐑攢姒� - * - * @param acceptData - * @param page - * @param out - */ - private void getIndexPDDGoods(AcceptData acceptData, int page, PrintWriter out) { - PDDGoodsResult result = pddGoodsService.getTopGoodsList(page, 1); - int count = 0; - JSONArray array = new JSONArray(); - if (result != null) { - count = result.getTotalCount(); - Gson gson = JsonUtil.getApiCommonGson(); - List<PDDGoodsDetail> goodsList = result.getGoodsList(); - if (goodsList != null && goodsList.size() > 0) { - BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); - BigDecimal shareRate = hongBaoManageService.getShareRate(); - ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE); - - for (PDDGoodsDetail goods : goodsList) { - GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO); - array.add(gson.toJson(goodsDetailVO)); - } - } - } - - JSONObject data = new JSONObject(); - data.put("list", array); - data.put("count", count); - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鎼滅储鍙戠幇鍒楄〃 - * - * @param acceptData - * @param uid - * @param page - * @param out - */ - @RequestMapping(value = "getSearchDiscoveryTop") - public void getSearchDiscoveryTop(AcceptData acceptData, Long uid, Integer page, String callback, PrintWriter out) { - int count = 0; - List<SearchKeyTOPVO> list = new ArrayList<SearchKeyTOPVO>(); - - String keys = configService.getSearchDiscoveryKeys(); - if (!StringUtil.isNullOrEmpty(keys)) { - JSONArray arrayKeys = JSONArray.fromObject(keys); - if (arrayKeys != null && arrayKeys.size() > 0) { - count = arrayKeys.size(); - BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); - BigDecimal shareRate = hongBaoManageService.getShareRate(); - ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE); - - int j = 1; - for (int i = (page - 1) * 3; i < arrayKeys.size(); i++) { - if (j > 3) - break; - - String words = arrayKeys.get(i).toString(); - List<GoodsDetailVO> listGoods = new ArrayList<GoodsDetailVO>(); - - List<DaTaoKeDetailV2> listTaoKe = daTaoKeGoodsService.getSearchDiscoveryGoods(words); - if (listTaoKe != null && listTaoKe.size() > 0) { - for (DaTaoKeDetailV2 daTaoKeDetailV2 : listTaoKe) { - listGoods.add(GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(daTaoKeDetailV2), paramsDTO)); - if (listGoods.size() >= 3) - break; - } - } - - SearchKeyTOPVO keyTOPVO = new SearchKeyTOPVO(); - keyTOPVO.setName(words); - keyTOPVO.setListGoods(listGoods); - list.add(keyTOPVO); - - j++; - } - } - } - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - Gson gson = gsonBuilder.create(); - JSONObject data = new JSONObject(); - data.put("count", count); - data.put("list", gson.toJson(list)); - if (!StringUtil.isNullOrEmpty(callback)) { - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } else - out.print(JsonUtil.loadTrueResult(data)); - } - - /** - * 鑾峰彇涓撻娓犻亾娲诲姩 - * - * @param acceptData - * @param uid - * @param callback - * @param out - */ - @RequestMapping(value = "getSpecialChannelActivity") - public void getSpecialChannelActivity(AcceptData acceptData, Long uid, String callback, PrintWriter out) { - - int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); - - List<Special> list = specialService.listByPlaceKey("special_channel_activity", 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); - } - } - } - } - - GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); - Gson gson = gsonBuilder.create(); - JSONObject data = new JSONObject(); - data.put("count", list.size()); - data.put("list", gson.toJson(list)); - if (!StringUtil.isNullOrEmpty(callback)) { - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); - } else - out.print(JsonUtil.loadTrueResult(data)); - } - - - /** - * 鑾峰彇涓撻娓犻亾娲诲姩 - * - * @param acceptData - * @param uid - * @param callback - * @param out - */ - @RequestMapping(value = "getGuide") - public void getGuide(AcceptData acceptData, Long uid, PrintWriter out) { - String tips = null; - if (uid == null || uid <= 0) { - tips = configService.get("tip_guide_new_user"); - } else { - long rebateOrder = hongBaoV2CountService.countRebateOrder(uid); - long shareOrInviteOrder = hongBaoV2CountService.countShareOrInviteOrder(uid); - if (rebateOrder + shareOrInviteOrder >= 3) { - // 鐔熷鐗� - } else if (rebateOrder <= 0 && shareOrInviteOrder <= 0) { - // 鏂颁汉鐗� - tips = configService.get("tip_guide_new_user"); - } else if (rebateOrder > 0 && shareOrInviteOrder <= 0) { - // 鐪侀挶鐗� - tips = configService.get("tip_guide_save_money"); - } else { - // 璧氶挶鐗� - tips = configService.get("tip_guide_share_invite"); - } - } - - if (StringUtil.isNullOrEmpty(tips)) { - out.print(JsonUtil.loadFalseResult("鏆傛棤鎻愮ず")); - return; - } - - JSONObject data = JSONObject.fromObject(tips); - out.print(JsonUtil.loadTrueResult(data)); - } - -} +package com.yeshi.fanli.controller.client.v2; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO; +import com.yeshi.fanli.dto.common.CommonContentResult; +import com.yeshi.fanli.dto.common.CommonContentTypeEnum; +import com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.lijin.manager.GoodsLijinMnager; +import com.yeshi.fanli.service.inter.goods.CommonTemplateContentService; +import com.yeshi.goods.facade.dto.taobao.dataoke.DingDongTime; +import com.yeshi.fanli.dto.jd.JDSearchResult; +import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; +import com.yeshi.fanli.dto.pdd.PDDGoodsResult; +import com.yeshi.fanli.entity.accept.AcceptData; +import com.yeshi.fanli.entity.bus.homemodule.Special; +import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; +import com.yeshi.fanli.entity.common.JumpDetailV2; +import com.yeshi.fanli.entity.jd.JDGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.fanli.entity.taobao.TLJBuyGoods; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; +import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; +import com.yeshi.fanli.service.inter.goods.recommend.HomeRecommendGoodsService; +import com.yeshi.fanli.service.inter.goods.recommend.RecommendGoodsDeleteHistoryService; +import com.yeshi.fanli.service.inter.homemodule.DeviceSexService; +import com.yeshi.fanli.service.inter.homemodule.SpecialService; +import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; +import com.yeshi.fanli.service.inter.jd.JDGoodsService; +import com.yeshi.fanli.service.inter.lable.QualityFlashSaleService; +import com.yeshi.fanli.service.inter.lable.QualityGoodsService; +import com.yeshi.fanli.service.inter.monitor.MonitorService; +import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; +import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; +import com.yeshi.fanli.service.inter.pdd.PDDGoodsService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; +import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service; +import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService; +import com.yeshi.common.entity.PageEntity; +import com.yeshi.fanli.util.*; +import com.yeshi.fanli.util.factory.MonitorFactory; +import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; +import com.yeshi.fanli.util.taobao.DaTaoKeUtil; +import com.yeshi.fanli.util.taobao.TaoBaoUtil; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; +import com.yeshi.fanli.vo.goods.OtherInfo; +import com.yeshi.fanli.vo.goods.SpikeTimeVO; +import com.yeshi.fanli.vo.homemodule.BannerVO; +import com.yeshi.common.vo.ClientTextStyleVO; +import com.yeshi.fanli.vo.search.SearchKeyTOPVO; +import com.yeshi.fanli.vo.search.SearchKeyVO; +import com.yeshi.fanli.vo.tlj.ReduceHongBao; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.TimeUtil; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.PrintWriter; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; +import java.util.List; + +@Controller +@RequestMapping("api/v2/recommend") +public class RecommendControllerV2 { + + @Resource + private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; + + @Resource + private QualityGoodsService qualityGoodsService; + + @Resource + private RedisManager redisManager; + + @Resource + private HomeRecommendGoodsService homeRecommendGoodsService; + + @Resource + private ConfigService configService; + + @Resource + private MonitorService monitorService; + + @Resource + private QualityFlashSaleService qualityFlashSaleService; + + @Resource + private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService; + + @Resource + private JumpDetailV2Service jumpDetailV2Service; + + @Resource + private DeviceSexService deviceSexService; + + @Resource + private SpecialService specialService; + + @Resource + private SwiperPictureService swiperPictureService; + + @Resource + private JDGoodsService jdGoodsService; + + @Resource + private PDDGoodsService pddGoodsService; + + @Resource + private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService; + + @Resource + private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; + + @Resource + private DaTaoKeGoodsService daTaoKeGoodsService; + + @Resource + private HongBaoV2CountService hongBaoV2CountService; + + @Resource + private HongBaoManageService hongBaoManageService; + + @Resource + private GoodsLijinMnager goodsLijinMnager; + + @Resource + private CommonTemplateContentService commonTemplateContentService; + + /** + * 鏂扮増鎺ㄨ崘涓撻绠$悊(1.5.3) + * + * @param acceptData + * @param out + */ + @RequestMapping(value = "getRecommendIndex") + public void getRecommendIndex(AcceptData acceptData, Long uid, PrintWriter out) { + try { + // 鑾峰彇璁惧瀹氫箟鎬у埆 + int deviceSex = deviceSexService.getDeviceSex(acceptData.getDevice(), acceptData.getSystem()); + + // 1銆佷笓棰樻ā鍧� + JSONObject root = specialService.listCacheSpecialToIndex(acceptData, deviceSex, acceptData.getSystem()); + + // 2銆侀《閮ㄨ疆鎾浘 + List<BannerVO> oldtopPicList = swiperPictureService.getByBannerCardAndVersion("index_top", + acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); + + List<BannerVO> topPicList = new ArrayList<>(); + if (oldtopPicList != null && oldtopPicList.size() > 0) + topPicList.addAll(oldtopPicList); + + root.put("topPicList", JsonUtil.getApiCommonGson().toJson(topPicList)); + + // 3銆侀個璇锋湁濂� + List<BannerVO> invitePicList = null; + if ("ios".equalsIgnoreCase(acceptData.getPlatform()) + && configService.iosOnLining(Integer.parseInt(acceptData.getVersion()), acceptData.getSystem())) { + // 濡傛灉IOS褰撳墠鐗堟湰澶勪簬瀹℃牳鐘舵�佸氨涓嶈繑鍥� + } else { + invitePicList = swiperPictureService.getByBannerCardAndVersion("index_invite", acceptData.getPlatform(), + Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); + } + + if (invitePicList == null) { + invitePicList = new ArrayList<BannerVO>(); + } + root.put("invitePicList", JsonUtil.getApiCommonGson().toJson(invitePicList)); + + // 4銆両OS鐨勫簳閮ㄧ綉椤甸摼鎺� + String platform = acceptData.getPlatform(); + if ("ios".equalsIgnoreCase(platform)) { + root.put("htmlLink", configService.getValue(ConfigKeyEnum.indexHtmlLinkIos.getKey(), acceptData.getSystem())); + } + + root.put("spikeGoods", getSpikeGoodsContent(acceptData)); + if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) + root.put("scoreExchange", getScoreExchangeInfo(acceptData)); + + if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) + root.put("searchDiscovery", getSearchDiscoveryInfo(acceptData)); + + + out.print(JsonUtil.loadTrueResult(root)); + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult(1, "鑾峰彇鏁版嵁澶辫触")); + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + + + /** + * 鐗逛环鎺ㄨ崘 + * + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "getRecommendIndexTJ") + public void getRecommendIndexTJ(AcceptData acceptData, Long uid, PrintWriter out) { + try { + // 鑾峰彇璁惧瀹氫箟鎬у埆 + int deviceSex = deviceSexService.getDeviceSex(acceptData.getDevice(), acceptData.getSystem()); + + // 1銆佷笓棰樻ā鍧� + JSONObject root = specialService.listCacheSpecialToIndex(acceptData, deviceSex, acceptData.getSystem()); + + // 2銆侀《閮ㄨ疆鎾浘 + List<BannerVO> oldtopPicList = swiperPictureService.getByBannerCardAndVersion("index_top", + acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); + + List<BannerVO> topPicList = new ArrayList<>(); + if (oldtopPicList != null && oldtopPicList.size() > 0) + topPicList.addAll(oldtopPicList); + + root.put("topPicList", JsonUtil.getApiCommonGson().toJson(topPicList)); + + // 3銆侀個璇锋湁濂� + List<BannerVO> invitePicList = null; + if ("ios".equalsIgnoreCase(acceptData.getPlatform()) + && configService.iosOnLining(Integer.parseInt(acceptData.getVersion()), acceptData.getSystem())) { + // 濡傛灉IOS褰撳墠鐗堟湰澶勪簬瀹℃牳鐘舵�佸氨涓嶈繑鍥� + } else { + invitePicList = swiperPictureService.getByBannerCardAndVersion("index_invite", acceptData.getPlatform(), + Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); + } + + if (invitePicList == null) { + invitePicList = new ArrayList<BannerVO>(); + } + root.put("invitePicList", JsonUtil.getApiCommonGson().toJson(invitePicList)); + + // 4銆両OS鐨勫簳閮ㄧ綉椤甸摼鎺� + String platform = acceptData.getPlatform(); + if ("ios".equalsIgnoreCase(platform)) { + root.put("htmlLink", configService.getValue(ConfigKeyEnum.indexHtmlLinkIos.getKey(), acceptData.getSystem())); + } + + root.put("spikeGoods", getSpikeGoodsContent(acceptData)); + if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) + root.put("scoreExchange", getScoreExchangeInfo(acceptData)); + + if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())) + root.put("searchDiscovery", getSearchDiscoveryInfo(acceptData)); + + + //浠婃棩鐖嗘 + CommonContentResult commonContentResult = commonTemplateContentService.getContentList(CommonContentTypeEnum.pddHotGoodsRank, null, 1, 10, acceptData.getSystem()); + if (commonContentResult != null && commonContentResult.getGoodsList() != null && commonContentResult.getGoodsList().size() > 0) { + com.alibaba.fastjson.JSONObject hotSale = new com.alibaba.fastjson.JSONObject(); + JumpDetailV2 jumpDetailV2 = new JumpDetailV2(); + jumpDetailV2.setActivity("com.tejia.lijin.app.ui.sellwellcommodity.SellWellGoods"); + + hotSale.put("jumpDetail", jumpDetailV2); + com.alibaba.fastjson.JSONObject params = new com.alibaba.fastjson.JSONObject(); + String navs = "[{\"key\":\"pddHotGoodsRank\",\"title\":\"鎷煎澶歕"},{\"key\":\"jdHotGoodsRank\",\"title\":\"浜笢\"},{\"key\":\"tbHotGoodsRank\",\"title\":\"娣樺疂\"}]"; + params.put("navs", navs.replace("\"","\\"+"\"")); + hotSale.put("params", params); + + Collections.shuffle(commonContentResult.getGoodsList()); + + //鑾峰彇goodsList + GoodsMoneyConfigParamsDTO configParamsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + List<GoodsDetailVO> goodsList = goodsLijinMnager.loadCommonGoodsMoneyInfo(acceptData.getSystem(), uid, commonContentResult.getGoodsList(), configParamsDTO); + JSONArray array = new JSONArray(); + Gson gson = new Gson(); + for (GoodsDetailVO vo : goodsList) { + array.add(gson.toJson(vo)); + } + hotSale.put("goodsList", array); + root.put("hotSales", hotSale); + } + + + out.print(JsonUtil.loadTrueResult(root)); + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult(1, "鑾峰彇鏁版嵁澶辫触")); + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + + /** + * 闄愭椂绉掓潃 1.5.3 + * + * @param acceptData + * @param out + */ + @RequestMapping(value = "getSpikeGoods") + public void getSpikeGoods(AcceptData acceptData, PrintWriter out) { + JSONObject root = getSpikeGoodsContent(acceptData); + out.print(JsonUtil.loadTrueResult(root)); + } + + private JSONObject getSpikeGoodsContent(AcceptData acceptData) { + long nowTime = System.currentTimeMillis(); + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(nowTime); + List<DingDongTime> dtoList = DaTaoKeUtil.getDingDongQiangTime(calendar); + int dateNum = Integer.parseInt(TimeUtil.getGernalTime(nowTime, "ddHH")); + String timeStr = null; + int nextPos = 0; + for (int i = 0; i < dtoList.size() - 1; i++) { + if (dateNum >= Integer.parseInt(dtoList.get(i).getTime()) + && dateNum < Integer.parseInt(dtoList.get(i + 1).getTime())) { + timeStr = dtoList.get(i).getTime(); + nextPos = i + 1; + break; + } + } + + if (timeStr == null) + timeStr = dtoList.get(dtoList.size() - 1).getTime(); + + long nextTime = nowTime + 1000 * 60 * 60L;// 榛樿涓�1灏忔椂 + if (nextPos < dtoList.size()) { + nextTime = TimeUtil.convertToTimeTemp( + TimeUtil.getGernalTime(nowTime, "yyyyMM") + dtoList.get(nextPos).getTime(), "yyyyMMddHH"); + } + + JSONArray array = null; + String timekey = RedisKeyEnum.getRedisKey(RedisKeyEnum.spikeGoodsHourNew, acceptData.getPlatform() + "-" + acceptData.getVersion()); + String cachekey = RedisKeyEnum.getRedisKey(RedisKeyEnum.spikeGoodsListNew, acceptData.getPlatform() + "-" + acceptData.getVersion()); + + + Calendar nowCalendar = Calendar.getInstance(); + nowCalendar.setTimeInMillis(nowTime); + int hour = nowCalendar.get(Calendar.HOUR_OF_DAY); + + String timeValue = redisManager.getCommonString(timekey); + if (timeValue == null || !timeValue.equals(hour + "")) { + redisManager.cacheCommonString(timekey, hour + "", 60 * 30); + } else { + String cacheValue = redisManager.getCommonString(cachekey); + if (!StringUtil.isNullOrEmpty(cacheValue)) { + array = JSONArray.fromObject(cacheValue); + } + } + + JumpDetailV2 jumpDetail = null; + if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) { + jumpDetail = jumpDetailV2Service.getByTypeCache("spike_goods_list",acceptData.getSystem()); + } else { + jumpDetail = jumpDetailV2Service.getByTypeCache("web",acceptData.getSystem()); + } + + if (array == null) { + array = new JSONArray(); + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + // 缂撳瓨涓笉瀛樺湪 + List<DaTaoKeDetailV2> listGoods = daTaoKeGoodsDetailV2Service.getDingDongQiangData(timeStr); + if (listGoods == null) { + listGoods = new ArrayList<>(); + } + + if (listGoods != null && listGoods.size() > 3) + listGoods = listGoods.subList(0, 3); + + /* 閬嶅巻鍒楄〃鏁版嵁 */ + + GoodsMoneyConfigParamsDTO configParamsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + for (DaTaoKeDetailV2 detail : listGoods) { + TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(detail); + if (taoBaoGoodsBrief == null) { + continue; + } + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, configParamsDTO); + + JSONObject params = new JSONObject(); + params.put("url", configService.getValue(ConfigKeyEnum.spikeGoodsLink.getKey(), acceptData.getSystem()) + "?id=" + taoBaoGoodsBrief.getAuctionId()); + + JSONObject goods = new JSONObject(); + goods.put("goods", gson.toJson(detailVO)); + goods.put("params", params); + goods.put("jumpDetail", jumpDetail); + + // 1.5.4鍙婁互鍚庤繑鍥� + if (VersionUtil.greaterThan_1_5_40(acceptData.getPlatform(), acceptData.getVersion())) { + array.add(goods); + } else { + array.add(goods.optJSONObject("goods")); + } + } + + // 缂撳瓨鍗婁釜灏忔椂 + redisManager.cacheCommonString(cachekey, array.toString(), 60 * 30); + } + + // 鑾峰彇浠婂ぉ鐨勬暟鎹� + + Long endTime = nextTime - nowTime; + + JSONObject root = new JSONObject(); + + if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) { + root.put("time", nextTime); + root.put("endTime", endTime > 0 ? endTime : 0); + JSONArray imgArray = new JSONArray(); + if (array != null) + for (int i = 0; i < array.size(); i++) { + imgArray.add(array.optJSONObject(i).optJSONObject("goods").optString("picUrl")); + } + root.put("imgList", imgArray); + JSONObject params = new JSONObject(); + params.put("url", configService.getValue(ConfigKeyEnum.spikeGoodsLink.getKey(), acceptData.getSystem())); + root.put("params", params); + root.put("jumpDetail", jumpDetail); + root.put("name", "闄愭椂绉掓潃"); + root.put("desc", "鏁寸偣鏇存柊锛屽ソ鐗╂姠璐�"); + } else { + root.put("time", nextTime); + root.put("endTime", endTime > 0 ? endTime : 0); + root.put("listgoods", array); + JSONObject params = new JSONObject(); + params.put("url", configService.getValue(ConfigKeyEnum.spikeGoodsLink.getKey(), acceptData.getSystem())); + root.put("params", params); + root.put("jumpDetail", jumpDetail); + } + + root.put("time", nextTime); + root.put("endTime", endTime > 0 ? endTime : 0); + root.put("listgoods", array); + + return root; + } + + /** + * 闄愭椂绉掓潃鍒楄〃 + * + * @param acceptData + * @param out + */ + @RequestMapping("getSpikTime") + public void getSpikTime(AcceptData acceptData, PrintWriter out) { + List<DingDongTime> timeList = DaTaoKeUtil.getDingDongQiangTime(Calendar.getInstance()); + List<SpikeTimeVO> list = new ArrayList<SpikeTimeVO>(); + for (int i = 0; i < timeList.size(); i++) { + SpikeTimeVO spikeTime1 = new SpikeTimeVO(); + spikeTime1.setTime(timeList.get(i).getTime().subSequence(2, 4) + ":00"); + if (timeList.get(i).getState() <= 0) + spikeTime1.setState("杩涜涓�"); + else + spikeTime1.setState("鍗冲皢寮�濮�"); + if (timeList.get(i).getState() == 0) + spikeTime1.setChecked(true); + spikeTime1.setRequestTime(timeList.get(i).getTime()); + list.add(spikeTime1); + } + + JSONObject data = new JSONObject(); + data.put("count", list.size()); + data.put("list", list); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 闄愭椂绉掓潃鍒楄〃 + * + * @param acceptData + * @param page + * @param out + */ + @RequestMapping("getSpikeGoodsList") + public void getSpikeGoodsList(AcceptData acceptData, Integer page, String goodsId, String qtime, PrintWriter out) { + List<DaTaoKeDetailV2> detailList0 = daTaoKeGoodsDetailV2Service.getDingDongQiangData(qtime); + if (detailList0 == null) + detailList0 = new ArrayList<>(); + + List<DaTaoKeDetailV2> detailList = new ArrayList<>(); + detailList.addAll(detailList0); + JSONArray array = new JSONArray(); + if (page == 1 && goodsId != null && detailList != null) { + for (int i = 0; i < detailList.size(); i++) { + if ( TaoBaoUtil.isEqual( detailList.get(i).getGoodsId(), goodsId)) { + DaTaoKeDetailV2 goods = detailList.get(i); + detailList.remove(i); + detailList.add(0, goods); + break; + } + } + } + + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + if (detailList != null) { + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + for (DaTaoKeDetailV2 detail : detailList) { + array.add(gson.toJson(GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(detail), paramsDTO))); + } + } + + JSONObject data = new JSONObject(); + data.put("count", detailList.size()); + data.put("list", array); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 閲戝竵鍏戞崲淇℃伅 + * + * @param acceptData + * @return + */ + private JSONObject getScoreExchangeInfo(AcceptData acceptData) { + + JSONObject root = new JSONObject(); + JSONArray array = new JSONArray(); + array.add("http://img.flqapp.com/resource/integral/integral_home_icon_2.png"); + array.add("http://img.flqapp.com/resource/integral/integral_home_icon_1.png"); + root.put("imgList", array); + JSONObject params = new JSONObject(); + params.put("balanceMore", true); + root.put("params", params); + root.put("jumpDetail", jumpDetailV2Service.getByTypeCache("integralExchange", + Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem())); + + root.put("name", "閲戝竵鍏戞崲"); + root.put("desc", "姣忔棩绛惧埌锛屾儕鍠滀笉鍋�"); + root.put("tagImg", "http://img.flqapp.com/resource/score_exchange_tag.png"); + return root; + } + + /** + * 閲戝竵鍏戞崲淇℃伅 + * + * @param acceptData + * @return + */ + private JSONObject getSearchDiscoveryInfo(AcceptData acceptData) { + JSONArray array = new JSONArray(); + String keys = configService.getSearchDiscoveryKeys(acceptData.getSystem()); + if (!StringUtil.isNullOrEmpty(keys)) { + JSONArray arrayKeys = JSONArray.fromObject(keys); + for (int i = 0; i < arrayKeys.size(); i++) { + String name = arrayKeys.get(i).toString(); + JSONObject params = new JSONObject(); + params.put("content", name); + + SearchKeyVO keyVO = new SearchKeyVO(); + keyVO.setName(name); + keyVO.setParams(params.toString()); + array.add(keyVO); + } + } + + JSONObject params = new JSONObject(); + params.put("url", configService.getValue(ConfigKeyEnum.searchDiscoveryH5Link.getKey(), acceptData.getSystem())); + + JSONObject root = new JSONObject(); + root.put("picture", "http://img.flqapp.com/resource/home_search_found.png"); + root.put("params", params); + root.put("jumpDetail", jumpDetailV2Service.getByTypeCache("web", + Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem())); + + root.put("jumpResult", jumpDetailV2Service.getByTypeCache("search_goods_result", + Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem())); + root.put("keyList", array); + return root; + } + + /** + * 棣栭〉搴曢儴鍟嗗搧鎺ㄨ崘 + * + * @param acceptData + * @param out + */ + @RequestMapping(value = "getGoodList") + public void getGoodList(AcceptData acceptData, Long uid, Integer goodsType, Integer page, HttpServletRequest request, + PrintWriter out) { + + if (goodsType == null || page == null) { + out.print(JsonUtil.loadFalseResult("鍙傛暟淇℃伅涓嶆甯�")); + return; + } + + try { + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + taoBaoGuessUserLikeByDevice(acceptData, uid, page, request, out); + return; + } + + if (goodsType == Constant.SOURCE_TYPE_JD) { + getIndexJDGoods(acceptData, page, out); + return; + } + + if (goodsType == Constant.SOURCE_TYPE_PDD) { + getIndexPDDGoods(acceptData, page, out); + return; + } + out.print(JsonUtil.loadFalseResult("鍟嗗搧绫诲瀷閿欒")); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + JSONObject data = new JSONObject(); + data.put("list", new JSONArray()); + data.put("count", 0); + out.print(JsonUtil.loadTrueResult(data)); + } + } + + /** + * 鏍规嵁璁惧淇℃伅鑾峰彇鐚滀綘鍠滄鐨勫唴瀹� + * + * @param acceptData + * @param page + * @param request + * @param out + */ + public void taoBaoGuessUserLikeByDevice(AcceptData acceptData, Long uid, int page, HttpServletRequest request, + PrintWriter out) { + int pageSize = Constant.PAGE_SIZE; + + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create(); + + String idfa = acceptData.getIdfa(); + String imei = acceptData.getImei(); + if (VersionUtil.greaterThan_1_5_70(acceptData.getPlatform(), acceptData.getVersion())) { + List<TaoBaoGoodsBrief> goodsList = homeRecommendGoodsService.listGoodsByPage(null, acceptData.getDevice(), + imei, idfa, page); + + if (page < 4) {// 鍓嶄笁椤靛姞鍏ユ洿鏂� + try { + taoBaoGoodsUpdateService.addUpdateQueueAsync(goodsList); + } catch (Exception e) { + } + } + + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + + List<GoodsDetailVO> voList = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO,false); + + for (GoodsDetailVO vo : voList) { + if (page < 3) + vo.setRecommend(true); + } + + if (page == 1) { + List<TLJBuyGoods> list = homeRecommendGoodsService.getZiGouLiJianHotGoods(acceptData.getDevice()); + if (list != null && list.size() > 0) { + BigDecimal rateBuy = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE; + GoodsMoneyConfigParamsDTO paramsBuy = new GoodsMoneyConfigParamsDTO(rateBuy, rateBuy, Constant.MAX_REWARD_RATE, + hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP, acceptData.getSystem())); + for (int i = list.size() - 1; i >= 0; i--) { + TLJBuyGoods goods = list.get(i); + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), paramsBuy); + + String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(), + TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE, false); + + ReduceHongBao reduceHongBao = new ReduceHongBao(); + reduceHongBao.setLeft(goods.getLeftHongBaoCount()); + reduceHongBao.setMoney(hongBao); + reduceHongBao.setName("浠樻绔嬪噺 "); + reduceHongBao.setTip(""); + reduceHongBao.setTotal(goods.getTotalHongBaoCount()); + + OtherInfo otherInfo = new OtherInfo(); + otherInfo.setReduceHongBao(reduceHongBao); + + detailVO.setOtherInfo(otherInfo); + detailVO.setPictureTag(new ClientTextStyleVO("绔嬪噺TOP" + (i + 1), "#E5005C", "#FCE431", null)); + detailVO.setRecommend(true); + voList.add(0, detailVO); + } + } + } + + JSONArray array = new JSONArray(); + for (GoodsDetailVO vo : voList) { + if (acceptData.getSystem() == SystemEnum.yhqjx||acceptData.getSystem() == SystemEnum.hsb) { + //鏆傛椂涓嶇瓫閫夌孩鍖� +// if (!StringUtil.isNullOrEmpty(vo.getMoneyInfo().getHongBaoMoney())) { + array.add(gson.toJson(vo)); +// } + } else { + array.add(gson.toJson(vo)); + } + } + JSONObject data = new JSONObject(); + data.put("list", array); + data.put("count", 1000); + out.print(JsonUtil.loadTrueResult(data)); + return; + } + + // 浠庢帹鑽愭潵 + List<GoodsDetailVO> finalVOList = new ArrayList<>(); + if (page <= 1) { + if (!StringUtil.isNullOrEmpty(imei) || !StringUtil.isNullOrEmpty(idfa)) { + long startTime = java.lang.System.currentTimeMillis(); + + TaoBaoSearchResult result = TaoKeApiUtil.guessDeviceLike(page, 50, imei, idfa, ""); + + if (result != null && result.getTaoBaoGoodsBriefs() != null) { + // 绛涢�� + List<GoodsDetailVO> goodsList = new ArrayList<>(); + + List<TaoBaoGoodsBrief> gList = recommendGoodsDeleteHistoryService + .filterGoods(acceptData.getDevice(), result.getTaoBaoGoodsBriefs()); + + // filter + try { + gList = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(gList); + } catch (Exception e) { + } + + // 璁惧鎺ㄨ崘 + if (gList != null) { + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + List<TaoBaoGoodsBrief> deviceGoodsList = new ArrayList<>(); + for (TaoBaoGoodsBrief goods : gList) { + if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && goods.getCouponAmount() != null + && goods.getCouponAmount().compareTo(new BigDecimal("5")) >= 0 + && goods.getBiz30day() > 1000 + && !StringUtil.isNullOrEmpty(goods.getPictUrlWhite())) { + deviceGoodsList.add(goods); + } + } + List<GoodsDetailVO> voList = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, deviceGoodsList, paramsDTO,false); + for (GoodsDetailVO vo : voList) { + vo.setRecommend(true); + } + goodsList.addAll(voList); + } + + + try { + monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0, + (int) (java.lang.System.currentTimeMillis() - startTime), "鎺ㄨ崘鏁伴噺:" + goodsList.size())); + } catch (Exception e) { + e.printStackTrace(); + } + + Collections.shuffle(goodsList); + goodsList = goodsList.size() > 20 ? goodsList.subList(0, 20) : goodsList; + finalVOList.addAll(goodsList); + } else { + try { + monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0, + (int) (java.lang.System.currentTimeMillis() - startTime), "鏃犳帹鑽�")); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + List<GoodsDetailVO> voList = qualityGoodsService.getRecommendToIndexV2((page - 1) * pageSize, pageSize, acceptData.getPlatform(), acceptData.getVersion(), acceptData.getSystem()); + if (voList != null) + finalVOList.addAll(voList); + + } else {// 浠庣簿閫夊簱鏉� + List<GoodsDetailVO> voList = qualityGoodsService.getRecommendToIndexV2((page - 1) * pageSize, pageSize, acceptData.getPlatform(), acceptData.getVersion(), acceptData.getSystem()); + if (voList == null || voList.size() == 0) { + out.print(JsonUtil.loadFalseResult("娌℃湁鏇村浜�")); + return; + } + } + + JSONArray array = new JSONArray(); + for (GoodsDetailVO vo : finalVOList) { + if (acceptData.getSystem() == SystemEnum.yhqjx||acceptData.getSystem() == SystemEnum.hsb) { + if (!StringUtil.isNullOrEmpty(vo.getMoneyInfo().getHongBaoMoney())) { + array.add(gson.toJson(vo)); + } + } else { + array.add(gson.toJson(vo)); + } + } + + JSONObject data = new JSONObject(); + data.put("list", array); + data.put("count", 1000); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 浜笢棣栭〉鍟嗗搧 + * + * @param acceptData + * @param page + * @param out + */ + private void getIndexJDGoods(AcceptData acceptData, int page, PrintWriter out) { + JDSearchResult result = jdGoodsService.getIndexJDGoods(page, acceptData.getSystem()); + long count = 0; + JSONObject data = new JSONObject(); + JSONArray array = new JSONArray(); + if (result != null) { + PageEntity pageEntity = result.getPageEntity(); + if (pageEntity != null) { + count = pageEntity.getTotalCount(); + } + + List<JDGoods> goodsList = result.getGoodsList(); + if (goodsList != null && goodsList.size() > 0) { + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + for (JDGoods goods : goodsList) { + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO); + array.add(gson.toJson(goodsDetailVO)); + } + } + } + + data.put("list", array); + data.put("count", count); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鐖嗘鎺掕鍟嗗搧-瀹炴椂鐑攢姒� + * + * @param acceptData + * @param page + * @param out + */ + private void getIndexPDDGoods(AcceptData acceptData, int page, PrintWriter out) { + PDDGoodsResult result = pddGoodsService.getTopGoodsList(page, 1); + int count = 0; + JSONArray array = new JSONArray(); + if (result != null) { + count = result.getTotalCount(); + Gson gson = JsonUtil.getApiCommonGson(); + List<PDDGoodsDetail> goodsList = result.getGoodsList(); + if (goodsList != null && goodsList.size() > 0) { + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + for (PDDGoodsDetail goods : goodsList) { + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO); + array.add(gson.toJson(goodsDetailVO)); + } + } + } + + JSONObject data = new JSONObject(); + data.put("list", array); + data.put("count", count); + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鎼滅储鍙戠幇鍒楄〃 + * + * @param acceptData + * @param uid + * @param page + * @param out + */ + @RequestMapping(value = "getSearchDiscoveryTop") + public void getSearchDiscoveryTop(AcceptData acceptData, Long uid, Integer page, String callback, PrintWriter out) { + int count = 0; + List<SearchKeyTOPVO> list = new ArrayList<SearchKeyTOPVO>(); + + String keys = configService.getSearchDiscoveryKeys(acceptData.getSystem()); + if (!StringUtil.isNullOrEmpty(keys)) { + JSONArray arrayKeys = JSONArray.fromObject(keys); + if (arrayKeys != null && arrayKeys.size() > 0) { + count = arrayKeys.size(); + GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion(), acceptData.getSystem()); + + int j = 1; + for (int i = (page - 1) * 3; i < arrayKeys.size(); i++) { + if (j > 3) + break; + + String words = arrayKeys.get(i).toString(); + List<GoodsDetailVO> listGoods = new ArrayList<GoodsDetailVO>(); + + List<DaTaoKeDetailV2> listTaoKe = daTaoKeGoodsService.getSearchDiscoveryGoods(words); + if (listTaoKe != null && listTaoKe.size() > 0) { + for (DaTaoKeDetailV2 daTaoKeDetailV2 : listTaoKe) { + listGoods.add( + GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(daTaoKeDetailV2), paramsDTO)); + if (listGoods.size() >= 3) + break; + } + } + + SearchKeyTOPVO keyTOPVO = new SearchKeyTOPVO(); + keyTOPVO.setName(words); + keyTOPVO.setListGoods(listGoods); + list.add(keyTOPVO); + + j++; + } + } + } + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + Gson gson = gsonBuilder.create(); + JSONObject data = new JSONObject(); + data.put("count", count); + data.put("list", gson.toJson(list)); + if (!StringUtil.isNullOrEmpty(callback)) { + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } else + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鑾峰彇涓撻娓犻亾娲诲姩 + * + * @param acceptData + * @param uid + * @param callback + * @param out + */ + @RequestMapping(value = "getSpecialChannelActivity") + public void getSpecialChannelActivity(AcceptData acceptData, Long uid, String callback, PrintWriter out) { + + int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); + + List<Special> list = specialService.listByPlaceKey("special_channel_activity", platformCode, + Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()); + + 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) { + if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) { + list.remove(i--); + } else// 璁剧疆鍊掕鏃� + { + special.setCountDownTime((special.getEndTime().getTime() - time) / 1000); + } + } + } + } + + GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); + Gson gson = gsonBuilder.create(); + JSONObject data = new JSONObject(); + data.put("count", list.size()); + data.put("list", gson.toJson(list)); + if (!StringUtil.isNullOrEmpty(callback)) { + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } else + out.print(JsonUtil.loadTrueResult(data)); + } + + /** + * 鑾峰彇涓撻娓犻亾娲诲姩 + * + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "getGuide") + public void getGuide(AcceptData acceptData, Long uid, PrintWriter out) { + String tips = null; + if (uid == null || uid <= 0) { + tips = configService.getValue(ConfigKeyEnum.tipGuideNewUser.getKey(), acceptData.getSystem()); + } else { + long rebateOrder = hongBaoV2CountService.countRebateOrder(uid); + long shareOrInviteOrder = hongBaoV2CountService.countShareOrInviteOrder(uid); + if (rebateOrder + shareOrInviteOrder >= 3) { + // 鐔熷鐗� + } else if (rebateOrder <= 0 && shareOrInviteOrder <= 0) { + // 鏂颁汉鐗� + tips = configService.getValue(ConfigKeyEnum.tipGuideNewUser.getKey(), acceptData.getSystem()); + } else if (rebateOrder > 0 && shareOrInviteOrder <= 0) { + // 鐪侀挶鐗� + tips = configService.getValue(ConfigKeyEnum.tipGuideSaveMoney.getKey(), acceptData.getSystem()); + } else { + // 璧氶挶鐗� + tips = configService.getValue(ConfigKeyEnum.tipGuideShareInvite.getKey(), acceptData.getSystem()); + } + } + + if (StringUtil.isNullOrEmpty(tips)) { + out.print(JsonUtil.loadFalseResult("鏆傛棤鎻愮ず")); + return; + } + + JSONObject data = JSONObject.fromObject(tips); + out.print(JsonUtil.loadTrueResult(data)); + } + +} -- Gitblit v1.8.0