| | |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoHead;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
|
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
|
| | | import com.yeshi.fanli.tag.PageEntity;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | |
| | | } catch (IOException e1) {
|
| | | e1.printStackTrace();
|
| | | }
|
| | | if (doc == null)
|
| | | return new ArrayList<>();
|
| | | Elements els = doc.getElementsByTag("script");
|
| | | for (int i = 0; i < els.size(); i++) {
|
| | | String content = els.get(i).html();
|
| | |
| | | ScriptEngineManager manager = new ScriptEngineManager();
|
| | | ScriptEngine engine = manager.getEngineByName("javascript");
|
| | | try {
|
| | | String js = "function getData(){return JSON.stringify(dataDef);}" + content;
|
| | | String js = "function getData(){return JSON.stringify(dataDef);} var test1='--';function test2(res){};"
|
| | | + content.replace("$(window).load", "test2").replace("window.location.search.", "test1.");
|
| | | engine.eval(js);
|
| | | if (engine instanceof Invocable) {
|
| | | Invocable in = (Invocable) engine;
|
| | |
| | | return couponList;
|
| | | }
|
| | |
|
| | | private static List<DaTaoKeDetail> parseCurrent(String url) {
|
| | | private static List<DaTaoKeDetailV2> parseCurrent(String url) {
|
| | |
|
| | | List<DaTaoKeDetail> list = new ArrayList<>();
|
| | | List<DaTaoKeDetailV2> list = new ArrayList<>();
|
| | | try {
|
| | | Document doc = Jsoup.connect(url)
|
| | | .userAgent(
|
| | |
| | | .getElementsByTag("b").get(0).text();
|
| | |
|
| | | System.out.println(id + "-" + currentSale);
|
| | | DaTaoKeDetail detail = new DaTaoKeDetail();
|
| | | DaTaoKeDetailV2 detail = new DaTaoKeDetailV2();
|
| | | detail.setId(id);
|
| | | detail.setSalesNum(Integer.parseInt(currentSale));
|
| | | detail.setMonthSales(Integer.parseInt(currentSale));
|
| | | list.add(detail);
|
| | |
|
| | | }
|
| | |
| | | * @param cid
|
| | | * @return
|
| | | */
|
| | | public static List<DaTaoKeDetail> getCurrentSalesRank(Integer cid) {
|
| | | public static List<DaTaoKeDetailV2> getCurrentSalesRank(Integer cid) {
|
| | | String url = null;
|
| | | if (cid == null)
|
| | | url = "http://www.dataoke.com/top_sell";
|
| | |
| | | * @param cid
|
| | | * @return
|
| | | */
|
| | | public static List<DaTaoKeDetail> getCurrentDaySalesRank(Integer cid) {
|
| | | public static List<DaTaoKeDetailV2> getCurrentDaySalesRank(Integer cid) {
|
| | | String url = null;
|
| | | if (cid == null)
|
| | | url = "http://www.dataoke.com/top_all";
|
| | |
| | | * @param cid
|
| | | * @return
|
| | | */
|
| | | public static List<DaTaoKeDetail> getCurrentHotSalesRank() {
|
| | | public static List<DaTaoKeDetailV2> getCurrentHotSalesRank() {
|
| | | String url = "http://www.dataoke.com/top_tui";
|
| | | return parseCurrent(url);
|
| | | }
|
| | |
| | | return commonEmojis[(int) (Math.random() * commonEmojis.length)];
|
| | | }
|
| | |
|
| | | public static String getDesc(DaTaoKeDetail detail) {
|
| | | public static String getDesc(DaTaoKeDetailV2 detail) {
|
| | |
|
| | | // 标题+券后价+包邮+描述
|
| | | String desc = detail.getdTitle();
|
| | | String desc = detail.getDtitle();
|
| | | desc += "\n";
|
| | | desc += String.format("券后价%s【%s元】包邮秒杀 ", Math.random() > 0.5 ? "💰" : "",
|
| | | MoneyBigDecimalUtil.getWithNoZera(detail.getPrice()).toString())
|
| | | MoneyBigDecimalUtil.getWithNoZera(detail.getActualPrice() ).toString())
|
| | | + (Math.random() > 0.5 ? getRandomCommonEmoji() : "");
|
| | | desc += "\n";
|
| | | // desc += detail.getIntroduce();
|
| | | String introduce = detail.getIntroduce().replace(",", ",").replace("。", ",").replace("!", ",").replace(",",
|
| | | String introduce = detail.getDesc().replace(",", ",").replace("。", ",").replace("!", ",").replace(",",
|
| | | ",");
|
| | | introduce = introduce.replace(",,,", ",").replace(",,", ",");
|
| | |
|
| | |
| | | return desc;
|
| | | }
|
| | |
|
| | | public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetail detail) {
|
| | | if (detail != null && goods != null) {
|
| | | // 重新设置标题与券价格
|
| | | goods.setTitle(detail.getdTitle());
|
| | | if (!StringUtil.isNullOrEmpty(detail.getPic()))
|
| | | goods.setPictUrlWhite(detail.getPic());
|
| | | }
|
| | | return goods;
|
| | | }
|
| | |
|
| | | public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 detail) {
|
| | | if (detail != null && goods != null) {
|
| | |
| | | return goods;
|
| | | }
|
| | |
|
| | | public static DaTaoKeDetail filterDaTaoKe(TaoBaoGoodsBrief goods, DaTaoKeDetail detail) {
|
| | | public static DaTaoKeDetailV2 filterDaTaoKe(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 detail) {
|
| | | if (goods != null) {
|
| | | BigDecimal price = TaoBaoUtil.getAfterUseCouplePrice(goods);
|
| | | detail.setOrgPrice(goods.getZkPrice());
|
| | | detail.setPrice(price);
|
| | | detail.setOriginalPrice(goods.getZkPrice());
|
| | | detail.setActualPrice(price);
|
| | | if (goods.getCouponStartFee() != null)
|
| | | detail.setQuanCondition(goods.getCouponStartFee() + "");
|
| | | detail.setQuanId(goods.getCouponActivityId());
|
| | | detail.setQuanPrice(goods.getCouponAmount());
|
| | | detail.setCouponConditions(goods.getCouponStartFee() + "");
|
| | | detail.setCouponPrice(goods.getCouponAmount());
|
| | | return detail;
|
| | | }
|
| | |
|
| | | return detail;
|
| | | }
|
| | |
|
| | | public static List<String> getDingDongQiangTime() {
|
| | | public static List<DingDongTime> getDingDongQiangTime(Calendar nowDate) {
|
| | |
|
| | | // 获取当前的小时数
|
| | | DingDongTime[] times = new DingDongTime[] { new DingDongTime("0", "00:00"), new DingDongTime("8", "08:00"),
|
| | | new DingDongTime("10", "10:00"), new DingDongTime("13", "13:00"), new DingDongTime("15", "15:00"),
|
| | | new DingDongTime("17", "17:00"), new DingDongTime("19", "19:00"), new DingDongTime("20", "20:00"),
|
| | | new DingDongTime("21", "21:00") };
|
| | | Calendar nowDate = Calendar.getInstance();
|
| | | Calendar preDate = Calendar.getInstance();
|
| | | preDate.setTimeInMillis(nowDate.getTimeInMillis() - 24 * 60 * 60 * 1000L);
|
| | |
|
| | |
| | | ? "0" + nowDate.get(Calendar.DAY_OF_MONTH) : nowDate.get(Calendar.DAY_OF_MONTH) + "";
|
| | |
|
| | | int hour = nowDate.get(Calendar.HOUR_OF_DAY);
|
| | | int pos = 0;
|
| | | int pos = times.length - 1;
|
| | | for (int i = 0; i < times.length - 1; i++) {
|
| | | if (hour >= Integer.parseInt(times[i].getKey()) && hour < Integer.parseInt(times[i + 1].getKey())) {
|
| | | pos = i;
|
| | |
| | |
|
| | | List<DingDongTime> list = new ArrayList<>();
|
| | |
|
| | | // 获取当前时间之前的5个数据
|
| | | for (int i = 5; i >= 0; i--) {
|
| | | int p = pos - i < 0 ? (times.length + pos - i) : pos - i;
|
| | | DingDongTime itemData = new DingDongTime(times[p].getKey(), times[p].getValue());
|
| | | DingDongTime itemData = new DingDongTime(times[p].getKey(), times[p].getValue(), -1);
|
| | | if (pos - i < 0)
|
| | | itemData.setTime(
|
| | | preDay + "" + (itemData.getKey().length() < 2 ? ("0" + itemData.getKey()) : itemData.getKey()));
|
| | | else
|
| | | itemData.setTime(
|
| | | nowDay + "" + (itemData.getKey().length() < 2 ? ("0" + itemData.getKey()) : itemData.getKey()));
|
| | |
|
| | | if (pos == p)
|
| | | itemData.setState(0);
|
| | | list.add(itemData);
|
| | | }
|
| | |
|
| | | // 向后添加剩下的
|
| | | if (pos + 1 < times.length)
|
| | | for (int i = pos + 1; i < times.length; i++) {
|
| | | DingDongTime itemData = new DingDongTime(times[i].getKey(), times[i].getValue());
|
| | | DingDongTime itemData = new DingDongTime(times[i].getKey(), times[i].getValue(), 1);
|
| | | itemData.setTime(
|
| | | nowDay + "" + (itemData.getKey().length() < 2 ? ("0" + itemData.getKey()) : itemData.getKey()));
|
| | | list.add(itemData);
|
| | | }
|
| | |
|
| | | if (times.length - (pos + 1) < 2) {
|
| | | DingDongTime itemData = new DingDongTime(times[0].getKey(), times[0].getValue());
|
| | | DingDongTime itemData = new DingDongTime(times[0].getKey(), times[0].getValue(), 1);
|
| | | itemData.setTime(
|
| | | nextDay + "" + (itemData.getKey().length() < 2 ? ("0" + itemData.getKey()) : itemData.getKey()));
|
| | | list.add(itemData);
|
| | | }
|
| | |
|
| | | List<String> finalTimeList = new ArrayList<>();
|
| | | for (DingDongTime time : list)
|
| | | finalTimeList.add(time.getTime());
|
| | | return finalTimeList;
|
| | | return list;
|
| | | }
|
| | |
|
| | | }
|