admin
2020-06-19 31e20ddb1eafa5bf64a0824629fb8c7a05450318
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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<String, String> 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, "淘宝授权出错");
        }
    }
 
 
}