| | |
| | | package com.yeshi.fanli.util.dataoke;
|
| | |
|
| | | import java.io.IOException;
|
| | | import java.lang.reflect.Type;
|
| | | import java.math.BigDecimal;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | |
| | | import org.jsoup.select.Elements;
|
| | | import org.yeshi.utils.HttpUtil;
|
| | |
|
| | | import com.google.gson.ExclusionStrategy;
|
| | | import com.google.gson.FieldAttributes;
|
| | | import com.google.gson.Gson;
|
| | | import com.google.gson.reflect.TypeToken;
|
| | | import com.google.gson.GsonBuilder;
|
| | | import com.yeshi.fanli.dto.dataoke.DaTaoKeApiResult;
|
| | | import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult;
|
| | | import com.yeshi.fanli.dto.taobao.TaoBaoShopDTO;
|
| | |
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | |
|
| | | import net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | |
| | |
|
| | | final static String[] APP_SECRETS = new String[] { APP_KEY_SECRET, APP_KEY_SECRET_2 };
|
| | |
|
| | | static Gson gson = new Gson();
|
| | | static Gson gson = null;
|
| | | static {
|
| | | gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
|
| | | @Override
|
| | | public boolean shouldSkipField(FieldAttributes f) {
|
| | | return f.getName().equals("createTime");// 忽略createTime的解析
|
| | | }
|
| | |
|
| | | @Override
|
| | | public boolean shouldSkipClass(Class<?> clazz) {
|
| | | return false;
|
| | | }
|
| | | }).create();
|
| | | }
|
| | |
|
| | | private static String get(String url) {
|
| | | HttpClient client = new HttpClient();
|
| | |
| | | if (dataJson != null) {
|
| | | JSONArray array = dataJson.optJSONArray("list");
|
| | | if (array != null) {
|
| | | String data = array.toString();
|
| | | Type type = new TypeToken<List<DaTaoKeDetailV2>>() {
|
| | | }.getType();
|
| | |
|
| | | List<DaTaoKeDetailV2> list = gson.fromJson(data, type);
|
| | | List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
|
| | | daTaoKeGoodsResult.setGoodsList(list);
|
| | | }
|
| | | daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
|
| | |
| | | if (dataJson != null) {
|
| | | JSONArray array = dataJson.optJSONArray("list");
|
| | | if (array != null) {
|
| | | String data = array.toString();
|
| | | Type type = new TypeToken<List<DaTaoKeDetailV2>>() {
|
| | | }.getType();
|
| | |
|
| | | List<DaTaoKeDetailV2> list = gson.fromJson(data, type);
|
| | | List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
|
| | | daTaoKeGoodsResult.setGoodsList(list);
|
| | | }
|
| | | daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
|
| | |
| | | if (dataJson != null) {
|
| | | JSONArray array = dataJson.optJSONArray("list");
|
| | | if (array != null) {
|
| | | String data = array.toString();
|
| | | Type type = new TypeToken<List<DaTaoKeDetailV2>>() {
|
| | | }.getType();
|
| | |
|
| | | List<DaTaoKeDetailV2> list = gson.fromJson(data, type);
|
| | | List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
|
| | | daTaoKeGoodsResult.setGoodsList(list);
|
| | | }
|
| | | daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
|
| | |
| | | if (dataJson != null) {
|
| | | JSONArray array = dataJson.optJSONArray("list");
|
| | | if (array != null) {
|
| | | String data = array.toString();
|
| | | Type type = new TypeToken<List<DaTaoKeDetailV2>>() {
|
| | | }.getType();
|
| | |
|
| | | List<DaTaoKeDetailV2> list = gson.fromJson(data, type);
|
| | | List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
|
| | | daTaoKeGoodsResult.setGoodsList(list);
|
| | | }
|
| | | daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
|
| | |
| | |
|
| | | public static DaTaoKeDetailV2 getGoodsDetail(Long id) {
|
| | | TaoKeAppInfo app = getRandomApp();
|
| | | DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
|
| | | Map<String, String> params = new TreeMap<>();
|
| | | params.put("version", "v1.0.0");
|
| | | params.put("appKey", app.getAppKey());
|
| | |
| | | JSONObject json = JSONObject.fromObject(result);
|
| | | JSONObject dataJson = json.optJSONObject("data");
|
| | | if (dataJson != null) {
|
| | | return gson.fromJson(dataJson.toString(), DaTaoKeDetailV2.class);
|
| | | return parseDaTaoKeDetailV2(dataJson);
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
| | | if (dataJson != null) {
|
| | | JSONArray array = dataJson.optJSONArray("list");
|
| | | if (array != null) {
|
| | | String data = array.toString();
|
| | | Type type = new TypeToken<List<DaTaoKeDetailV2>>() {
|
| | | }.getType();
|
| | |
|
| | | List<DaTaoKeDetailV2> list = gson.fromJson(data, type);
|
| | | List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
|
| | | daTaoKeGoodsResult.setGoodsList(list);
|
| | | }
|
| | | daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
|
| | |
| | | List<DaTaoKeDetailV2> list = new ArrayList<>();
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject itemData = array.optJSONObject(i);
|
| | | DaTaoKeDetailV2 item = gson.fromJson(itemData.toString(), DaTaoKeDetailV2.class);
|
| | | DaTaoKeDetailV2 item = parseDaTaoKeDetailV2(itemData);
|
| | | item.setCouponConditions(itemData.optString("quanUsageCondition"));
|
| | | item.setShopType(itemData.optInt("istmall"));
|
| | | item.setOriginalPrice(new BigDecimal(itemData.optString("originPrice")));
|
| | |
| | |
|
| | | }
|
| | |
|
| | | private static List<DaTaoKeDetailV2> parseDaTaoKeDetailV2List(JSONArray array) {
|
| | | List<DaTaoKeDetailV2> detailList = new ArrayList<>();
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | DaTaoKeDetailV2 detail = parseDaTaoKeDetailV2(array.optJSONObject(i));
|
| | | detailList.add(detail);
|
| | | }
|
| | | return detailList;
|
| | | }
|
| | |
|
| | | private static DaTaoKeDetailV2 parseDaTaoKeDetailV2(JSONObject json) {
|
| | | DaTaoKeDetailV2 detail = gson.fromJson(json.toString(), DaTaoKeDetailV2.class);
|
| | | detail.setCreateTime(new Date(TimeUtil.convertToTimeTemp(json.optString("createTime"), "yyyy-MM-dd HH:mm:ss")));
|
| | | return detail;
|
| | | }
|
| | |
|
| | | class DaTaoKeResult {
|
| | | Date updateTime;
|
| | | List<DaTaoKeDetail> dataList;
|