|
|
@@ -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());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|