package com.ks.tool.bkz.util;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.google.gson.Gson;
|
import com.google.gson.reflect.TypeToken;
|
import com.ks.tool.bkz.dto.FirstOrderSubParseResult;
|
import com.ks.tool.bkz.entity.FirstOrderSubInfo;
|
import com.ks.tool.bkz.exception.TBCookieException;
|
|
import java.lang.reflect.Type;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Map;
|
|
public class FirstOrderSubDataUtil {
|
|
/**
|
* 解析商品数据
|
*
|
* @param data
|
* @return
|
*/
|
public static FirstOrderSubParseResult parseOrderSubData(String data) throws TBCookieException {
|
data = data.trim().substring(data.indexOf("("));
|
if (data.endsWith(")"))
|
data = data.substring(0, data.length() - 1);
|
|
//Cookie过期
|
JSONObject dataJSON = JSONObject.parseObject(data);
|
if (dataJSON.getJSONArray("ret") != null && dataJSON.getJSONArray("ret").toString().contains("令牌"))
|
throw new TBCookieException(1,"cookie失效");
|
|
JSONObject resultValue = dataJSON.getJSONObject("data").getJSONObject("resultValue");
|
|
for (Iterator<String> its = resultValue.keySet().iterator(); its.hasNext(); ) {
|
String key = its.next();
|
if (NumberUtil.isNumeric(key)) {
|
JSONObject entity = resultValue.getJSONObject(key).getJSONObject("data").getJSONArray("entity").getJSONObject(0);
|
boolean hasNextPage = entity.getBoolean("hasNextPage");
|
JSONArray array = entity.getJSONArray("model");
|
Type type = new TypeToken<List<FirstOrderSubInfo>>() {
|
}.getType();
|
List<FirstOrderSubInfo> list = new Gson().fromJson(array.toString(), type);
|
return new FirstOrderSubParseResult(hasNextPage, list);
|
}
|
}
|
return null;
|
}
|
|
/**
|
* 获取签名
|
*
|
* @param token
|
* @param time
|
* @param appKey
|
* @param data
|
* @return
|
*/
|
public static String getSign(String token, String time, String appKey, String data) {
|
return StringUtil.Md5(String.format("%s&%s&%s&%s", token, time, appKey, data));
|
}
|
|
|
/**
|
* 获取token
|
*
|
* @param cookie
|
* @return
|
*/
|
public static String getTokenFromCookie(String cookie) {
|
Map<String, String> map = new HashMap<>();
|
String[] sts = cookie.split(";");
|
for (String st : sts) {
|
map.put(st.split("=")[0].trim(), st.split("=")[1].trim());
|
}
|
String tk = map.get("_m_h5_tk");
|
return tk.split("_")[0];
|
}
|
|
|
}
|