|
|
@@ -10,6 +10,7 @@ import com.taobao.api.response.TopOaidDecryptResponse;
|
|
|
import com.taobao.api.response.TradesSoldGetResponse;
|
|
|
import com.uas.eis.core.config.TaoBaoConfig;
|
|
|
import com.uas.eis.dao.BaseDao;
|
|
|
+import com.uas.eis.utils.CollectionUtil;
|
|
|
import com.uas.eis.utils.DateUtil;
|
|
|
import com.uas.eis.utils.StringUtil;
|
|
|
import oracle.sql.DATE;
|
|
|
@@ -40,8 +41,9 @@ public class TaoBaoDownLoadTask {
|
|
|
/**
|
|
|
* 有效店铺
|
|
|
* */
|
|
|
- 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");
|
|
|
+ List<Map<String,Object>> shopList = baseDao.queryForList("SELECT TB_ID,TB_CODE,TB_LASTSYNCDATE,TB_OPENUID,TB_NICK from TBAUTHORIZATION where validflag=1 ORDER BY TB_CODE ASC");
|
|
|
logger.info("Start downLoad SaleOrder---");
|
|
|
+ final boolean[] downLoadFlag = {false};
|
|
|
TaobaoClient client = new DefaultTaobaoClient(taoBaoConfig.getServerUrl(), taoBaoConfig.getAppKey(), taoBaoConfig.getAppSecret());
|
|
|
TradesSoldGetRequest req = new TradesSoldGetRequest();
|
|
|
req.setFields("total_results,has_next,trades,seller_nick,pic_path,payment,seller_rate,post_fee,receiver_name,receiver_state,receiver_address,receiver_zip,receiver_mobile"+
|
|
|
@@ -57,6 +59,7 @@ public class TaoBaoDownLoadTask {
|
|
|
",extend_info,service_type,threepl_timing,is_o2o_passport,delivery_time,sign_time");
|
|
|
shopList.stream().forEach(shop -> {
|
|
|
String tbOpenuid = String.valueOf(shop.get("TB_OPENUID"));
|
|
|
+ String TB_NICK = String.valueOf(shop.get("TB_NICK"));
|
|
|
List<String> executeSQLS = new ArrayList<>();
|
|
|
String sessionKey = String.valueOf(shop.get("TB_CODE"));
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
@@ -72,28 +75,65 @@ public class TaoBaoDownLoadTask {
|
|
|
}
|
|
|
req.setStartCreated(calendar.getTime());
|
|
|
req.setEndCreated(endDate);
|
|
|
+ //本地调试用
|
|
|
+ /*
|
|
|
+ Calendar calendartest1 = Calendar.getInstance();
|
|
|
+ calendartest1.setTime(DateUtil.parse("2025-05-05 00:00:00","yyyy-MM-dd HH:mm:ss"));
|
|
|
+ Calendar calendartest2 = Calendar.getInstance();
|
|
|
+ calendartest2.setTime(DateUtil.parse("2025-05-06 00:00:00","yyyy-MM-dd HH:mm:ss"));
|
|
|
+ req.setStartCreated(calendartest1.getTime());
|
|
|
+ req.setEndCreated(calendartest2.getTime());
|
|
|
+ */
|
|
|
+ req.setUseHasNext(true);
|
|
|
+ List<Trade> trades = new ArrayList<>();
|
|
|
try {
|
|
|
TradesSoldGetResponse rsp = client.execute(req, sessionKey);
|
|
|
if(rsp.getMsg()!=null&&"Invalid session".equals(rsp.getMsg())){
|
|
|
baseDao.execute("update TBAUTHORIZATION set validflag=0,unvalidtime=sysdate, UNVALIDREMARK='"+ "("+StringUtil.nvl(rsp.getSubCode(),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){
|
|
|
- logger.info("订单信息:单号{"+trade.getTid()+"},状态{"+trade.getStatus()+"},店铺{"+trade.getSellerNick()+"}");
|
|
|
- formatTrade(trade, sessionKey,tbOpenuid, executeSQLS);
|
|
|
- }
|
|
|
- baseDao.execute(executeSQLS);
|
|
|
- //更新当前店铺的最近更新时间
|
|
|
+ if(!CollectionUtil.isEmpty(rsp.getTrades())){
|
|
|
+ Long pageCount = 1L;
|
|
|
+ getNextTBOrder(pageCount,trades,rsp,req,client,sessionKey);
|
|
|
+ logger.info(TB_NICK+"("+tbOpenuid+")店铺获取单数"+trades.size());
|
|
|
+ for(Trade trade: trades){
|
|
|
+ formatTrade(trade, sessionKey,tbOpenuid, executeSQLS);
|
|
|
+ }
|
|
|
+ if(executeSQLS.size()>0){
|
|
|
+ downLoadFlag[0] = true;
|
|
|
+ System.out.println("执行SQL条数:"+executeSQLS.size());
|
|
|
+// System.out.println("SQL:"+executeSQLS.toString());
|
|
|
+ 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("淘宝未响应并返回订单数据");
|
|
|
}
|
|
|
});
|
|
|
//部分信息处理
|
|
|
- baseDao.callProcedure("SP_UPDATE_SALEINFO");
|
|
|
+ if(downLoadFlag[0]){
|
|
|
+ baseDao.callProcedure("SP_UPDATE_SALEINFO");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void getNextTBOrder(Long pageNo,List<Trade> trades,TradesSoldGetResponse rsp,TradesSoldGetRequest req,TaobaoClient client,String sessionKey ){
|
|
|
+ if(!CollectionUtil.isEmpty(rsp.getTrades())){
|
|
|
+ trades.addAll(rsp.getTrades());
|
|
|
+ if(rsp.getHasNext()!=null&&rsp.getHasNext()){
|
|
|
+ Long pageSize = 40L;
|
|
|
+ pageNo = pageNo + 1;
|
|
|
+ req.setPageNo(pageNo);
|
|
|
+ req.setPageSize(pageSize);
|
|
|
+ try {
|
|
|
+ TradesSoldGetResponse rsp1 = client.execute(req, sessionKey);
|
|
|
+ getNextTBOrder(pageNo,trades,rsp1,req,client,sessionKey);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
private void formatTrade(Trade trade ,String sessionKey,String tbOpenuid, List<String> executeSqls){
|
|
|
String oaid=trade.getOaid();
|
|
|
@@ -102,6 +142,7 @@ public class TaoBaoDownLoadTask {
|
|
|
if(isEXISTS) {
|
|
|
return;
|
|
|
}
|
|
|
+ logger.info("订单信息:单号{"+trade.getTid()+"},状态{"+trade.getStatus()+"},店铺{"+trade.getSellerNick()+"}");
|
|
|
TopOaidDecryptRequest req= new TopOaidDecryptRequest();
|
|
|
List<TopOaidDecryptRequest.ReceiverQuery> queryList = new ArrayList<TopOaidDecryptRequest.ReceiverQuery>();
|
|
|
TopOaidDecryptRequest.ReceiverQuery receiverQuery = new TopOaidDecryptRequest.ReceiverQuery();
|
|
|
@@ -129,7 +170,6 @@ public class TaoBaoDownLoadTask {
|
|
|
String modified = DateUtil.format((trade.getModified() == null ? trade.getCreated() : trade.getModified()), DateUtil.FORMAT_YMD_HMS);
|
|
|
String end_time = DateUtil.format((trade.getEndTime() == null ? trade.getCreated() : trade.getEndTime()), DateUtil.FORMAT_YMD_HMS);
|
|
|
String consigntime = DateUtil.format((trade.getConsignTime() == null ? trade.getCreated() : trade.getConsignTime()), DateUtil.FORMAT_YMD_HMS);
|
|
|
- Long said = baseDao.queryForObject("select sale_seq.nextval from dual", Long.class);
|
|
|
if(!"TRADE_NO_CREATE_PAY".equals(trade.getStatus())
|
|
|
&&!"WAIT_BUYER_PAY".equals(trade.getStatus())
|
|
|
&&!"PAY_PENDING".equals(trade.getStatus())
|
|
|
@@ -137,34 +177,35 @@ public class TaoBaoDownLoadTask {
|
|
|
&&!"TRADE_CLOSED_BY_TAOBAO".equals(trade.getStatus())
|
|
|
&&!"TRADE_CLOSED".equals(trade.getStatus())
|
|
|
&&!"TRADE_FINISHED".equals(trade.getStatus())) {
|
|
|
- executeSqls.add("INSERT INTO SALESECRETINFO(SAID, NAME,MOBILE, PLACE,SACODE) SELECT "+said+",pkg_security.encrypt_data('"+taoBaoConfig.getPublicKey()+"','"+name_oaid+"')," +
|
|
|
- "pkg_security.encrypt_data('"+taoBaoConfig.getPublicKey()+"','"+receiver_mobile+"'), pkg_security.encrypt_data('"+taoBaoConfig.getPublicKey()+"','"+address+"'),'" + tid + "' FROM DUAL");
|
|
|
- String INSERTSALESql = "insert into sale( SA_NEEDUPDATE,SA_DISCOUNTFEE,SA_TRADESTATUS, sa_sellernick,sa_custcode,sa_paymentscode" +
|
|
|
- ",SA_TAOBAOID,sa_payments,sa_custname,sa_kind,sa_wwh_user,sa_need15" +
|
|
|
- " ,sa_id,sa_tradeid,sa_code,sa_date,sa_recorder,sa_currency,sa_rate" +
|
|
|
- ",sa_apcustname,sa_need9,sa_toplace" +
|
|
|
- ",sa_transport,sa_seller,sa_updatedate" +
|
|
|
- ",sa_enddate,sa_statuscode,sa_status,sa_fare,sa_total" +
|
|
|
- ",sa_recamount,sa_recorddate,sa_printstatuscode,sa_remark,sa_tbopenuid)" +
|
|
|
- " SELECT 1,'" + trade.getDiscountFee() + "','" + trimNull(trade.getStatus()) + "',trim(nvl('" + trimNull(trade.getSellerNick()) + "','静夜思solong')),'GN0008358','P001'" +
|
|
|
+ Long said = baseDao.queryForObject("select sale_seq.nextval from dual", Long.class);
|
|
|
+ executeSqls.add("INSERT INTO SALESECRETINFO(SAID, NAME,MOBILE, PLACE,SACODE) SELECT "+said+",pkg_security.encrypt_data('"+taoBaoConfig.getPublicKey()+"','"+name_oaid+"')," +
|
|
|
+ "pkg_security.encrypt_data('"+taoBaoConfig.getPublicKey()+"','"+receiver_mobile+"'), pkg_security.encrypt_data('"+taoBaoConfig.getPublicKey()+"','"+address+"'),'" + tid + "' FROM DUAL");
|
|
|
+ String INSERTSALESql = "insert into sale( SA_NEEDUPDATE,SA_DISCOUNTFEE,SA_TRADESTATUS, sa_sellernick,sa_custcode,sa_paymentscode" +
|
|
|
+ ",SA_TAOBAOID,sa_payments,sa_custname,sa_kind,sa_wwh_user,sa_need15" +
|
|
|
+ " ,sa_id,sa_tradeid,sa_code,sa_date,sa_recorder,sa_currency,sa_rate" +
|
|
|
+ ",sa_apcustname,sa_need9,sa_toplace" +
|
|
|
+ ",sa_transport,sa_seller,sa_updatedate" +
|
|
|
+ ",sa_enddate,sa_statuscode,sa_status,sa_fare,sa_total" +
|
|
|
+ ",sa_recamount,sa_recorddate,sa_printstatuscode,sa_remark,sa_tbopenuid)" +
|
|
|
+ " SELECT 1,'" + trade.getDiscountFee() + "','" + trimNull(trade.getStatus()) + "',trim(nvl('" + trimNull(trade.getSellerNick()) + "','静夜思solong')),'GN0008358','P001'" +
|
|
|
", " + tid + " ,'现结','HLK淘宝','国内标准销售订单','" + trimNull(name_oaid) + "','" + trimNull(receiver_mobile) + "'" +
|
|
|
- " , " + said + "," + tid + ",'" + tid + "', to_date ('" + end_time + "','YYYY-MM-DD hh24:mi:ss') ,'管理员','RMB','1'" +
|
|
|
- ",'"+ trimNull(name_oaid) + "','" + trimNull(trade.getBuyerNick()) + "','" + address.replaceAll("'", "") + "'" +
|
|
|
- ",'"+ trimNull(trade.getShippingType()) + "','" + trimNull(trade.getO2oGuideName()) + "', to_date ('" + modified + "','YYYY-MM-DD hh24:mi:ss') " +
|
|
|
- ", to_date ('" + end_time + "','YYYY-MM-DD hh24:mi:ss') ,'ENTERING','在录入','" + trimNull(trade.getPostFee()) + "','" + trimNull(trade.getPayment()) + "'" +
|
|
|
- ",'"+ trimNull(trade.getPayment()) + "', to_date ('" + consigntime + "','YYYY-MM-DD hh24:mi:ss') ,'unprint','淘宝自动抓取','"+tbOpenuid+"' FROM DUAL " +
|
|
|
- " WHERE NOT EXISTS ( select 1 from sale WHERE SA_TAOBAOID=" + tid + " ) ";
|
|
|
+ " , " + said + "," + tid + ",'" + tid + "', to_date ('" + end_time + "','YYYY-MM-DD hh24:mi:ss') ,'管理员','RMB','1'" +
|
|
|
+ ",'"+ trimNull(name_oaid) + "','" + trimNull(trade.getBuyerNick()) + "','" + address.replaceAll("'", "") + "'" +
|
|
|
+ ",'"+ trimNull(trade.getShippingType()) + "','" + trimNull(trade.getO2oGuideName()) + "', to_date ('" + modified + "','YYYY-MM-DD hh24:mi:ss') " +
|
|
|
+ ", to_date ('" + end_time + "','YYYY-MM-DD hh24:mi:ss') ,'ENTERING','在录入','" + trimNull(trade.getPostFee()) + "','" + trimNull(trade.getPayment()) + "'" +
|
|
|
+ ",'"+ trimNull(trade.getPayment()) + "', to_date ('" + consigntime + "','YYYY-MM-DD hh24:mi:ss') ,'unprint','淘宝自动抓取','"+tbOpenuid+"' FROM DUAL " +
|
|
|
+ " WHERE NOT EXISTS ( select 1 from sale WHERE SA_TAOBAOID=" + tid + " ) ";
|
|
|
|
|
|
- executeSqls.add(INSERTSALESql);
|
|
|
- List<Order> orders = trade.getOrders();
|
|
|
- for (int j = 0; j < orders.size(); j++) {
|
|
|
- String INSERTSALEDETAILSql = "insert into saledetail(SD_PROPERTIES,sd_remark,sd_id,sd_said,sd_code,sd_detno,sd_prodcode,sd_qty,sd_price,sd_total" +
|
|
|
- ",sd_statuscode,sd_status,sd_discount,SD_DIVIDE_ORDER_FEE,SD_PART_MJZ_DISCOUNT,SD_OID)" +
|
|
|
- " SELECT '" + trimNull(orders.get(j).getSkuPropertiesName()) + "','" + orders.get(j).getTitle() + "', saledetail_seq.nextval ," + said + " ,'" + tid + "'," + (j+1) + ",'" + trimNull(orders.get(j).getOuterIid()) + "'," + orders.get(j).getNum() + "," + orders.get(j).getPrice() + " ," + orders.get(j).getPayment() +
|
|
|
- ",'ENTERING','在录入', " + orders.get(j).getDiscountFee() + "," + orders.get(j).getDivideOrderFee() + "," + orders.get(j).getPartMjzDiscount() +","+orders.get(j).getOid()
|
|
|
- + " FROM DUAL WHERE NOT EXISTS ( select sd_id from saledetail WHERE SD_CODE = '" + tid + "' and sd_detno = " + (j+1) + " ) ";
|
|
|
- executeSqls.add(INSERTSALEDETAILSql);
|
|
|
- }
|
|
|
+ executeSqls.add(INSERTSALESql);
|
|
|
+ List<Order> orders = trade.getOrders();
|
|
|
+ for (int j = 0; j < orders.size(); j++) {
|
|
|
+ String INSERTSALEDETAILSql = "insert into saledetail(SD_PROPERTIES,sd_remark,sd_id,sd_said,sd_code,sd_detno,sd_prodcode,sd_qty,sd_price,sd_total" +
|
|
|
+ ",sd_statuscode,sd_status,sd_discount,SD_DIVIDE_ORDER_FEE,SD_PART_MJZ_DISCOUNT,SD_OID)" +
|
|
|
+ " SELECT '" + trimNull(orders.get(j).getSkuPropertiesName()) + "','" + orders.get(j).getTitle() + "', saledetail_seq.nextval ," + said + " ,'" + tid + "'," + (j+1) + ",'" + trimNull(orders.get(j).getOuterIid()) + "'," + orders.get(j).getNum() + "," + orders.get(j).getPrice() + " ," + orders.get(j).getPayment() +
|
|
|
+ ",'ENTERING','在录入', " + orders.get(j).getDiscountFee() + "," + orders.get(j).getDivideOrderFee() + "," + orders.get(j).getPartMjzDiscount() +","+orders.get(j).getOid()
|
|
|
+ + " FROM DUAL WHERE NOT EXISTS ( select sd_id from saledetail WHERE SD_CODE = '" + tid + "' and sd_detno = " + (j+1) + " ) ";
|
|
|
+ executeSqls.add(INSERTSALEDETAILSql);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|