ccjgmwz 3 年之前
父节点
当前提交
fb267d90aa
共有 1 个文件被更改,包括 153 次插入13 次删除
  1. 153 13
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/AdminCheckQuartz.java

+ 153 - 13
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/AdminCheckQuartz.java

@@ -1,6 +1,7 @@
 package com.iotechn.unimall.admin;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.dangdang.openplatform.openapi.sdk.ApiException;
@@ -39,6 +40,18 @@ import com.iotechn.unimall.data.mapper.shop.ShopAccountMapper;
 import com.iotechn.unimall.data.mapper.shop.ShopOrderMapper;
 import com.iotechn.unimall.data.mapper.shop.ShopTranMapper;
 import com.iotechn.unimall.data.util.XMLUtil;
+import org.apache.commons.httpclient.Cookie;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.NameValuePair;
+import org.apache.commons.httpclient.cookie.CookiePolicy;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -54,6 +67,8 @@ import org.springframework.util.CollectionUtils;
 import java.io.*;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -69,23 +84,11 @@ public class AdminCheckQuartz {
     private static final String GROUP_SHOP_END_LOCK = "GROUP_SHOP_END_LOCK";
     private static final String GROUP_SHOP_LOCK_LOCK = "GROUP_SHOP_LOCK_LOCK";
     @Autowired
-    private OrderMapper orderMapper;
-    @Autowired
     private ShopOrderMapper shopOrderMapper;
     @Autowired
     private ShopAccountMapper shopAccountMapper;
     @Autowired
     private ShopTranMapper shopTranMapper;
-    @Autowired
-    private OrderBizService orderBizService;
-    @Autowired
-    private GroupShopMapper groupShopMapper;
-    @Autowired
-    private SpuMapper spuMapper;
-    @Autowired
-    private LockComponent lockComponent;
-    @Autowired
-    private TransactionTemplate transactionTemplate;
 
 
     /**
@@ -95,15 +98,152 @@ public class AdminCheckQuartz {
     @Transactional(rollbackFor = Exception.class)
     public void dealOrder() throws Exception {
         Wrapper wrapper = new EntityWrapper();
-        wrapper.eq("order_status_name","卖家已发货");
+        wrapper.ne("order_status_name","卖家已发货");
         wrapper.eq("dang_order_status","未发货");
         List<ShopOrder> list = shopOrderMapper.selectList(wrapper);
         for (ShopOrder shopOrder: list
              ) {
             ShopAccount shopAccount = shopAccountMapper.selectById(shopOrder.getAccountId());
+            flushCookie(shopAccount);
+            CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+            HttpGet get = new HttpGet("https://shop.kongfz.com/buyer/order/getOrderInfo/?orderId="+shopOrder.getOrderId());
+            try{
+                //这里可以设置请求参数,token等
+                get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
+                get.addHeader("cookie",shopAccount.getFuziCookie());
+                HttpResponse response = httpClient.execute(get);//执行获取响应
+                if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){//根据状态码处理
+                    //返回字符串
+                    String res = unicodeToString(EntityUtils.toString(response.getEntity(),"UTF-8"));
+                    System.out.println(res);
+                    JSONObject datas = JSONObject.parseObject(res);//转换成JSON格式
+                    Boolean status = (Boolean) datas.get("status");//获取返回数据状态,get获取的字段需要根据提供的返回值去获取
+                    ShopOrder data = JSONObject.parseObject(datas.get("data").toString(),ShopOrder.class);//"data"是根据返回值设定
+                    ShopOrder tmp = new ShopOrder();
+                    tmp.setOrderId(data.getOrderId());
+                    tmp = shopOrderMapper.selectOne(tmp);
+                    data.setAccountId(shopAccount.getId());
+                    if(tmp == null){
+                        data.setDangOrder(shopOrder.getOrderId());
+                        data.setGmtCreate(new Date());
+                        data.setGmtUpdate(new Date());
+                        shopOrderMapper.insert(data);
+                    }
+                    else{
+                        data.setDangOrder(shopOrder.getOrderId());
+                        data.setGmtUpdate(new Date());
+                        shopOrderMapper.update(data,new EntityWrapper<ShopOrder>().eq("order_id",tmp.getOrderId()));
+                    }
+                    tmp = new ShopOrder();
+                    tmp.setOrderId(data.getOrderId());
+                    tmp = shopOrderMapper.selectOne(tmp);
+
+                    return ;
+                }
+                else{
+                    return ;
+                }
+
+            } catch (IOException e) {
+                e.printStackTrace();
+                return ;
+            }
+        }
+        Wrapper wrapper1 = new EntityWrapper();
+        wrapper1.eq("order_status_name","卖家已发货");
+        wrapper1.eq("dang_order_status","未发货");
+        List<ShopOrder> list1 = shopOrderMapper.selectList(wrapper);
+        for (ShopOrder shopOrder: list1
+        ) {
+            ShopAccount shopAccount = shopAccountMapper.selectById(shopOrder.getAccountId());
             dangOrderDeal(shopAccount,shopOrder);
         }
     }
+    public void flushCookie(ShopAccount shopAccount){
+        try{
+            HttpClient httpClient = new HttpClient();
+            GetMethod getMethod = new GetMethod("https://shop.kongfz.com/buyer/order/index/?pageCurr=1&pageShow=30");
+            // 每次访问需授权的网址时需带上前面的 cookie 作为通行证
+            getMethod.setRequestHeader("cookie", shopAccount.getFuziCookie());
+            // 你还可以通过 PostMethod/GetMethod 设置更多的请求后数据
+            // 例如,referer 从哪里来的,UA 像搜索引擎都会表名自己是谁,无良搜索引擎除外
+            getMethod.setRequestHeader("Referer", "https://shop.kongfz.com/");
+            getMethod.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36");
+            httpClient.executeMethod(getMethod);
+            // 打印出返回数据,检验一下是否成功
+            String text = getMethod.getResponseBodyAsString();
+            try{
+                JSONObject jsonObject = JSONObject.parseObject(text);
+                System.out.println(jsonObject);
+                if(jsonObject.getBoolean("status")){
+                    return;
+                }
+            }
+            catch (Exception exception){
+
+            }
+
+            System.out.println("原cookies = "+shopAccount.getFuziCookie());
+
+            // 登陆 Url
+            String loginUrl = "https://login.kongfz.com/Pc/Login/account";
+            httpClient = new HttpClient();
+            // 模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式
+            PostMethod postMethod = new PostMethod(loginUrl);
+
+            // 设置登陆时要求的信息,用户名和密码
+            NameValuePair[] data = { new NameValuePair("loginName", shopAccount.getFuziAccount()), new NameValuePair("loginPass", shopAccount.getFuziPassword()) };
+            postMethod.setRequestBody(data);
+            try {
+                // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略
+                httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
+                int statusCode=httpClient.executeMethod(postMethod);
+                text = unicodeToString(postMethod.getResponseBodyAsString());
+                System.out.println("登录返回值 = "+text);
+                if(statusCode == 302){
+                    // 获得登陆后的 Cookie
+                    Cookie[] cookies = httpClient.getState().getCookies();
+                    StringBuffer tmpcookies = new StringBuffer();
+                    for (Cookie c : cookies) {
+                        tmpcookies.append(c.toString() + ";");
+                    }
+                    System.out.println("新cookies = "+tmpcookies.toString());
+                    shopAccount.setFuziCookie(tmpcookies.toString());
+                    shopAccountMapper.updateById(shopAccount);
+                    // 进行登陆后的操作
+                }
+            }
+            catch (Exception e) {
+                e.printStackTrace();
+            }
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+    /**
+     * Unicode转 汉字字符串
+     *
+     * @param str
+     *            \u6728
+     * @return '木' 26408
+     */
+    public static String unicodeToString(String str) {
+
+        Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
+        Matcher matcher = pattern.matcher(str);
+        char ch;
+        while (matcher.find()) {
+            // group 6728
+            String group = matcher.group(2);
+            // ch:'木' 26408
+            ch = (char) Integer.parseInt(group, 16);
+            // group1 \u6728
+            String group1 = matcher.group(1);
+            str = str.replace(group1, ch + "");
+        }
+        return str;
+    }
     public void dangOrderDeal(ShopAccount shopAccount, ShopOrder shopOrder) throws Exception {
         /**
          * 获取一下店铺的所有静态参数