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.dto.taobao.haodanku.HDKWXCircleContentDTO;
|
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: listGoods
|
* @Description:
|
* @param minId
|
* @param catIds
|
* @param pageSize
|
* @return
|
* HDKGoodsListResultDTO 返回类型
|
* @throws
|
*/
|
public HDKGoodsListResultDTO listHotGoods(Integer minId, int pageSize, int saleType, List<Integer> catIds) {
|
if (minId == null)
|
minId = 1;
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("sale_type", saleType +""));
|
params.add(new ParamsKeyValue("back", pageSize + ""));
|
params.add(new ParamsKeyValue("min_id", minId + ""));
|
params.add(new ParamsKeyValue("item_type", 1 + "")); // 是否只获取营销返利商品,1是,0否
|
if (catIds != null && catIds.size() > 0) {
|
params.add(new ParamsKeyValue("cid", StringUtil.concat(catIds, ",")));
|
}
|
|
String result = baseGetRequest("sales_list", 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 HDKGoodsListResultDTO listSelected(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);
|
|
JSONObject resultData = JSONObject.fromObject(result);
|
if (resultData.optInt("code") == 1) {
|
JSONArray array = resultData.optJSONArray("data");
|
if (array != null) {
|
List<HDKWXCircleContentDTO> list = new ArrayList<>();
|
for (int i = 0; i <array.size(); i ++) {
|
JSONObject item = array.optJSONObject(i);
|
HDKWXCircleContentDTO dto = new HDKWXCircleContentDTO();
|
dto.setTitle(item.optString("title"));
|
dto.setItemid(item.optString("itemid"));
|
dto.setItemtitle(item.optString("itemtitle"));
|
dto.setContent(item.optString("content"));
|
dto.setCopy_content(item.optString("copy_content"));
|
dto.setShow_content(item.optString("show_content"));
|
|
JSONArray imgArray = item.optJSONArray("itempic");
|
if (imgArray != null) {
|
List<String> imgList = new ArrayList<>();
|
for (int n = 0; n < imgArray.size(); n++) {
|
imgList.add(imgArray.optString(n));
|
}
|
dto.setItempic(imgList);
|
}
|
list.add(dto);
|
}
|
HDKGoodsListResultDTO dto = new HDKGoodsListResultDTO();
|
dto.setList(list);
|
dto.setMinId(minId);
|
return dto;
|
}
|
}
|
return null;
|
}
|
|
/**
|
* 单品详情API
|
* @param itemid
|
* @return
|
*/
|
public HDKGoodsDetail getItemDetail(String itemid) {
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("itemid", itemid));
|
String result = baseGetRequest("item_detail", params);
|
|
JSONObject resultData = JSONObject.fromObject(result);
|
if (resultData.optInt("code") == 1) {
|
Type type = new TypeToken<HDKGoodsDetail>() {}.getType();
|
HDKGoodsDetail goodsDetail = new Gson().fromJson(resultData.optJSONObject("data").toString(), type);
|
return goodsDetail;
|
}
|
return null;
|
}
|
|
|
/**
|
* 精选低价包邮专区API
|
* @param minId
|
* @param pageSize
|
* @return
|
*/
|
public HDKGoodsListResultDTO getLowPricePinkageData(Integer minId, int pageSize, Integer typeNum) {
|
if (minId == null)
|
minId = 1;
|
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("min_id", minId +""));
|
params.add(new ParamsKeyValue("back", pageSize + ""));
|
params.add(new ParamsKeyValue("type", typeNum + ""));
|
String result = baseGetRequest("low_price_Pinkage_data", 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;
|
}
|
|
|
/**
|
* 高佣专场商品API
|
* @param minId
|
* @param pageSize
|
* @return
|
*/
|
public HDKGoodsListResultDTO getHighitems(Integer minId, int pageSize, Integer catId) {
|
if (minId == null)
|
minId = 1;
|
|
List<ParamsKeyValue> params = new ArrayList<HaoDanKuApiUtil.ParamsKeyValue>();
|
params.add(new ParamsKeyValue("min_id", minId +""));
|
params.add(new ParamsKeyValue("back", pageSize + ""));
|
if (catId != null)
|
params.add(new ParamsKeyValue("cat_id", catId +""));
|
|
String result = baseGetRequest("get_highitems", params);
|
|
JSONObject resultData = JSONObject.fromObject(result);
|
if (resultData.optInt("code") == 200) {
|
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;
|
}
|
}
|