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 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>() { }.getType(); List 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 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]; } }