From 9b55262bb45c81c997ab04e55e8de13e14b8ca7d Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期二, 29 十月 2019 15:11:37 +0800 Subject: [PATCH] 商品最高返 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java | 354 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 296 insertions(+), 58 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 e7ff7df..9d333e2 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 @@ -12,15 +12,16 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; 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; @@ -28,24 +29,25 @@ 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.exception.integral.IntegralExchangeException; 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.hongbao.HongBaoManageService; 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; @@ -60,8 +62,9 @@ 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.integral.ExchangeTipVO; +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; @@ -123,6 +126,14 @@ @Resource private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; + @Resource + private DaTaoKeGoodsService daTaoKeGoodsService; + + @Resource + private HongBaoV2CountService hongBaoV2CountService; + + + /** * 鏂扮増鎺ㄨ崘涓撻绠$悊(1.5.3) * @@ -169,10 +180,10 @@ 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_0(acceptData.getPlatform(), acceptData.getVersion())) + + 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, "鑾峰彇鏁版嵁澶辫触")); @@ -197,8 +208,10 @@ } private JSONObject getSpikeGoodsContent(AcceptData acceptData) { - List<String> dtoList = DaTaoKeUtil.getDingDongQiangTime(); 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; @@ -209,6 +222,7 @@ break; } } + if (timeStr == null) timeStr = dtoList.get(dtoList.size() - 1); @@ -235,7 +249,14 @@ } } - JumpDetailV2 jumpDetail = jumpDetailV2Service.getByTypeCache("web"); + 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(); @@ -261,8 +282,7 @@ if (taoBaoGoodsBrief == null) { continue; } - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, - shareRate); + 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()); @@ -322,6 +342,102 @@ 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)); + } + + + + /** * 閲戝竵鍏戞崲淇℃伅 * @@ -346,8 +462,7 @@ root.put("tagImg", "http://img.flqapp.com/resource/score_exchange_tag.png"); return root; } - - + /** * 閲戝竵鍏戞崲淇℃伅 * @@ -362,30 +477,29 @@ for (int i = 0; i < arrayKeys.size(); i++) { String name = arrayKeys.get(i).toString(); JSONObject params = new JSONObject(); - params.put("searchKey", name); - + 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; } - /** * 棣栭〉搴曢儴鍟嗗搧鎺ㄨ崘 @@ -457,8 +571,10 @@ 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, null, fanLiRate, shareRate); + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); if (page < 3) detailVO.setRecommend(true); @@ -471,12 +587,12 @@ if (page == 1) { List<TLJBuyGoods> list = homeRecommendGoodsService.getZiGouLiJianHotGoods(acceptData.getDevice()); - if (list != null && list.size() > 0) + 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); - BigDecimal rateBuy = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE; - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), null, rateBuy, - rateBuy); + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), paramsBuy); String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(), TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE); @@ -496,6 +612,7 @@ detailVO.setRecommend(true); array.add(0, gson.toJson(detailVO)); } + } } JSONObject data = new JSONObject(); @@ -530,15 +647,14 @@ 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, null, fanLiRate, - shareRate); + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); detailVO.setRecommend(true); goodsList.add(detailVO); } @@ -604,10 +720,12 @@ 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, fanLiRate, shareRate); + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO); array.add(gson.toJson(goodsDetailVO)); } } @@ -636,9 +754,10 @@ 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, fanLiRate, shareRate); + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO); array.add(gson.toJson(goodsDetailVO)); } } @@ -650,35 +769,154 @@ out.print(JsonUtil.loadTrueResult(data)); } - - - @RequestMapping(value = "getSearchDiscoveryTop", method = RequestMethod.POST) - public void getSearchDiscoveryTop(AcceptData acceptData, Long uid, Integer page, PrintWriter out) { -// try { -// String keys = configService.getSearchDiscoveryKeys(); -// if (!StringUtil.isNullOrEmpty(keys)) { -// JSONArray arrayKeys = JSONArray.fromObject(keys); -// for (int i = (page-1) * 3; i < arrayKeys.size(); i++) { -// String keys = arrayKeys.get(i).toString(); -// } -// -// -// } -// - - - - - -// -// GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); -// Gson gson = gsonBuilder.create(); -// JSONObject data = new JSONObject(); -// data.put("result", gson.toJson(exchange)); -// out.print(JsonUtil.loadTrueResult(data)); -// } catch (IntegralExchangeException e) { -// out.print(JsonUtil.loadFalseResult(1, e.getMsg())); -// } + /** + * 鎼滅储鍙戠幇鍒楄〃 + * + * @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)); + } + } -- Gitblit v1.8.0