Browse Source

【海凌科】【新版物流发货二开】【更换数据库地址、定时下载物流信息、session失效自动失效session记录】

wuyx 1 year ago
parent
commit
23f892e063

+ 13 - 8
src/main/java/com/uas/eis/task/TaoBaoDownLoadTask.java

@@ -11,6 +11,7 @@ import com.taobao.api.response.TradesSoldGetResponse;
 import com.uas.eis.core.config.TaoBaoConfig;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.utils.DateUtil;
+import com.uas.eis.utils.StringUtil;
 import oracle.sql.DATE;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,7 +40,7 @@ public class TaoBaoDownLoadTask {
         /**
          * 有效店铺
          * */
-        List<Map<String,Object>> shopList = baseDao.queryForList("SELECT TB_CODE,TB_LASTSYNCDATE,TB_OPENUID from TBAUTHORIZATION where validflag = 1 ORDER BY TB_CODE ASC");
+        List<Map<String,Object>> shopList = baseDao.queryForList("SELECT TB_ID,TB_CODE,TB_LASTSYNCDATE,TB_OPENUID from TBAUTHORIZATION where validflag=1 ORDER BY TB_CODE ASC");
         logger.info("Start downLoad SaleOrder---");
         TaobaoClient client = new DefaultTaobaoClient(taoBaoConfig.getServerUrl(), taoBaoConfig.getAppKey(), taoBaoConfig.getAppSecret());
         TradesSoldGetRequest req = new TradesSoldGetRequest();
@@ -73,14 +74,18 @@ public class TaoBaoDownLoadTask {
             req.setEndCreated(endDate);
             try {
                 TradesSoldGetResponse rsp = client.execute(req, sessionKey);
-                List<Trade> trades = rsp.getTrades();
-                logger.info("店铺获取单数"+trades.size());
-                for(Trade trade: trades){
-                    formatTrade(trade, sessionKey,tbOpenuid, executeSQLS);
+                if(rsp.getMsg()!=null&&"Invalid session".equals(rsp.getMsg())){
+                    baseDao.execute("update TBAUTHORIZATION set validflag=0, UNVALIDREMARK='"+ "("+rsp.getErrorCode()+")"+StringUtil.nvl(rsp.getSubMsg(),rsp.getMsg()) +"' where tb_id = "+shop.get("TB_ID"));
+                }else {
+                    List<Trade> trades = rsp.getTrades();
+                    logger.info("店铺获取单数"+trades.size());
+                    for(Trade trade: trades){
+                        formatTrade(trade, sessionKey,tbOpenuid, executeSQLS);
+                    }
+                    baseDao.execute(executeSQLS);
+                    //更新当前店铺的最近更新时间
+                    baseDao.updateByCondition("TBAUTHORIZATION","TB_LASTSYNCDATE=to_date ( '" + DateUtil.format(endDate, DateUtil.FORMAT_YMD_HMS) + "','YYYY-MM-DD hh24:mi:ss') ","TB_CODE ='"+sessionKey+"'");
                 }
-                baseDao.execute(executeSQLS);
-                //更新当前店铺的最近更新时间
-                baseDao.updateByCondition("TBAUTHORIZATION","TB_LASTSYNCDATE=to_date ( '" + DateUtil.format(endDate, DateUtil.FORMAT_YMD_HMS) + "','YYYY-MM-DD hh24:mi:ss') ","TB_CODE ='"+sessionKey+"'");
             } catch (Exception e) {
                 e.printStackTrace();
                 logger.info("淘宝未响应并返回订单数据");

+ 64 - 0
src/main/java/com/uas/eis/task/TaoBaoLogisticsDownLoadTask.java

@@ -0,0 +1,64 @@
+package com.uas.eis.task;
+
+import com.taobao.api.ApiException;
+import com.taobao.api.DefaultTaobaoClient;
+import com.taobao.api.TaobaoClient;
+import com.taobao.api.domain.LogisticsCompany;
+import com.taobao.api.request.LogisticsCompaniesGetRequest;
+import com.taobao.api.response.LogisticsCompaniesGetResponse;
+import com.uas.eis.core.config.TaoBaoConfig;
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.utils.StringUtil;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.stream.Stream;
+
+
+@Component
+public class TaoBaoLogisticsDownLoadTask {
+    public static Logger logger = Logger.getLogger(TaoBaoLogisticsDownLoadTask.class);
+
+    @Autowired
+    private TaoBaoConfig taoBaoConfig;
+    @Autowired
+    private BaseDao baseDao;
+    private final int maxSeed = 30;
+    /**
+     * 下载物流公司 https://open.taobao.com/api.htm?docId=233&docType=2&scopeId=14878
+     * 每月15日上午2:00触发
+     * */
+    @Scheduled(cron = "0 0 2 15 * ?")
+    public void DownLoadLogistics(){
+        TaobaoClient client = new DefaultTaobaoClient(taoBaoConfig.getServerUrl(), taoBaoConfig.getAppKey(), taoBaoConfig.getAppSecret());
+        LogisticsCompaniesGetRequest req = new LogisticsCompaniesGetRequest();
+        req.setFields("id,code,name,reg_mail_no");
+//        req.setIsRecommended(true);
+//        req.setOrderMode("offline");
+        LogisticsCompaniesGetResponse rsp = null;
+        try {
+            rsp = client.execute(req);
+        } catch (ApiException e) {
+            throw new RuntimeException(e);
+        }
+//        System.out.println(rsp.getBody());
+        List<LogisticsCompany> logisticsCompanyList = rsp.getLogisticsCompanies();
+        Stream.iterate(0, n -> n + 1)
+                .limit((int) Math.ceil((double) logisticsCompanyList.size() / maxSeed)).forEach(page -> {
+                    StringBuffer sql = new StringBuffer();
+                    logisticsCompanyList.stream().skip(page * maxSeed).limit(maxSeed).forEach(log->{
+                        sql.append(" select "+log.getId()+" ID_,'"+log.getCode()+"' CODE_,'"+log.getName()+"' NAME_,'"+(StringUtil.hasText(log.getRegMailNo())?log.getRegMailNo().replaceAll("'","''"):"")+"' RegMailNo " +
+                                " from dual union all ");
+                     });
+                    if(sql.length()>0){
+                        sql.append(" SELECT -1 ID_,'CODE_' CODE_,'NAME_' NAME_,'RegMailNo' RegMailNo FROM dual ) WHERE NAME_<>'NAME_' )ON (NAME_=COP_NAME)")
+                            .append(" when matched then update set COP_CODE = CODE_ ,COP_ID=ID_,REG_MAIL_NO=RegMailNo ")
+                             .append(" when NOT MATCHED THEN INSERT (COP_ID,COP_CODE,COP_NAME,REG_MAIL_NO) values (ID_,CODE_,NAME_,RegMailNo) ");
+                        baseDao.execute("MERGE INTO TB_LOGISTICS USING (SELECT * FROM ("+sql.toString());
+                    }
+                });
+    }
+}

+ 1 - 1
src/main/resources/application-prod.yml

@@ -6,7 +6,7 @@ spring:
         username: HILINK
         password: select!#%*(
     #    url: jdbc:oracle:thin:@erp.hlktech.com:1521:orcl  
-        url: jdbc:oracle:thin:@10.1.81.208:11597:orcl
+        url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
         initialSize: 10
         maxActive: 80
         minIdle: 10