package com.yeshi.fanli.util.taobao;
|
|
import java.lang.reflect.Type;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.yeshi.utils.HttpUtil;
|
|
import com.google.gson.Gson;
|
import com.google.gson.reflect.TypeToken;
|
import com.yeshi.fanli.dto.taobao.haodanku.HDKGoodsListResultDTO;
|
import com.yeshi.fanli.entity.taobao.haodanku.HDKGoodsDetail;
|
import com.yeshi.fanli.util.StringUtil;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
/**
|
* 好单库API
|
* @author Administrator
|
*
|
*/
|
public class HaoDanKuApiUtil {
|
|
private final static String API_KEY = "blks";
|
|
private static HaoDanKuApiUtil instance;
|
|
public static HaoDanKuApiUtil getInstance() {
|
if (instance == null)
|
instance = new HaoDanKuApiUtil();
|
return instance;
|
}
|
|
private String baseGetRequest(String path, List<ParamsKeyValue> params) {
|
params.add(0, new HaoDanKuApiUtil.ParamsKeyValue("apikey", API_KEY));
|
String url = "http://v2.api.haodanku.com/" + path;
|
for (ParamsKeyValue keyValue : params) {
|
url += ("/" + keyValue.key + "/" + keyValue.value);
|
}
|
return HttpUtil.get(url);
|
}
|
|
private String basePostRequest(String url, List<ParamsKeyValue> params) {
|
params.add(0, new HaoDanKuApiUtil.ParamsKeyValue("apikey", API_KEY));
|
Map<String, String> parmasMap = new HashMap<>();
|
for (ParamsKeyValue keyValue : params) {
|
parmasMap.put(keyValue.key, keyValue.value);
|
}
|
return HttpUtil.post(url, parmasMap, null);
|
}
|
|
/**
|
* 获取朋友圈API的内容
|
* @Title: getSendWXCircleContent
|
* @Description:
|
* void 返回类型
|
* @throws
|
*/
|
public void getSendWXCircleContent(Integer minId) {
|
if (minId == null)
|
minId = 1;
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("min_id", minId + ""));
|
String result = baseGetRequest("selected_item", params);
|
System.out.println(result);
|
}
|
|
public String convertLink(Long auctionId, String pid, String activityId) {
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("itemid", auctionId + ""));
|
params.add(new ParamsKeyValue("pid", pid));
|
if (activityId != null)
|
params.add(new ParamsKeyValue("activityid", activityId));
|
String result = basePostRequest("http://v2.api.haodanku.com/ratesurl", params);
|
JSONObject resultData = JSONObject.fromObject(result);
|
String link = "";
|
if (resultData.optInt("code") == 1) {
|
resultData = resultData.optJSONObject("data");
|
link = resultData.optString("coupon_click_url");
|
if (StringUtil.isNullOrEmpty(link)) {
|
link = resultData.optString("item_url");
|
}
|
}
|
|
return link;
|
}
|
|
/**
|
* 商品列表
|
* @Title: listGoods
|
* @Description:
|
* @param minId
|
* @param catIds
|
* @param pageSize
|
* @return
|
* HDKGoodsListResultDTO 返回类型
|
* @throws
|
*/
|
// 详情:https://www.haodanku.com/api/detail/show/1.html
|
public HDKGoodsListResultDTO listGoods(Integer minId, List<Integer> catIds, int pageSize) {
|
if (minId == null)
|
minId = 1;
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("nav", 3 + ""));
|
params.add(new ParamsKeyValue("back", pageSize + ""));
|
params.add(new ParamsKeyValue("min_id", minId + ""));
|
params.add(new ParamsKeyValue("sort", 0 + ""));
|
if (catIds != null && catIds.size() > 0) {
|
params.add(new ParamsKeyValue("cid", StringUtil.concat(catIds, ",")));
|
}
|
|
String result = baseGetRequest("itemlist", params);
|
|
JSONObject resultData = JSONObject.fromObject(result);
|
if (resultData.optInt("code") == 1) {
|
Integer newMinId = resultData.optInt("min_id");
|
Type type = new TypeToken<ArrayList<HDKGoodsDetail>>() {
|
}.getType();
|
List<HDKGoodsDetail> list = new Gson().fromJson(resultData.optJSONArray("data").toString(), type);
|
return new HDKGoodsListResultDTO(list, newMinId);
|
}
|
|
return null;
|
}
|
|
/**
|
* 增量更新的商品
|
* @Title: listAddGoods
|
* @Description:
|
* @param minId
|
* @param startHour
|
* @param endHour
|
* @param pageSize
|
* @return
|
* HDKGoodsListResultDTO 返回类型
|
* @throws
|
*/
|
public HDKGoodsListResultDTO listAddGoods(Integer minId, int startHour, int endHour, int pageSize) {
|
if (minId == null)
|
minId = 1;
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("back", pageSize + ""));
|
params.add(new ParamsKeyValue("min_id", minId + ""));
|
params.add(new ParamsKeyValue("start", startHour + ""));
|
params.add(new ParamsKeyValue("end", endHour + ""));
|
|
String result = baseGetRequest("timing_items", params);
|
JSONObject resultData = JSONObject.fromObject(result);
|
if (resultData.optInt("code") == 1) {
|
Integer newMinId = resultData.optInt("min_id");
|
Type type = new TypeToken<ArrayList<HDKGoodsDetail>>() {
|
}.getType();
|
List<HDKGoodsDetail> list = new Gson().fromJson(resultData.optJSONArray("data").toString(), type);
|
return new HDKGoodsListResultDTO(list, newMinId);
|
}
|
|
return null;
|
}
|
|
/**
|
* 更新商品信息
|
* @Title: listUpdateGoods
|
* @Description:
|
* @param minId
|
* @param pageSize
|
* void 返回类型
|
* @throws
|
*/
|
public HDKGoodsListResultDTO listUpdateGoods(Integer minId, int pageSize) {
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("back", pageSize + ""));
|
params.add(new ParamsKeyValue("min_id", minId + ""));
|
String result = baseGetRequest("update_item", params);
|
JSONObject resultData = JSONObject.fromObject(result);
|
if (resultData.optInt("code") == 1) {
|
Integer newMinId = resultData.optInt("min_id");
|
Type type = new TypeToken<ArrayList<HDKGoodsDetail>>() {
|
}.getType();
|
List<HDKGoodsDetail> list = new Gson().fromJson(resultData.optJSONArray("data").toString(), type);
|
return new HDKGoodsListResultDTO(list, newMinId);
|
}
|
return null;
|
}
|
|
/**
|
* 拉取失效商品
|
* @Title: listInvalidGoods
|
* @Description:
|
* @param startHour
|
* @param endHour
|
* @return
|
* List<Long> 返回类型
|
* @throws
|
*/
|
public List<Long> listInvalidGoods(int startHour, int endHour) {
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("start", startHour + ""));
|
params.add(new ParamsKeyValue("end", endHour + ""));
|
String result = baseGetRequest("get_down_items", params);
|
JSONObject resultData = JSONObject.fromObject(result);
|
List<Long> goodsIdList = new ArrayList<>();
|
if (resultData.optInt("code") == 1) {
|
|
JSONArray array = resultData.optJSONArray("data");
|
for (int i = 0; i < array.size(); i++) {
|
goodsIdList.add(array.optJSONObject(i).optLong("itemid"));
|
}
|
}
|
return goodsIdList;
|
}
|
|
class ParamsKeyValue {
|
String key;
|
String value;
|
|
public ParamsKeyValue(String key, String value) {
|
super();
|
this.key = key;
|
this.value = value;
|
}
|
}
|
|
public void getGoodsDetail(Long auctionId) {
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("itemid", auctionId + ""));
|
String result = baseGetRequest("item_detail", params);
|
JSONObject resultJSON = JSONObject.fromObject(result);
|
System.out.println(resultJSON.optJSONObject("data").optString("coupon_share_url"));
|
System.out.println(resultJSON.optJSONObject("data").optString("couponurl"));
|
}
|
|
}
|