fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java
@@ -145,4 +145,9 @@ out.print("success"); } @RequestMapping(value = "vip") public void VIP(PrintWriter out) { out.print("success"); } } fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -1190,9 +1190,9 @@ } // 获取浏览记录 @RequestMapping(value = "getscanhistory", method = RequestMethod.POST) @RequestMapping(value = "getscanhistory", method = RequestMethod.POST) public void getScanHistory(AcceptData acceptData, String uid, int page, PrintWriter out) { if (page < 0) { out.print(JsonUtil.loadFalseResult(1, "page不小于0")); return; @@ -1204,45 +1204,55 @@ out.print(JsonUtil.loadFalseResult(1, "不存在该系统")); return; } List<ScanHistoryV2> list = scanHistoryV2Service.getScanHistoryByDeviceOrUid( StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), page, 20, Constant.SOURCE_TYPE_TAOBAO); long count = scanHistoryV2Service.getCountByDeviceOrUid( StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), Constant.SOURCE_TYPE_TAOBAO); try { List<ScanHistoryV2> list = scanHistoryV2Service.getScanHistoryByDeviceOrUid( StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), page, 20, Constant.SOURCE_TYPE_TAOBAO); long count = scanHistoryV2Service.getCountByDeviceOrUid( StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), Constant.SOURCE_TYPE_TAOBAO); JSONObject data = new JSONObject(); data.put("count", count); JSONArray array = new JSONArray(); JSONObject data = new JSONObject(); data.put("count", count); JSONArray array = new JSONArray(); GsonBuilder gsonBuilder = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()); gsonBuilder.excludeFieldsWithoutExposeAnnotation(); gsonBuilder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() { @Override public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { if (value == null) { return new JsonPrimitive(""); } else { return new JsonPrimitive(value.getTime() + ""); GsonBuilder gsonBuilder = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()); gsonBuilder.excludeFieldsWithoutExposeAnnotation(); gsonBuilder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() { @Override public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) { if (value == null) { return new JsonPrimitive(""); } else { return new JsonPrimitive(value.getTime() + ""); } } }); Gson gson = gsonBuilder.create(); if (list != null) { BigDecimal proportion = manageService.getFanLiRate(); for (ScanHistoryV2 sh : list) { TaoBaoGoodsBrief goods = TaoBaoUtil.convert(sh.getCommonGoods()); goods.setId(sh.getId()); TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, proportion.toString(), ""); extra.setCreatetime(sh.getCreateTime()); array.add(gson.toJson(extra)); } } }); Gson gson = gsonBuilder.create(); if (list != null) { BigDecimal proportion = manageService.getFanLiRate(); for (ScanHistoryV2 sh : list) { TaoBaoGoodsBrief goods = TaoBaoUtil.convert(sh.getCommonGoods()); goods.setId(sh.getId()); TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, proportion.toString(), ""); extra.setCreatetime(sh.getCreateTime()); array.add(gson.toJson(extra)); } data.put("data", array); out.print(JsonUtil.loadTrueResult(data)); return; } catch (Exception e) { LogHelper.errorDetailInfo(e); JSONObject data = new JSONObject(); data.put("data", new JSONArray()); data.put("count", 0); out.print(JsonUtil.loadTrueResult(data)); } data.put("data", array); out.print(JsonUtil.loadTrueResult(data)); return; } @RequestMapping(value = "deletescanhistory", method = RequestMethod.POST) @@ -1341,6 +1351,7 @@ HttpServletRequest request, PrintWriter out) { int pageSize = Constant.PAGE_SIZE; JSONArray array = new JSONArray(); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create(); if (VersionUtil.greaterThan_1_5_70(acceptData.getPlatform(), acceptData.getVersion())) { List<TaoBaoGoodsBrief> goodsList = homeRecommendGoodsService.listGoodsByPage(null, acceptData.getDevice(), @@ -1361,7 +1372,11 @@ } if (page == 1) { List<TLJBuyGoods> list = homeRecommendGoodsService.getZiGouLiJianHotGoods(acceptData.getDevice()); List<TLJBuyGoods> list = null; try { list = homeRecommendGoodsService.getZiGouLiJianHotGoods(acceptData.getDevice()); } catch (Exception e) { } if (list != null && list.size() > 0) for (int i = list.size() - 1; i >= 0; i--) { TLJBuyGoods goods = list.get(i); @@ -2082,7 +2097,8 @@ if (uid == null) { data.put("collected", false); } else { CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id, Constant.SOURCE_TYPE_TAOBAO); CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id, Constant.SOURCE_TYPE_TAOBAO); data.put("collected", collectionGoods != null ? true : false); } @@ -2444,82 +2460,83 @@ @RequestMapping(value = "getgoodsderivation", method = RequestMethod.POST) public void getRecommendGoods(AcceptData acceptData, long id, PrintWriter out) { BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), acceptData.getPackages()); if (system == null) { out.print(JsonUtil.loadFalseResult(1, "系统不存在")); return; } List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.getRelationGoodsRecommend(id, 10); // 初始化 if (goodsList == null) { goodsList = new ArrayList<TaoBaoGoodsBrief>(); } BigDecimal proportion = manageService.getFanLiRate(); List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>(); TaoKeAppInfo app = new TaoKeAppInfo(); app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); app.setAdzoneId(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT.split("_")[3]); app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT); List<Long> ids = new ArrayList<>(); for (TaoBaoGoodsBrief goods : goodsList) ids.add(goods.getAuctionId()); try { goodsList = TaoKeApiUtil.getBatchGoodsInfo(ids); } catch (TaoKeApiException e1) { e1.printStackTrace(); } catch (TaobaoGoodsDownException e1) { e1.printStackTrace(); } if (goodsList != null && goodsList.size() > 0) goodsList.parallelStream().forEach(goods -> { if (goods != null) { // 获取详情 TaoBaoGoodsBrief taoBaoGoodsBrief = null; try { taoBaoGoodsBrief = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goods.getAuctionId()); } catch (Exception e) { e.printStackTrace(); List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.getRelationGoodsRecommend(id, 10); // 初始化 if (goodsList == null) { goodsList = new ArrayList<TaoBaoGoodsBrief>(); } BigDecimal proportion = manageService.getFanLiRate(); List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>(); TaoKeAppInfo app = new TaoKeAppInfo(); app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); app.setAdzoneId(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT.split("_")[3]); app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT); List<Long> ids = new ArrayList<>(); for (TaoBaoGoodsBrief goods : goodsList) ids.add(goods.getAuctionId()); try { goodsList = TaoKeApiUtil.getBatchGoodsInfo(ids); } catch (TaoKeApiException e1) { e1.printStackTrace(); } catch (TaobaoGoodsDownException e1) { e1.printStackTrace(); } if (goodsList != null && goodsList.size() > 0) goodsList.parallelStream().forEach(goods -> { if (goods != null) { // 获取详情 TaoBaoGoodsBrief taoBaoGoodsBrief = null; try { taoBaoGoodsBrief = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goods.getAuctionId()); } catch (Exception e) { e.printStackTrace(); } if (taoBaoGoodsBrief == null) { TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app); goods.setCouponInfo(newGoods.getCouponInfo()); goods.setCouponLink(newGoods.getCouponLink()); goods.setTkRate(newGoods.getTkRate()); taoBaoGoodsBrief = goods; } if (taoBaoGoodsBrief != null) { listExtra.add( TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), "")); } } }); if (taoBaoGoodsBrief == null) { TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app); goods.setCouponInfo(newGoods.getCouponInfo()); goods.setCouponLink(newGoods.getCouponLink()); goods.setTkRate(newGoods.getTkRate()); taoBaoGoodsBrief = goods; } List<TaoBaoGoodsBrief> listQuality = new ArrayList<TaoBaoGoodsBrief>(); if (taoBaoGoodsBrief != null) { listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), "")); } } }); // 取偶数个数据 if (listExtra.size() % 2 != 0) { listExtra.remove(listExtra.size() - 1); } List<TaoBaoGoodsBrief> listQuality = new ArrayList<TaoBaoGoodsBrief>(); if (listQuality.size() % 2 != 0) { listQuality.remove(listQuality.size() - 1); } // 取偶数个数据 if (listExtra.size() % 2 != 0) { listExtra.remove(listExtra.size() - 1); JSONObject data = new JSONObject(); data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listExtra)); data.put("listGuess", JsonUtil.getApiCommonGson().toJson(listQuality)); out.print(JsonUtil.loadTrueResult(data)); } catch (Exception e) { JSONObject data = new JSONObject(); data.put("listQuality", new JSONArray()); data.put("listGuess", new JSONArray()); out.print(JsonUtil.loadTrueResult(data)); } if (listQuality.size() % 2 != 0) { listQuality.remove(listQuality.size() - 1); } JSONObject data = new JSONObject(); data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listExtra)); data.put("listGuess", JsonUtil.getApiCommonGson().toJson(listQuality)); out.print(JsonUtil.loadTrueResult(data)); } /** fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -7,6 +7,7 @@ import javax.annotation.Resource; import org.json.simple.JSONArray; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -747,7 +748,7 @@ if (indexOf > 0) { salesTip = salesTip.substring(0, indexOf); } int totalSales = 0; if (salesTip.contains("万")) { salesTip = salesTip.substring(0, salesTip.indexOf("万")); @@ -841,148 +842,158 @@ goodsType = Constant.SOURCE_TYPE_TAOBAO; } // 京东 if (goodsType == Constant.SOURCE_TYPE_JD) { JSONObject data = new JSONObject(); data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>())); List<JDGoods> list = JDUtil.getRecommendGoodsById(id); if (list == null) { list = new ArrayList<JDGoods>(); } else if (list.size() > 10) { list = list.subList(0, 10); } BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); List<GoodsDetailVO> listDetailVO = new ArrayList<GoodsDetailVO>(); for (JDGoods goods : list) { listDetailVO.add(GoodsDetailVOFactory.convertJDGoods(goods, fanLiRate, shareRate)); } // 取偶数个数据 if (listDetailVO.size() % 2 != 0) { listDetailVO.remove(listDetailVO.size() - 1); } data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO)); out.print(JsonUtil.loadTrueResult(data)); return; } // 拼多多 if (goodsType == Constant.SOURCE_TYPE_PDD) { JSONObject data = new JSONObject(); data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>())); List<GoodsDetailVO> listDetailVO = new ArrayList<GoodsDetailVO>(); List<Long> goodsIdList = PinDuoDuoUtil.getRecommendGoodsId(id); if (goodsIdList != null && goodsIdList.size() > 0) { PDDSearchFilter pddfilter = new PDDSearchFilter(); pddfilter.setPage(1); pddfilter.setPageSize(Constant.PAGE_SIZE); Long[] strings = new Long[goodsIdList.size()]; pddfilter.setGoodsIdList(goodsIdList.toArray(strings)); PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter); if (result != null) { List<PDDGoodsDetail> goodsList = result.getGoodsList(); if (goodsList != null && goodsList.size() > 0) { if (goodsList.size() > 10) { goodsList = goodsList.subList(0, 10); } BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); for (PDDGoodsDetail goods : goodsList) { listDetailVO.add(GoodsDetailVOFactory.convertPDDGoods(goods, fanLiRate, shareRate)); } } } } // 取偶数个数据 if (listDetailVO.size() % 2 != 0) { listDetailVO.remove(listDetailVO.size() - 1); } data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO)); out.print(JsonUtil.loadTrueResult(data)); return; } List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.getRelationGoodsRecommend(id, 10); // 初始化 if (goodsList == null) { goodsList = new ArrayList<TaoBaoGoodsBrief>(); } List<GoodsDetailVO> listExtra = new ArrayList<GoodsDetailVO>(); TaoKeAppInfo app = new TaoKeAppInfo(); app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); app.setAdzoneId(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT.split("_")[3]); app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT); List<Long> ids = new ArrayList<>(); for (TaoBaoGoodsBrief goods : goodsList) ids.add(goods.getAuctionId()); try { goodsList = TaoKeApiUtil.getBatchGoodsInfo(ids); } catch (TaoKeApiException e1) { e1.printStackTrace(); } catch (TaobaoGoodsDownException e1) { e1.printStackTrace(); } if (goodsList != null && goodsList.size() > 0) { // 京东 if (goodsType == Constant.SOURCE_TYPE_JD) { JSONObject data = new JSONObject(); data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>())); BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); List<JDGoods> list = JDUtil.getRecommendGoodsById(id); if (list == null) { list = new ArrayList<JDGoods>(); } else if (list.size() > 10) { list = list.subList(0, 10); } goodsList.parallelStream().forEach(goods -> { if (goods != null) { // 获取详情 TaoBaoGoodsBrief taoBaoGoodsBrief = null; try { taoBaoGoodsBrief = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goods.getAuctionId()); } catch (Exception e) { e.printStackTrace(); } BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); List<GoodsDetailVO> listDetailVO = new ArrayList<GoodsDetailVO>(); if (taoBaoGoodsBrief == null) { TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app); goods.setCouponInfo(newGoods.getCouponInfo()); goods.setCouponLink(newGoods.getCouponLink()); goods.setTkRate(newGoods.getTkRate()); taoBaoGoodsBrief = goods; } for (JDGoods goods : list) { listDetailVO.add(GoodsDetailVOFactory.convertJDGoods(goods, fanLiRate, shareRate)); } if (taoBaoGoodsBrief != null) { listExtra.add(GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate)); // 取偶数个数据 if (listDetailVO.size() % 2 != 0) { listDetailVO.remove(listDetailVO.size() - 1); } data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO)); out.print(JsonUtil.loadTrueResult(data)); return; } // 拼多多 if (goodsType == Constant.SOURCE_TYPE_PDD) { JSONObject data = new JSONObject(); data.put("listGuess", JsonUtil.getApiCommonGson().toJson(new ArrayList<GoodsDetailVO>())); List<GoodsDetailVO> listDetailVO = new ArrayList<GoodsDetailVO>(); List<Long> goodsIdList = PinDuoDuoUtil.getRecommendGoodsId(id); if (goodsIdList != null && goodsIdList.size() > 0) { PDDSearchFilter pddfilter = new PDDSearchFilter(); pddfilter.setPage(1); pddfilter.setPageSize(Constant.PAGE_SIZE); Long[] strings = new Long[goodsIdList.size()]; pddfilter.setGoodsIdList(goodsIdList.toArray(strings)); PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter); if (result != null) { List<PDDGoodsDetail> goodsList = result.getGoodsList(); if (goodsList != null && goodsList.size() > 0) { if (goodsList.size() > 10) { goodsList = goodsList.subList(0, 10); } BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); for (PDDGoodsDetail goods : goodsList) { listDetailVO.add(GoodsDetailVOFactory.convertPDDGoods(goods, fanLiRate, shareRate)); } } } } }); } List<GoodsDetailVO> listQuality = new ArrayList<GoodsDetailVO>(); // 取偶数个数据 if (listExtra.size() % 2 != 0) { listExtra.remove(listExtra.size() - 1); } // 取偶数个数据 if (listDetailVO.size() % 2 != 0) { listDetailVO.remove(listDetailVO.size() - 1); } if (listQuality.size() % 2 != 0) { listQuality.remove(listQuality.size() - 1); } data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listDetailVO)); out.print(JsonUtil.loadTrueResult(data)); return; } JSONObject data = new JSONObject(); data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listExtra)); data.put("listGuess", JsonUtil.getApiCommonGson().toJson(listQuality)); out.print(JsonUtil.loadTrueResult(data)); List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.getRelationGoodsRecommend(id, 10); // 初始化 if (goodsList == null) { goodsList = new ArrayList<TaoBaoGoodsBrief>(); } List<GoodsDetailVO> listExtra = new ArrayList<GoodsDetailVO>(); TaoKeAppInfo app = new TaoKeAppInfo(); app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); app.setAdzoneId(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT.split("_")[3]); app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT); List<Long> ids = new ArrayList<>(); for (TaoBaoGoodsBrief goods : goodsList) ids.add(goods.getAuctionId()); try { goodsList = TaoKeApiUtil.getBatchGoodsInfo(ids); } catch (TaoKeApiException e1) { e1.printStackTrace(); } catch (TaobaoGoodsDownException e1) { e1.printStackTrace(); } if (goodsList != null && goodsList.size() > 0) { BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); goodsList.parallelStream().forEach(goods -> { if (goods != null) { // 获取详情 TaoBaoGoodsBrief taoBaoGoodsBrief = null; try { taoBaoGoodsBrief = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goods.getAuctionId()); } catch (Exception e) { e.printStackTrace(); } if (taoBaoGoodsBrief == null) { TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app); goods.setCouponInfo(newGoods.getCouponInfo()); goods.setCouponLink(newGoods.getCouponLink()); goods.setTkRate(newGoods.getTkRate()); taoBaoGoodsBrief = goods; } if (taoBaoGoodsBrief != null) { listExtra.add( GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate)); } } }); } List<GoodsDetailVO> listQuality = new ArrayList<GoodsDetailVO>(); // 取偶数个数据 if (listExtra.size() % 2 != 0) { listExtra.remove(listExtra.size() - 1); } if (listQuality.size() % 2 != 0) { listQuality.remove(listQuality.size() - 1); } JSONObject data = new JSONObject(); data.put("listQuality", JsonUtil.getApiCommonGson().toJson(listExtra)); data.put("listGuess", JsonUtil.getApiCommonGson().toJson(listQuality)); out.print(JsonUtil.loadTrueResult(data)); } catch (Exception e) { LogHelper.errorDetailInfo(e); JSONObject data = new JSONObject(); data.put("listQuality", new JSONArray()); data.put("listGuess", new JSONArray()); out.print(JsonUtil.loadTrueResult(data)); } } /** fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
@@ -72,13 +72,13 @@ @Resource private RedisManager redisManager; @Resource private HomeRecommendGoodsService homeRecommendGoodsService; @Resource private ConfigService configService; @Resource private MonitorService monitorService; @@ -90,26 +90,25 @@ @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; /** * 新版推荐专题管理(1.5.3) * @@ -164,9 +163,7 @@ } } } /** * 限时秒杀 1.5.3 * @@ -178,8 +175,6 @@ JSONObject root = getSpikeGoodsContent(acceptData); out.print(JsonUtil.loadTrueResult(root)); } private JSONObject getSpikeGoodsContent(AcceptData acceptData) { // 下一次倒计时的时间 @@ -236,7 +231,7 @@ BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); @@ -253,11 +248,12 @@ if (taoBaoGoodsBrief == null) { continue; } GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate); GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate); 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); @@ -289,41 +285,47 @@ return root; } /** * 首页底部商品推荐 * * @param acceptData * @param out */ @RequestMapping(value = "getGoodList") public void getGoodList(AcceptData acceptData, Integer goodsType, Integer page, HttpServletRequest request, PrintWriter out) { public void getGoodList(AcceptData acceptData, Integer goodsType, Integer page, HttpServletRequest request, PrintWriter out) { if (goodsType == null || page == null) { out.print(JsonUtil.loadFalseResult("参数信息不正常")); return; } if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { taoBaoGuessUserLikeByDevice(acceptData, page, request, out); 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)); } 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("商品类型错误")); } /** * 根据设备信息获取猜你喜欢的内容 * @@ -333,11 +335,12 @@ * @param idfa * -IOS的idfa广告标识信息 */ public void taoBaoGuessUserLikeByDevice(AcceptData acceptData, int page, HttpServletRequest request, PrintWriter out) { 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())) { @@ -364,20 +367,22 @@ 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); String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(),TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE); GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), null, rateBuy, rateBuy); 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); @@ -417,20 +422,21 @@ if (gList != null) { BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); 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, null, fanLiRate, shareRate); detailVO.setRecommend(true); goodsList.add(detailVO); } } } try { monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0, (int) (java.lang.System.currentTimeMillis() - startTime), "推荐数量:" + goodsList.size())); @@ -467,12 +473,10 @@ data.put("count", 1000); out.print(JsonUtil.loadTrueResult(data)); } /** * 京东首页商品 * * @param acceptData * @param page * @param out @@ -506,9 +510,9 @@ out.print(JsonUtil.loadTrueResult(data)); } /** * 爆款排行商品-实时热销榜 * 爆款排行商品-实时热销榜 * * @param acceptData * @param page * @param out @@ -537,5 +541,5 @@ data.put("count", count); out.print(JsonUtil.loadTrueResult(data)); } } fanli/src/main/java/com/yeshi/fanli/entity/taobao/TaoBaoGoodsBrief.java
@@ -12,6 +12,9 @@ import javax.persistence.Transient; import org.hibernate.annotations.Type; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; import com.google.gson.annotations.Expose; @@ -23,6 +26,7 @@ */ @Entity @org.yeshi.utils.mybatis.Table("yeshi_ec_taobao_goods") @Document(collection="taoBaoGoodsCache") public class TaoBaoGoodsBrief implements Serializable { @@ -37,12 +41,14 @@ @Expose private Long id; @Field @org.yeshi.utils.mybatis.Column(name = "rootCatId") private Integer rootCatId;// 0, 一级类目ID @org.yeshi.utils.mybatis.Column(name = "eventCreatorId") private Integer eventCreatorId;// 0, @Field @org.yeshi.utils.mybatis.Column(name = "leafCatId") private Integer leafCatId;// 50011277, 子类目id @@ -52,53 +58,68 @@ @org.yeshi.utils.mybatis.Column(name = "rootCatScore") private Integer rootCatScore;// 0, @Field @org.yeshi.utils.mybatis.Column(name = "sellerId") private Long sellerId;// 卖家Id @Field @Expose @org.yeshi.utils.mybatis.Column(name = "userType") private Integer userType;// 0, @Field @Expose @org.yeshi.utils.mybatis.Column(name = "shopTitle") private String shopTitle;// 店铺名称 @Field @org.yeshi.utils.mybatis.Column(name = "pictUrl") @Expose private String pictUrl;// 主图链接 @Field @org.yeshi.utils.mybatis.Column(name = "pictUrlWhite") @Expose private String pictUrlWhite;// 白底色图片链接 @Field @org.yeshi.utils.mybatis.Column(name = "title") @Expose private String title;// 商品标题 @Field @Indexed @org.yeshi.utils.mybatis.Column(name = "auctionId") @Expose private Long auctionId;// 商品ID @Field @org.yeshi.utils.mybatis.Column(name = "couponLink") @Expose private String couponLink;// 优惠券链�? @Field @org.yeshi.utils.mybatis.Column(name = "couponLinkTaoToken") @Expose private String couponLinkTaoToken;// @Field @org.yeshi.utils.mybatis.Column(name = "couponActivityId") @Expose private String couponActivityId;// @Field @org.yeshi.utils.mybatis.Column(name = "biz30day") @Expose private Integer biz30day;// 月销量 @Field @org.yeshi.utils.mybatis.Column(name = "tkRate") @Expose private BigDecimal tkRate;// 佣金比例 �?��100 @Field @org.yeshi.utils.mybatis.Column(name = "nick") @Expose private String nick;// "yoyo_808611", 店铺名称 @@ -107,38 +128,47 @@ @Expose private Integer includeDxjh;// 1:定向计划 @Field @org.yeshi.utils.mybatis.Column(name = "reservePrice") @Expose private BigDecimal reservePrice;// 588, @Field @org.yeshi.utils.mybatis.Column(name = "tkCommFee") @Expose private BigDecimal tkCommFee;// 32.04, @Field @org.yeshi.utils.mybatis.Column(name = "totalFee") @Expose private BigDecimal totalFee;// 4814.43, @Field @org.yeshi.utils.mybatis.Column(name = "totalNum") @Expose private Integer totalNum;// 229, 库存数量 @Field @org.yeshi.utils.mybatis.Column(name = "zkPrice") @Expose private BigDecimal zkPrice;// 无线价格,在售价 @Field @org.yeshi.utils.mybatis.Column(name = "dayLeft") @Expose private Integer dayLeft;// -17228, @Field @org.yeshi.utils.mybatis.Column(name = "tk3rdRate") @Expose private String tk3rdRate;// null, @Field @org.yeshi.utils.mybatis.Column(name = "auctionUrl") @Expose private String auctionUrl;// 商品链接 @Field @org.yeshi.utils.mybatis.Column(name = "rlRate") @Expose private Double rlRate;// 69.72, @@ -155,38 +185,47 @@ @Expose private Long sameItemPid;// "-232381821", @Field @org.yeshi.utils.mybatis.Column(name = "couponTotalCount") @Expose private Integer couponTotalCount;// 优惠券�?�? @Field @org.yeshi.utils.mybatis.Column(name = "couponLeftCount") @Expose private Integer couponLeftCount;// 优惠券剩余数�? @Field @org.yeshi.utils.mybatis.Column(name = "couponAmount") @Expose private BigDecimal couponAmount;// 优惠金额 @Field @org.yeshi.utils.mybatis.Column(name = "eventRate") @Expose private String eventRate;// null, @Field @org.yeshi.utils.mybatis.Column(name = "couponShortLink") @Expose private String couponShortLink;// 优惠券短�? @Field @org.yeshi.utils.mybatis.Column(name = "couponInfo") @Expose private String couponInfo;// 优惠券信�? @Field @org.yeshi.utils.mybatis.Column(name = "couponStartFee") @Expose private BigDecimal couponStartFee;// 优惠券起始优�? @Field @org.yeshi.utils.mybatis.Column(name = "couponEffectiveStartTime") @Expose private String couponEffectiveStartTime;// "2017-02-04",优惠券开始时�? @Field @org.yeshi.utils.mybatis.Column(name = "couponEffectiveEndTime") @Expose private String couponEffectiveEndTime;// 优惠券结束时�? @@ -203,22 +242,27 @@ @Expose private String umpBonus;// null, @Field @org.yeshi.utils.mybatis.Column(name = "rootCategoryName") @Expose private String rootCategoryName;// 一级分类名称 @Field @org.yeshi.utils.mybatis.Column(name = "couponOriLink") @Expose private String couponOriLink;// 优惠券原始链�? @Field @org.yeshi.utils.mybatis.Column(name = "userTypeName") @Expose private String userTypeName;// 用户类型 @Field @org.yeshi.utils.mybatis.Column(name = "tkMktStatus") @Expose private String tkMktStatus; // 1:营销返利 @Field @org.yeshi.utils.mybatis.Column(name = "totalSales") @Expose private Integer totalSales;// 229, 淘客30天月推广量 @@ -230,6 +274,7 @@ private Date createtime; // 更新时间 @Field @org.yeshi.utils.mybatis.Column(name = "updatetime") @Expose @Type(type = "date") @@ -239,6 +284,7 @@ @Expose private Integer state;// 0-正常 1-商品下架 @Field @org.yeshi.utils.mybatis.Column(name = "material_lib_type") @Transient private Integer materialLibType;//物料库类型 fanli/src/main/java/com/yeshi/fanli/service/impl/goods/recommend/HomeRecommendGoodsServiceImpl.java
@@ -209,7 +209,7 @@ return list; // 爆款商品库 TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(16432, page, Constant.PAGE_SIZE); TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(14624, page, Constant.PAGE_SIZE); if (result != null) { list = daTaoKeGoodsDetailService.filterTaoBaoGoods(result.getTaoBaoGoodsBriefs()); saveObjList(list, name, key); @@ -253,8 +253,15 @@ Map<Long, TLJBuyGoods> map = new ConcurrentHashMap<>(); if (list != null) for (TLJBuyGoods goods : list) { map.put(goods.getGoods().getAuctionId(), goods); finalList.add(goods.getGoods()); try { if (goods.getGoods().getAuctionId() == null) { goods.getGoods().setAuctionId(goods.getGoods().getId()); } map.put(goods.getGoods().getAuctionId(), goods); finalList.add(goods.getGoods()); } catch (Exception e) { e.printStackTrace(); } } finalList = recommendGoodsDeleteHistoryService.filterGoods(device, finalList); fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TLJBuyGoodsServiceImpl.java
@@ -191,6 +191,8 @@ TLJBuyGoods.getGoods().setCouponTotalCount(goods.getCouponTotalCount()); TLJBuyGoods.getGoods().setBiz30day(goods.getBiz30day()); TLJBuyGoods.getGoods().setTkRate(goods.getTkRate()); TLJBuyGoods.getGoods().setId(goods.getId()); TLJBuyGoods.getGoods().setAuctionId(goods.getAuctionId()); tljBuyGoodsDao.save(TLJBuyGoods); } } fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java
@@ -12,6 +12,7 @@ import com.google.gson.Gson; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoGoodsBriefMapper; import com.yeshi.fanli.dao.taobao.TaoBaoGoodsUpdateDao; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.exception.goods.CommonGoodsException; @@ -24,8 +25,9 @@ import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService; import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; import com.yeshi.fanli.util.BeanUtil; import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; import com.yeshi.fanli.util.factory.CommonGoodsFactory; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; @@ -49,6 +51,12 @@ @Resource private TLJBuyGoodsService tljBuyGoodsService; @Resource private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; @Resource private TaoBaoGoodsUpdateDao taoBaoGoodsUpdateDao; @Override public void startUpdate() { @@ -101,7 +109,6 @@ // 分享爆款数据删除 shareHotGoodsService.deleteByGoodsId(auctionId); } @Transactional @@ -138,6 +145,9 @@ // 更新自购立减库商品 tljBuyGoodsService.updateGoods(goods); // 总要商品更新 // updateImplTBGoods(goods); } @Override @@ -265,4 +275,29 @@ LogHelper.errorDetailInfo(e); } } /** * 更新重要的淘宝数据 * * @param goods */ public void updateImplTBGoods(TaoBaoGoodsBrief goods) { if (goods == null) return; if (!taoBaoGoodsCacheUtil.needUpdate(goods.getAuctionId())) { return; } goods.setUpdatetime(new Date()); taoBaoGoodsUpdateDao.save(goods); taoBaoGoodsCacheUtil.addUpdateHistory(goods.getAuctionId()); } @Override public void addUpdateQueue(Long auctionId) { if (taoBaoGoodsCacheUtil.canAddToUpdateQueue(auctionId)) { // 添加到更新队列 CMQManager.getInstance().addTBImpGoodsUpdate(auctionId); taoBaoGoodsCacheUtil.addAddToQueueHistory(auctionId); } } } fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/TaoBaoGoodsUpdateService.java
@@ -68,6 +68,7 @@ /** * 队列更新商品 * * @param start * @param count * @param hour @@ -77,8 +78,22 @@ /** * 根据taoke更新商品信息 * * @param id */ public void updateByTaoKeGoodsDetail(Long id); /** * 添加到更新队列 * * @param auctionId */ public void addUpdateQueue(Long auctionId); /** * 更新淘宝重要的商品 * @param goods */ public void updateImplTBGoods(TaoBaoGoodsBrief goods); } fanli/src/main/java/com/yeshi/fanli/util/CMQManager.java
@@ -47,6 +47,8 @@ public static String ORDER_WEIQUAN = "weiquan-order"; public static String GOODS_UPDATE = "goods_update_queue"; // 重要数据更新 public static String IMPORTANT_GOODS_UPDATE = "imp_goods_update_queue"; static { @@ -59,6 +61,7 @@ FANLI_ORDER_NEW = "test-" + FANLI_ORDER_NEW; FANLI_TICHENG_ORDER = "test-" + FANLI_TICHENG_ORDER; ORDER_WEIQUAN = "test-" + ORDER_WEIQUAN; IMPORTANT_GOODS_UPDATE = "test-" + IMPORTANT_GOODS_UPDATE; } QUEUENAME_ORDER += "-" + Constant.systemCommonConfig.getProjectName(); @@ -69,6 +72,7 @@ FANLI_ORDER_NEW += "-" + Constant.systemCommonConfig.getProjectName(); FANLI_TICHENG_ORDER += "-" + Constant.systemCommonConfig.getProjectName(); ORDER_WEIQUAN += "-" + Constant.systemCommonConfig.getProjectName(); IMPORTANT_GOODS_UPDATE += "-" + Constant.systemCommonConfig.getProjectName(); cmqUtil = CMQUtil.getInstance(secretId, secretKey); // 最大消息为1M @@ -81,6 +85,7 @@ cmqUtil.createQueue(FANLI_TICHENG_ORDER); cmqUtil.createQueue(ORDER_WEIQUAN); cmqUtil.createQueue(GOODS_UPDATE); cmqUtil.createQueue(IMPORTANT_GOODS_UPDATE); } public static CMQManager getInstance() { @@ -389,4 +394,44 @@ cmqUtil.deleteMsg(GOODS_UPDATE, receiptHandle); } /** * 添加淘宝重要商品更新 * * @param actionId */ public void addTBImpGoodsUpdate(Long actionId) { cmqUtil.sendMsg(IMPORTANT_GOODS_UPDATE, actionId + ""); } /** * 读取重要商品更新队列 * * @param count * @return */ public Map<String, Long> consumeTBImpGoodsUpdateMsg(int count) { List<Message> list = cmqUtil.recieveMsg(count, IMPORTANT_GOODS_UPDATE); if (list == null) { return null; } Map<String, Long> map = new HashMap<>(); for (Message msg : list) { String result = msg.msgBody; if (!StringUtil.isNullOrEmpty(result)) { map.put(msg.receiptHandle, Long.parseLong(result)); } } return map; } /** * 删除队列消息 * * @param receiptHandle */ public void deleteTBImpGoodsUpdateMsg(String receiptHandle) { cmqUtil.deleteMsg(IMPORTANT_GOODS_UPDATE, receiptHandle); } } fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -39,8 +39,6 @@ //淘宝客API接口 public class TaoKeApiUtil { // 解析券的内容 private static TaoBaoSearchResult parseCoupleContent(String content) { TaoBaoSearchResult result = new TaoBaoSearchResult(); @@ -339,22 +337,6 @@ System.out.println(goods.getAuctionId() + ":" + g.getAuctionId()); if (goods.getAuctionId().longValue() == g.getAuctionId()) { g.setId(goods.getAuctionId()); // 判断是否有优惠券 if (!StringUtil.isNullOrEmpty(g.getCouponActivityId())) { // 获取优惠券详情 QuanInfo quanInfo = getQuanInfo(g.getAuctionId(), g.getCouponActivityId()); if (quanInfo != null) { g.setCouponAmount(quanInfo.coupon_amount); g.setCouponEffectiveEndTime(quanInfo.coupon_end_time); g.setCouponEffectiveStartTime(quanInfo.coupon_start_time); g.setCouponLeftCount(quanInfo.coupon_remain_count); g.setCouponStartFee(quanInfo.coupon_start_fee); g.setCouponTotalCount(quanInfo.coupon_total_count); } } else { g.setCouponAmount(new BigDecimal(0)); g.setCouponStartFee(new BigDecimal(0)); } g.setCreatetime(new Date()); g.setMaterialLibType(goods.getMaterialLibType()); return g; @@ -892,10 +874,9 @@ if (!StringUtil.isNullOrEmpty(goods.getCouponInfo())) { List<BigDecimal> quanInfo = TaoBaoCouponUtil.getCouponInfo(goods.getCouponInfo()); goods.setCouponAmount(quanInfo.get(1)); goods.setCouponEffectiveEndTime( TimeUtil.getGernalTime(System.currentTimeMillis() + 1000 * 60 * 60 * 24, "yyyy-MM-dd")); goods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd")); goods.setCouponStartFee(quanInfo.get(0)); goods.setCouponEffectiveEndTime(item.optString("coupon_end_time")); goods.setCouponEffectiveStartTime(item.optString("coupon_start_time")); goods.setCouponStartFee(new BigDecimal(item.optString("coupon_start_fee"))); goods.setCouponLeftCount(item.optInt("coupon_remain_count")); goods.setCouponLink("https:" + item.optString("coupon_share_url")); goods.setCouponTotalCount(item.optInt("coupon_total_count"));