fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -53,6 +53,7 @@ import com.yeshi.fanli.entity.taobao.ClientTBPid; import com.yeshi.fanli.entity.taobao.PidUser; import com.yeshi.fanli.entity.taobao.SearchFilter; import com.yeshi.fanli.entity.taobao.TLJBuyGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra; import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; @@ -81,6 +82,7 @@ import com.yeshi.fanli.service.inter.goods.SuperRecommendSpecialService; import com.yeshi.fanli.service.inter.goods.TaoBaoCouponService; import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; 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; @@ -92,6 +94,7 @@ import com.yeshi.fanli.service.inter.monitor.MonitorService; import com.yeshi.fanli.service.inter.order.OrderService; import com.yeshi.fanli.service.inter.order.ShareGoodsActivityOrderService; import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; @@ -121,6 +124,7 @@ import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import com.yeshi.fanli.util.taobao.TaoLiJinUtil; import com.yeshi.fanli.vo.goods.taobao.TLJBuyHongBaoVO; import com.yeshi.fanli.vo.msg.ClientTextStyleVO; import com.yeshi.fanli.vo.tlj.SpreadHongBao; import com.yeshi.fanli.vo.user.UserSettingsVO; @@ -260,6 +264,12 @@ @Resource private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService; @Resource private HomeRecommendGoodsService homeRecommendGoodsService; @Resource private TLJBuyGoodsService tljBuyGoodsService; @RequestMapping(value = "getHonestList") public void getHonestList(AcceptData acceptData, PrintWriter out) { @@ -1182,6 +1192,7 @@ // 获取浏览记录 @RequestMapping(value = "getscanhistory", method = RequestMethod.POST) public void getScanHistory(AcceptData acceptData, String uid, int page, Integer goodsType, PrintWriter out) { if (page < 0) { out.print(JsonUtil.loadFalseResult(1, "page不小于0")); return; @@ -1193,12 +1204,12 @@ out.print(JsonUtil.loadFalseResult(1, "不存在该系统")); return; } List<ScanHistoryV2> list = scanHistoryV2Service.getScanHistoryByDeviceOrUid( StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), page, 20, goodsType); long count = scanHistoryV2Service.getCountByDeviceOrUid( StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), goodsType); JSONObject data = new JSONObject(); data.put("count", count); @@ -1288,7 +1299,7 @@ * 防止请求频率过高 * */ if (Constant.IS_OUTNET) { // if (Constant.IS_OUTNET) { String key = "linkParse-" + acceptData.getDevice() + "-" + id; String value = redisManager.getCommonString(key); @@ -1297,7 +1308,7 @@ return; } redisManager.cacheCommonString(key, "1", 5);// 5s间隔 } // } TaoBaoGoodsBrief goods = null; try { goods = redisManager.getTaoBaoGoodsBrief(Long.parseLong(id)); @@ -1332,6 +1343,54 @@ 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(), imei, idfa, page); BigDecimal rate = hongBaoManageService.getFanLiRate(); for (TaoBaoGoodsBrief goods : goodsList) { TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, rate + "", null); if (page < 3) extra.setRecommend(true); try { array.add(gson.toJson(extra)); } catch (Exception e) { e.printStackTrace(); System.out.println(new Gson().toJson(goods)); } } if (page == 1) { List<TLJBuyGoods> list = homeRecommendGoodsService.getZiGouLiJianHotGoods(acceptData.getDevice()); if (list != null && list.size() > 0) for (int i = list.size() - 1; i >= 0; i--) { TLJBuyGoods goods = list.get(i); TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods.getGoods(), TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE + "", null); String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(), TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE); TLJBuyHongBaoVO vo = new TLJBuyHongBaoVO(); vo.setLeft(goods.getLeftHongBaoCount()); vo.setMoney(hongBao); vo.setTagName("付款立减 " + hongBao); vo.setTip(""); vo.setTotal(goods.getTotalHongBaoCount()); extra.setTljBuyHongBao(vo); extra.setPictureTag(new ClientTextStyleVO("立减TOP" + (i + 1), "#E5005C", "#FCE431", null)); extra.setRecommend(true); extra.setSpreadMoney(vo.getTagName()); array.add(0, gson.toJson(extra)); } } JSONObject data = new JSONObject(); data.put("data", array); data.put("count", 1000); out.print(JsonUtil.loadTrueResult(data)); return; } // 从推荐来 if (page <= 1) { array.clear(); @@ -1350,6 +1409,7 @@ // filter try { gList = daTaoKeGoodsDetailService.filterTaoBaoGoods(gList); } catch (Exception e) { } @@ -1364,6 +1424,7 @@ TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, proportion.toString(), ""); extra.setRecommend(true); goodsList.add(extra); } @@ -2237,7 +2298,7 @@ data.put("listTip", listText); } spreadHongBao.setTip("当日领取,当日内使用,过期失效。"); spreadHongBao.setTip("当日领取,当日内使用,过期失效"); goodsJson.put("spreadHongBao", spreadHongBao); // 用户剩余可以淘礼金验证 @@ -2259,6 +2320,27 @@ goodsJson.put("tljNum", tljNum); } } else if (from != null && from.equals("taolijin_buy")) { noRebateHelpLink = configService.get("zigoulijian_nofanli_help"); // 查询分享库 TLJBuyGoods buyGoods = tljBuyGoodsService.selectByAuctionIdAndDay(goods.getAuctionId(), TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd")); if (buyGoods == null) { out.print(JsonUtil.loadFalseResult(2, "自购立减红包过期")); return; } fanliValid = true; goodsJson.put("shareValid", false); String tljHongBao = TaoBaoUtil.getGoodsHongBaoMoney(goods, new BigDecimal(70)).toString(); TLJBuyHongBaoVO vo = new TLJBuyHongBaoVO(); vo.setLeft(buyGoods.getLeftHongBaoCount()); vo.setMoney(tljHongBao); vo.setTagName("付款立减 ¥" + tljHongBao); vo.setTip("当日领取,当日内使用,过期失效"); vo.setTotal(buyGoods.getTotalHongBaoCount()); goodsJson.put("tljBuyHongBao", vo); moneyType = 2; } goodsJson.put("moneyType", moneyType); @@ -2399,7 +2481,7 @@ if (goodsList != null && goodsList.size() > 0) goodsList.parallelStream().forEach(goods -> { if (goods != null) { // 获取详情 TaoBaoGoodsBrief taoBaoGoodsBrief = null; try { @@ -2419,47 +2501,10 @@ if (taoBaoGoodsBrief != null) { listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), "")); } } }); List<TaoBaoGoodsBrief> listQuality = new ArrayList<TaoBaoGoodsBrief>(); // 删除推荐 // // try { // List<QualityFactory> listRecommend = // qualityGoodsService.recommendByAuctionId(id); // // if (listRecommend != null && listRecommend.size() > 1) { // for (QualityFactory quality : listRecommend) { // // TaoBaoGoodsBrief taoBaoGoodsBrief = quality.getTaoBaoGoodsBrief(); // if (taoBaoGoodsBrief == null) { // continue; // } // // int biz30day = taoBaoGoodsBrief.getBiz30day(); // if (biz30day >= 10000) { // double sales = biz30day; // String salesCountMidea = String.format("%.1f", sales / 10000); // taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万"); // } else { // taoBaoGoodsBrief.setSalesCount(biz30day + ""); // } // // // 改变图片尺寸 // String pictUrl = taoBaoGoodsBrief.getPictUrl(); // if (!StringUtil.isNullOrEmpty(pictUrl) && // !pictUrl.contains("320x320")) { // taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl)); // } // // listQuality.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, // proportion.toString(), null)); // } // } // } catch (Exception e2) { // e2.printStackTrace(); // } // 取偶数个数据 if (listExtra.size() % 2 != 0) { fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java
@@ -27,6 +27,7 @@ import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture; import com.yeshi.fanli.entity.bus.tlj.DeviceTaoLiJinRecord; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin; @@ -34,18 +35,22 @@ import com.yeshi.fanli.entity.bus.user.UserMoneyExtra; import com.yeshi.fanli.entity.bus.user.UserRank; import com.yeshi.fanli.entity.taobao.ShareHotGoods; import com.yeshi.fanli.entity.taobao.TLJBuyGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra; import com.yeshi.fanli.exception.banner.SwiperPictureException; import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException; import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.goods.ShareGoodsService; import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService; import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.lable.QualityGoodsService; import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service; import com.yeshi.fanli.service.inter.monitor.MonitorService; import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService; import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService; import com.yeshi.fanli.service.inter.tlj.DeviceTaoLiJinRecordService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService; @@ -58,13 +63,18 @@ import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoLiJinUtil; <<<<<<< HEAD import com.yeshi.fanli.vo.goods.GoodsDetailVO; import com.yeshi.fanli.vo.goods.MoneyInfoVO; import com.yeshi.fanli.vo.goods.OtherInfo; ======= import com.yeshi.fanli.vo.goods.taobao.TLJBuyHongBaoVO; >>>>>>> refs/remotes/origin/master import com.yeshi.fanli.vo.msg.ClientTextStyleVO; import com.yeshi.fanli.vo.tlj.SpreadHongBao; import com.yeshi.fanli.vo.tlj.TaoLiJinDetailVO; @@ -137,6 +147,11 @@ @Resource private ShareHotGoodsService shareHotGoodsService; @Resource private TLJBuyGoodsService tljBuyGoodsService; @Resource private SwiperPictureService swiperPictureService; /** * 获取淘礼金分享记录 @@ -157,9 +172,9 @@ page = 1; } int pageSize = Constant.PAGE_SIZE; List<UserTaoLiJinRecordVO> list = userTaoLiJinRecordService.getRecordByUid((page - 1) * pageSize, pageSize, uid); List<UserTaoLiJinRecordVO> list = userTaoLiJinRecordService.getRecordByUid((page - 1) * pageSize, pageSize, uid); if (list == null) { list = new ArrayList<UserTaoLiJinRecordVO>(); } @@ -186,9 +201,9 @@ out.print(JsonUtil.loadTrueResult(data)); } /** * 统计淘礼金 * * @param acceptData * @param uid * @param out @@ -211,7 +226,6 @@ } else { tlj = new BigDecimal(0); } // 今日分享个数 long countShare = userTaoLiJinRecordService.countTodayNum(uid); @@ -244,7 +258,6 @@ data.put("thisMonthUse", thisMonthUse.setScale(2).toString().replaceAll("-", "")); data.put("lastMonthUse", lastMonthUse.setScale(2).toString().replaceAll("-", "")); // IOS 分享个数 ClientTextStyleVO textVo1 = new ClientTextStyleVO(); textVo1.setContent("今日创建分享"); @@ -264,7 +277,6 @@ out.print(JsonUtil.loadTrueResult(data)); } /** * 获取淘礼金明细详情 @@ -342,8 +354,6 @@ } }); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); @@ -352,10 +362,9 @@ out.print(JsonUtil.loadTrueResult(data)); } /** * 红包领取详情 * * @param acceptData * @param uid * @param type @@ -401,7 +410,6 @@ out.print(JsonUtil.loadTrueResult(data)); return; } // 登录用户 JSONObject data = new JSONObject(); @@ -489,10 +497,9 @@ out.print(JsonUtil.loadTrueResult(data)); } /** * 分享爆款商品-限于淘礼金 * * @param acceptData * @param uid * @param out @@ -510,7 +517,6 @@ listHot = new ArrayList<ShareHotGoods>(); } JSONArray array = new JSONArray(); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); @@ -523,7 +529,6 @@ isNewUser = false; } } BigDecimal proportion = hongBaoManageService.getFanLiRate(); for (ShareHotGoods hotGoods : listHot) { @@ -541,7 +546,8 @@ continue; } TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null); TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null); // 去掉标签 extra.setLabels(null); @@ -660,4 +666,83 @@ data.put("list", array); out.print(JsonUtil.loadTrueResult(data)); } /** * 分享爆款商品-限于淘礼金 * * @param acceptData * @param uid * @param out */ @RequestMapping(value = "getBuyGoods", method = RequestMethod.POST) public void getBuyGoods(AcceptData acceptData, int page, PrintWriter out) { String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis()); List<TLJBuyGoods> listHot = tljBuyGoodsService.listByDay(day); if (listHot == null) { listHot = new ArrayList<TLJBuyGoods>(); } JSONArray array = new JSONArray(); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); BigDecimal proportion = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE; for (TLJBuyGoods hotGoods : listHot) { TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods(); if (taoBaoGoodsBrief == null) { continue; } // 计算推广红包 BigDecimal spreadMoney = TaoBaoUtil.getGoodsHongBaoMoney(taoBaoGoodsBrief, proportion); // 推广红包 不能小于1 if (spreadMoney.compareTo(new BigDecimal(1.0)) < 0) { continue; } TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null); // 去掉标签 extra.setLabels(null); String hongBao = spreadMoney.toString(); TLJBuyHongBaoVO vo = new TLJBuyHongBaoVO(); vo.setLeft(hotGoods.getLeftHongBaoCount()); vo.setMoney(hongBao); vo.setTagName("付款立减 ¥" + hongBao); vo.setTip(""); vo.setTotal(hotGoods.getTotalHongBaoCount()); extra.setTljBuyHongBao(vo); // 显示类型 extra.setMoneyType(2); extra.setSpreadMoney("付款立减 ¥" + spreadMoney); array.add(gson.toJson(extra)); } if (page > 1) array.clear(); JSONObject data = new JSONObject(); data.put("count", array.size()); data.put("list", array); if (page == 1) { try { List<SwiperPicture> bannerList = swiperPictureService.getByBannerCard("zigoulijian_banner"); if (bannerList != null && bannerList.size() > 0) data.put("topPicture", bannerList.get(0).getSrc()); else data.put("topPicture", ""); } catch (SwiperPictureException e) { e.printStackTrace(); } data.put("ruleUrl", configService.get("zigoulijian_rule")); } out.print(JsonUtil.loadTrueResult(data)); } } fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java
@@ -1,11 +1,24 @@ package com.yeshi.fanli.util.pinduoduo; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import org.yeshi.utils.BigDecimalUtil; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class PinDuoDuoUtil { @@ -80,4 +93,49 @@ return salesCountMidea; } public static List<String> getDetailImages(Long id) { List<String> imgList = new ArrayList<>(); try { Document doc = Jsoup.connect("http://yangkeduo.com/goods.html?goods_id="+id) .userAgent( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36") .get(); Elements els = doc.getElementsByTag("script"); for (int i = 0; i < els.size(); i++) { if (els.get(i).html().contains("window.rawData")) { String dataJS = els.get(i).html().replace("window.", "var "); dataJS += "function getData(){return JSON.stringify(rawData);}"; ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); try { engine.eval(dataJS); if (engine instanceof Invocable) { Invocable in = (Invocable) engine; String jsonStr = in.invokeFunction("getData").toString(); JSONObject json = JSONObject.fromObject(jsonStr); JSONArray array = json.optJSONObject("store").optJSONObject("initDataObj") .optJSONObject("goods").optJSONArray("detailGallery"); for (int j = 0; j < array.size(); j++) { imgList.add("http:" + array.optJSONObject(j).optString("url")); } } } catch (Exception e) { e.printStackTrace(); } break; } } } catch (Exception e1) { e1.printStackTrace(); } return imgList; } }