Browse Source

/* 淘宝订单抓取 优化
1.新建 订单插入 mvc类
2.日志记录
1.服务挂掉
2.确实没有录入订单
3.新增单号字段, 录入日期记录当天 ,淘宝订单ID,修改了订单表 alter table sale add sa_tradeid number;
4.增加定时任务 每隔10分钟自动执行一次
author by shenl 2020-11-16 */ 实时sessionKEY待获取

sl 5 years ago
parent
commit
d2895410db

+ 11 - 11
src/main/java/com/uas/eis/UasEisApplication.java

@@ -9,15 +9,15 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 import com.uas.eis.core.config.DynamicDataSourceRegister;
 import com.uas.eis.core.support.TokenPropertiesListener;
 
-@SpringBootApplication
+@SpringBootApplication
 @EnableCaching
-//@EnableScheduling		开启定时任务
-@Import({DynamicDataSourceRegister.class})
-public class UasEisApplication {
-	public static void main(String[] args) {
-		SpringApplication application = new SpringApplication(UasEisApplication.class);
-		application.addListeners(new TokenPropertiesListener("token.properties"));
-		application.run(args);
-	}
-	
-}
+//@EnableScheduling		开启定时任务
+@Import({DynamicDataSourceRegister.class})
+public class UasEisApplication {
+	public static void main(String[] args) {
+		SpringApplication application = new SpringApplication(UasEisApplication.class);
+		application.addListeners(new TokenPropertiesListener("token.properties"));
+		application.run(args);
+	}
+	
+}

+ 1 - 0
src/main/java/com/uas/eis/service/InsertService.java

@@ -2,4 +2,5 @@ package com.uas.eis.service;
 
 public interface InsertService {
     public String Insert(String code, String param);
+    void getAllDate();
 }

+ 82 - 77
src/main/java/com/uas/eis/serviceImpl/InsertServiceImpl.java

@@ -3,8 +3,10 @@ package com.uas.eis.serviceImpl;
 
 import com.taobao.api.DefaultTaobaoClient;
 import com.taobao.api.TaobaoClient;
