package com.ks.tool.bkz.controller; import com.alibaba.fastjson.JSONObject; import com.ks.tool.bkz.dto.FirstOrderSubParseResult; import com.ks.tool.bkz.entity.FirstOrderSubInfo; import com.ks.tool.bkz.entity.user.UserInfo; import com.ks.tool.bkz.exception.TBCookieException; import com.ks.tool.bkz.service.manager.RedisManager; import com.ks.tool.bkz.service.sdlj.SDLJGoodsService; import com.ks.tool.bkz.service.user.UserService; import com.ks.tool.bkz.util.*; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.Map; @Controller @RequestMapping("sdlj/parse") public class ParseController { @Resource private RedisManager redisManager; @Resource private SDLJGoodsService sdljGoodsService; @Resource private UserService userService; private String getCookieKey(String tbUid) { return "tbcookie-" + tbUid; } @RequestMapping("getRequestUrl") @ResponseBody public String getRequestUrl(String baseUrl, String tbUid) { String host = UrlUtil.getHost(baseUrl); Map params = UrlUtil.getParamsMap(baseUrl); params.put("t", System.currentTimeMillis() + ""); String cookie = redisManager.get(getCookieKey(tbUid)); String token = FirstOrderSubDataUtil.getTokenFromCookie(cookie); String data = params.get("data"); try { data = URLDecoder.decode(data, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } JSONObject dataJSON = JSONObject.parseObject(data); String paramsStr = dataJSON.getString("params"); dataJSON = JSONObject.parseObject(paramsStr); int pageNo = dataJSON.getInteger("pageNo"); if (pageNo < 30) { dataJSON.put("pageNo", pageNo + 1); JSONObject paramsJSON = new JSONObject(); paramsJSON.put("params", dataJSON.toJSONString()); data = paramsJSON.toJSONString(); String sign = FirstOrderSubDataUtil.getSign(token, params.get("t"), params.get("appKey"), data); params.put("data", data); params.put("sign", sign); String requestUrl = UrlUtil.getRequestUrl(host, params); JSONObject root = new JSONObject(); root.put("url", requestUrl); System.out.println(requestUrl); return JsonUtil.loadTrueResult(root); } else { return JsonUtil.loadFalseResult(1, ""); } } /** * 上传cookie * * @param cookies * @return */ @RequestMapping("uploadCookies") @ResponseBody public String uploadCookie(String cookies) { String tbUid = TBCookieUtil.getTBUid(cookies); if (!StringUtil.isNullOrEmpty(tbUid)) { redisManager.save(getCookieKey(tbUid), cookies, 60 * 60); } return JsonUtil.loadTrueResult(""); } @RequestMapping("getLoginUrl") public void getLoginUrl(PrintWriter out) { JSONObject data = new JSONObject(); data.put("loginUrl", String.format("http://login.taobao.com/member/login.jhtml?style=mini&newMini2=true&redirectURL=%s&full_redirect=true&disableQuickLogin=true", URLEncoder.encode("https://m.tb.cn/h.VN61jro?sm=9ed9c4"))); out.print(JsonUtil.loadTrueResult(data)); } @RequestMapping("getCookie") @ResponseBody public String getCookie() { return redisManager.get("cookie"); } @RequestMapping("uploadContent") @ResponseBody public String uploadContent(String content, String tbUid, HttpServletRequest request) { String token = request.getHeader("token"); String account = UserUtil.getAccountFromToken(token); UserInfo user = userService.selectByAccount(account); try { FirstOrderSubParseResult result = FirstOrderSubDataUtil.parseOrderSubData(content); if (result != null && result.isHasNextPage()) { if (result.getGoodsList() != null) for (FirstOrderSubInfo info : result.getGoodsList()) { sdljGoodsService.addSDLJGoods(info,user.getId(),tbUid ); System.out.println(info.getId() + "-" + info.getTitle()); } System.out.println("----------------------------"); return JsonUtil.loadTrueResult(""); } else { return JsonUtil.loadFalseResult(1, "无更多数据"); } } catch (TBCookieException e) { return JsonUtil.loadFalseResult(1001, "淘宝授权出错"); } } }