+import com.taobao.api.domain.Trade;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.service.InsertService;
+import net.sf.json.JSON;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.apache.log4j.Logger;
@@ -24,12 +26,12 @@ import com.taobao.api.response.TradesSoldGetResponse;
 @Service
 public class InsertServiceImpl implements InsertService {
     // TOP服务地址,正式环境需要设置为http://gw.api.taobao.com/router/rest
-    private static final String serverUrl = "gw.api.taobao.com/router/rest";
+    public static final String serverUrl = "gw.api.taobao.com/router/rest";
     // private static final String serverUrl = "http://gw.api.tbsandbox.com/router/rest";
-    private static final String appKey = "31921866"; // 可替换为您的沙箱环境应用的appKey         /* 待修改 */
-    private static final String appSecret = "7121c52d4c9970ba08bf09e2f525acd0"; // 可替换为您的沙箱环境应用的appSecret   /* 待修改 */
-    private static final String sessionKey = "test"; // 必须替换为沙箱账号授权得到的真实有效sessionKey    /* 待修改 */
-    private static Logger logger = Logger.getLogger(InsertServiceImpl.class);
+    public static final String appKey = "31921866"; // 可替换为您的沙箱环境应用的appKey         /* 待修改 */
+    public static final String appSecret = "7121c52d4c9970ba08bf09e2f525acd0"; // 可替换为您的沙箱环境应用的appSecret   /* 待修改 */
+    public static final String sessionKey = "31921866"; // 必须替换为沙箱账号授权得到的真实有效sessionKey    /* 待修改 */
+    public static Logger logger = Logger.getLogger(InsertServiceImpl.class);
 
     @Autowired
     private BaseDao baseDao;
@@ -37,99 +39,102 @@ public class InsertServiceImpl implements InsertService {
     @Override
     public String Insert(String code, String param) {
 
-        try {
 
-            Timer timer = new Timer();//实例化Timer类
-            timer.schedule(new TimerTask() {
-                public void run() {
+            try {
 
+                Timer timer = new Timer();//实例化Timer类
+                timer.schedule(new TimerTask() {
+                    public void run() {
+                        getAllDate();
+                    }
+                }, 600000);//10分钟
+            } catch (Exception e) {
+                logger.info(this.getClass() + "服务挂掉");
+                return e.getMessage();
+            }
+        return null;
+    }
 
-                    TaobaoClient client = new DefaultTaobaoClient(serverUrl, appKey, appSecret);
+    @Override
+    public void getAllDate(){
+        TaobaoClient client = new DefaultTaobaoClient(serverUrl, appKey, appSecret);
 
-                    //  查询卖家已卖出的交易数据
-                    TradesSoldGetRequest req = new TradesSoldGetRequest();
+        //  查询卖家已卖出的交易数据
+        TradesSoldGetRequest req = new TradesSoldGetRequest();
 //                    OpenTradesSoldGetRequest req = new OpenTradesSoldGetRequest();
-                    req.setFields("tid,type,status,payment,orders,rx_audit_status");
-
-                    //String sysdate = DateUtil.getCurrentDate();
-                    //req.setStartCreated(StringUtils.parseDateTime(sysdate));
-                    //req.setStartCreated(StringUtils.parseDateTime("2000-01-01 00:00:00"));
-                    //req.setEndCreated(StringUtils.parseDateTime("2000-01-01 23:59:59"));
-                    //交易成功
-                    req.setStatus("TRADE_FINISHED");
+        req.setFields("tid,type,status,payment,orders,rx_audit_status");
+
+        //String sysdate = DateUtil.getCurrentDate();
+        //req.setStartCreated(StringUtils.parseDateTime(sysdate));
+        //req.setStartCreated(StringUtils.parseDateTime("2000-01-01 00:00:00"));
+        //req.setEndCreated(StringUtils.parseDateTime("2000-01-01 23:59:59"));
+        //交易成功
+        req.setStatus("TRADE_FINISHED");
 //            req.setBuyerNick("zhangsan");
 //            req.setType("game_equipment");
-                    req.setExtType("service");
+        req.setExtType("service");
 //            req.setRateStatus("RATE_UNBUYER");
 //            req.setTag("time_card");
 //            req.setPageNo(1L);
 //            req.setPageSize(40L);
-                    req.setUseHasNext(true);
-                    req.setBuyerOpenId("AAHm5d-EAAeGwJedwSHpg8bT");
+        req.setUseHasNext(true);
+        req.setBuyerOpenId("AAHm5d-EAAeGwJedwSHpg8bT");
 //                    OpenTradesSoldGetResponse rsp = client.execute(req, sessionKey);
 
-                    try {
-                        TradesSoldGetResponse rsp = client.execute(req, sessionKey);
+        try {
+            TradesSoldGetResponse rsp = client.execute(req, sessionKey);
 
-                    System.out.println(rsp.getBody());
-                    List<String> insertSqlsList = new ArrayList<String>();
-                    //这里解析返回的数据
+            System.out.println(rsp.getBody());
+            List<String> insertSqlsList = new ArrayList<String>();
+            //这里解析返回的数据
 
-                        rsp.getTrades();
+            List<Trade> trades = rsp.getTrades();
 
 
 //                    //解析第一层---对象
-//                    JSONObject jObject1 = new JSONObject(rsp.getBody());
-                    //解析第二层----数组
-                    JSONArray jsonArray2 = jObject1.getJSONArray("trades");
-                    //遍历数组获取元素----对象
-                    if (jsonArray2.size() == 0) {
-                        logger.info(this.getClass() + " 未录入淘宝订单");
-                    } else {
-                        for (int i = 0; i < jsonArray2.size(); i++) {
-                            //解析第三层----对象
-                            JSONObject jObject3 = jsonArray2.getJSONObject(i);
-                            /*  插入淘宝订单ID  sa_tradeid 字段 alter table sale  add sa_tradeid number; */
-                            Long sa_tradeid = baseDao.queryForObject("select sa_tradeid from sale where sa_tradeid =" + jObject3.getInt("tid"), Long.class);
-                            /*  存在未 插入的淘宝订单 时 执行 插入操作  */
-                            while (sa_tradeid == null) {
-                                Long said = baseDao.queryForObject("select sale_seq.nextval from dual", Long.class);
-
-
-                                String sa_code = baseDao.sGetMaxNumber("Sale", 2);
-
-                                String INSERTSALESql = "insert into sale(sa_id,sa_tradeid,sa_code,sa_date,sa_recorddate,sa_custname,sa_currency,sa_rate" +
-                                        ",sa_apcustname,sa_shcustname,sa_toplace" +
-                                        ",sa_transport,sa_seller,sa_updatedate" +
-                                        ",sa_enddate,sa_statuscode,sa_status,sa_fare,sa_total" +
-                                        ",sa_recamount,sa_plandelivery,sa_printstatuscode)" +
-                                        "values(" + said + "," + jObject3.getInt("tid") + "," + sa_code + "+to_date(" + jObject3.getString("start_created") + ",'yyyy-MM-dd hh:mm:ss'),sysdate" + jObject3.getString("receiver_name") + ",'rmb','1',"
-                                        + jObject3.getString("receiver_name") + "," + jObject3.getString("receiver_name") + "," + jObject3.getString("receiver_address") + ","
-                                        + jObject3.getString("shipping_type") + "," + jObject3.getString("o2o_guide_name") + "," + jObject3.getString("modified")
-                                        + "," + jObject3.getString("end_time") + ",'entering','在录入'," + jObject3.getInt("post_fee") + "," + jObject3.getInt("payment") + ","
-                                        + jObject3.getInt("total_fee") + "," + jObject3.getString("consign_time") + ",'unprint')";
-                                insertSqlsList.add(INSERTSALESql);
-                                String INSERTSALEDETAILSql = "insert into saledetail(sd_said,sd_detno,sd_qty,sd_delivery,sd_price,sd_total,sd_taxrate,sd_costprice" +
-                                        ",sd_taxtotal,sd_description,sd_statuscode,sd_status,sd_enddate,sd_senddate,sd_discount)" +
-                                        "values (" + said + ",?," + jObject3.getInt("num") + "," + jObject3.getInt("price") + " ," + jObject3.getInt("total_fee") + " ,?," + jObject3.getInt("price") + " /(1+" + jObject3.getInt("sd_taxrate") + " /100)" +
-                                        ",price/(1+" + jObject3.getInt("total_fee") + "/100),customization,'entering','在录入',end_time,consign_time," + jObject3.getInt("discount_fee") + "  )";
-                                insertSqlsList.add(INSERTSALEDETAILSql);
-                            }
-                        }
-                        baseDao.execute(insertSqlsList);
-                        logger.info(this.getClass() + "插入销售明细成功");
-                    }
-
-                    }catch (Exception e) {
-                        logger.info(this.getClass() + "淘宝未响应并返回订单数据");
-                        return ;
+            //JSONObject jObject1 = new JSONObject(rsp.getBody());
+            //解析第二层----数组
+            JSONArray jsonArray2 = JSONArray.fromObject(trades);
+            //JSONArray jsonArray2 = jObject1.getJSONArray();
+            //遍历数组获取元素----对象
+            if (jsonArray2.size() == 0) {
+                logger.info(this.getClass() + " 未录入淘宝订单");
+            } else {
+                for (int i = 0; i < jsonArray2.size(); i++) {
+                    //解析第三层----对象
+                    JSONObject jObject3 = jsonArray2.getJSONObject(i);
+                    /*  插入淘宝订单ID  sa_tradeid 字段 alter table sale  add sa_tradeid number; */
+                    Long sa_tradeid = baseDao.queryForObject("select sa_tradeid from sale where sa_tradeid =" + jObject3.getInt("tid"), Long.class);
+                    /*  存在未 插入的淘宝订单 时 执行 插入操作  */
+                    while (sa_tradeid == null) {
+                        Long said = baseDao.queryForObject("select sale_seq.nextval from dual", Long.class);
+
+
+                        String sa_code = baseDao.sGetMaxNumber("Sale", 2);
+
+                        String INSERTSALESql = "insert into sale(sa_id,sa_tradeid,sa_code,sa_date,sa_recorddate,sa_custname,sa_currency,sa_rate" +
+                                ",sa_apcustname,sa_shcustname,sa_toplace" +
+                                ",sa_transport,sa_seller,sa_updatedate" +
+                                ",sa_enddate,sa_statuscode,sa_status,sa_fare,sa_total" +
+                                ",sa_recamount,sa_plandelivery,sa_printstatuscode)" +
+                                "values(" + said + "," + jObject3.getInt("tid") + "," + sa_code + "+to_date(" + jObject3.getString("start_created") + ",'yyyy-MM-dd hh:mm:ss'),sysdate" + jObject3.getString("receiver_name") + ",'rmb','1',"
+                                + jObject3.getString("receiver_name") + "," + jObject3.getString("receiver_name") + "," + jObject3.getString("receiver_address") + ","
+                                + jObject3.getString("shipping_type") + "," + jObject3.getString("o2o_guide_name") + "," + jObject3.getString("modified")
+                                + "," + jObject3.getString("end_time") + ",'entering','在录入'," + jObject3.getInt("post_fee") + "," + jObject3.getInt("payment") + ","
+                                + jObject3.getInt("total_fee") + "," + jObject3.getString("consign_time") + ",'unprint')";
+                        insertSqlsList.add(INSERTSALESql);
+                        String INSERTSALEDETAILSql = "insert into saledetail(sd_said,sd_detno,sd_qty,sd_delivery,sd_price,sd_total,sd_taxrate,sd_costprice" +
+                                ",sd_taxtotal,sd_description,sd_statuscode,sd_status,sd_enddate,sd_senddate,sd_discount)" +
+                                "values (" + said + ",?," + jObject3.getInt("num") + "," + jObject3.getInt("price") + " ," + jObject3.getInt("total_fee") + " ,?," + jObject3.getInt("price") + " /(1+" + jObject3.getInt("sd_taxrate") + " /100)" +
+                                ",price/(1+" + jObject3.getInt("total_fee") + "/100),customization,'entering','在录入',end_time,consign_time," + jObject3.getInt("discount_fee") + "  )";
+                        insertSqlsList.add(INSERTSALEDETAILSql);
                     }
                 }
-            }, 600000);//10分钟
+                baseDao.execute(insertSqlsList);
+                logger.info(this.getClass() + "插入销售明细成功");
+            }
         } catch (Exception e) {
-            logger.info(this.getClass() + "服务挂掉");
-            return e.getMessage();
+            logger.info(this.getClass() + "淘宝未响应并返回订单数据");
         }
-
     }
 }

+ 2 - 2
src/main/resources/application.yml

@@ -2,9 +2,9 @@ spring:
     datasource:
         type: org.apache.tomcat.jdbc.pool.DataSource
         driverClassName: oracle.jdbc.OracleDriver
-        username: UAS_DEV
+        username: HILINK_TEST
         password: select!#%*(
-        url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
+        url: jdbc:oracle:thin:@erp.hlktech.com:1521:orcl
     http:
         encoding:
             force: true

+ 5 - 0
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -1,7 +1,9 @@
 package com.uas.eis;
 
+import com.uas.eis.service.InsertService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -9,8 +11,11 @@ import org.springframework.test.context.junit4.SpringRunner;
 @SpringBootTest
 public class UasEisApplicationTests {
 
+	@Autowired
+	private InsertService insertService;
 	@Test
 	public void contextLoads() {
+		insertService.getAllDate();
 	}
 
 }