Browse Source

海凌科淘宝对接代码调整

zhouy 2 years ago
parent
commit
65d28fa109

+ 57 - 0
src/main/java/com/uas/eis/core/config/TaoBaoConfig.java

@@ -0,0 +1,57 @@
+package com.uas.eis.core.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConfigurationProperties(prefix = "extral.taobao")
+public class TaoBaoConfig {
+    /**
+     * 服务地址
+     * */
+    private String serverUrl;
+    /**
+     * appKey
+     * */
+    private String appKey;
+    /**
+     * app 密钥
+     * */
+    private String appSecret;
+    /**
+     * ASE256加密公钥
+     * */
+    private String publicKey;
+
+    public String getServerUrl() {
+        return serverUrl;
+    }
+
+    public void setServerUrl(String serverUrl) {
+        this.serverUrl = serverUrl;
+    }
+
+    public String getAppKey() {
+        return appKey;
+    }
+
+    public void setAppKey(String appKey) {
+        this.appKey = appKey;
+    }
+
+    public String getAppSecret() {
+        return appSecret;
+    }
+
+    public void setAppSecret(String appSecret) {
+        this.appSecret = appSecret;
+    }
+
+    public String getPublicKey() {
+        return publicKey;
+    }
+
+    public void setPublicKey(String publicKey) {
+        this.publicKey = publicKey;
+    }
+}

+ 4 - 6
src/main/java/com/uas/eis/serviceImpl/InsertServiceImpl.java

@@ -75,9 +75,7 @@ public class InsertServiceImpl implements InsertService {
             return str.trim();
         }
     }
-
-    @Autowired
-    @Scheduled(cron = "0 0/30 * * * ?")
+    //@Scheduled(cron = "0 0/30 * * * ?")
     public void getAllDate() {
 
 //        1.无淘宝自动抓取的 订单 ,则正常备份历史订单
@@ -295,7 +293,7 @@ public class InsertServiceImpl implements InsertService {
                             + trimNull(trades.get(i).getShippingType()) + "  ', ' " + trimNull(trades.get(i).getO2oGuideName()) + "  ', to_date ( '" + modified
                             + "','YYYY-MM-DD hh24:mi:ss') , to_date ( '" + end_time + "','YYYY-MM-DD hh24:mi:ss') ,'ENTERING','在录入'," + trimNull(trades.get(i).getPostFee()) + "," + trimNull(trades.get(i).getPayment()) + ","
                             + trimNull(trades.get(i).getPayment()) + " , to_date ( '" + consigntime + "','YYYY-MM-DD hh24:mi:ss') ,'unprint', '淘宝自动抓取'   FROM DUAL  " +
-                            " WHERE   NOT EXISTS ( select 1 from sale WHERE SA_CODE='" + trades.get(i).getTid() + "'   )  ";
+                            " WHERE   NOT EXISTS ( select 1 from sale WHERE SA_TAOBAOID=" + trades.get(i).getTid() + "   )  ";
                     insertSqlsList.add(INSERTSALESql);
 
 
@@ -310,9 +308,9 @@ public class InsertServiceImpl implements InsertService {
 
                         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 )" +
-                                "  SELECT  ' " + trimNull(orders.get(j).getSkuPropertiesName()) + " ' ,  ' " + orders.get(j).getTitle() + " ' , " + sdid + " ,"+ said + ",'" + trades.get(i).getTid() + " '," + k + ",'" + trimNull(orders.get(j).getOuterIid()) + "'," + orders.get(j).getNum() + "," + orders.get(j).getPrice() + " ," + orders.get(j).getPayment() +
+                                "  SELECT  ' " + trimNull(orders.get(j).getSkuPropertiesName()) + " ' ,  ' " + orders.get(j).getTitle() + " ' , " + sdid + " ," + said + "  ,' " + trades.get(i).getTid() + " '," + k + ",'" + 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() + " FROM DUAL   WHERE  NOT EXISTS ( select sd_id from  sale left join  saledetail on sa_id=sd_said " +
-                                "WHERE sa_code = '" + trades.get(i).getTid() + "'  and sd_detno = " + k + " )  ";
+                                "WHERE SA_TAOBAOID = " + trades.get(i).getTid() + "  and sd_detno = " + k + " )  ";
                         insertSqlsList.add(INSERTSALEDETAILSql);
                     }
 

+ 161 - 0
src/main/java/com/uas/eis/task/TaoBaoDownLoadTask.java

@@ -0,0 +1,161 @@
+package com.uas.eis.task;
+
+import com.taobao.api.DefaultTaobaoClient;
+import com.taobao.api.TaobaoClient;
+import com.taobao.api.domain.Order;
+import com.taobao.api.domain.Trade;
+import com.taobao.api.request.TopOaidDecryptRequest;
+import com.taobao.api.request.TradesSoldGetRequest;
+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.DateUtil;
+import oracle.sql.DATE;
+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.*;
+
+
+@Component
+public class TaoBaoDownLoadTask {
+
+    public static Logger logger = Logger.getLogger(TaoBaoDownLoadTask.class);
+
+    @Autowired
+    private TaoBaoConfig taoBaoConfig;
+    @Autowired
+    private BaseDao baseDao;
+    /**
+     * 下载订单
+     * */
+    @Scheduled(cron = "0 0/10 * * * ?")
+    public void DownLoadOrder(){
+
+        /**
+         * 有效店铺
+         * */
+        List<Map<String,Object>> shopList = baseDao.queryForList("SELECT TB_CODE,TB_LASTSYNCDATE from TBAUTHORIZATION ORDER BY TB_CODE ASC");
+        logger.info("Start downLoad SaleOrder---");
+        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"+
+                ",receiver_phone,consign_time,received_payment,receiver_country,receiver_town,order_tax_fee,shop_pick,tid,num,num_iid,status,title,type,price,discount_fee"+
+                ",total_fee,created,pay_time,modified,end_time,seller_flag,buyer_nick,has_buyer_message,credit_card_fee,step_trade_status,step_paid_fee,mark_desc,shipping_type"+
+                ",adjust_fee,trade_from,service_orders,oid,item_oid,service_id,service_detail_url,num,price,payment,title,total_fee,buyer_nick,refund_id,seller_nick,pic_path"+
+                ",tmser_spu_code,oid_str,buyer_rate,receiver_city,receiver_district,o2o,o2o_guide_id,o2o_delivery,orders,item_meal_name,pic_path,seller_nick,buyer_nick,refund_status,outer_iid,snapshot_url,snapshot,timeout_action_time,buyer_rate,seller_rate"+
+                ",seller_type,cid,sub_order_tax_fee,sub_order_tax_rate,oid,status,title,item_oid,type,sku_properties_name,order_attr,shipping_type"+
+                ",md_qualification,customization,inv_type,shipper,f_type,f_status,f_term,assembly_rela,cl_down_payment,cl_month_payment,cl_tail_payment"+
+                ",cl_installment_num,cal_penalty,cl_service_fee,cl_car_taker,cl_car_taker_phone,cl_car_taker_i_d_num,cl_car_taker_id_num,down_payment"+
+                ",down_payment_ratio,month_payment,tail_payment,installment_num,penalty,service_fee,oid_str,nr_reduce_inv_fail,sort_info"+
+                ",rt_omni_outer_sc_id,rt_omni_sc_id,modify_address,ti_modify_address_time,omni_jxs_outerid,propoint,brand_light_shop_source,special_refund_type"+
+                ",extend_info,service_type,threepl_timing,is_o2o_passport,delivery_time,sign_time");
+        shopList.stream().forEach(shop -> {
+            List<String> executeSQLS = new ArrayList<>();
+            String sessionKey = String.valueOf(shop.get("TB_CODE"));
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(DateUtil.parse(String.valueOf(shop.get("TB_LASTSYNCDATE")),"yyyy-MM-dd HH:mm:ss"));
+            calendar.add(Calendar.DATE, -1);
+            Date date = new Date();
+            req.setStartCreated(calendar.getTime());
+            req.setEndCreated(date);
+            try {
+                TradesSoldGetResponse rsp = client.execute(req, sessionKey);
+                List<Trade> trades = rsp.getTrades();
+                logger.info("店铺获取单数"+trades.size());
+                for(Trade trade: trades){
+                    formatTrade(trade, sessionKey, executeSQLS);
+                }
+                baseDao.execute(executeSQLS);
+                //更新当前店铺的最近更新时间
+                baseDao.updateByCondition("TBAUTHORIZATION","TB_LASTSYNCDATE=to_date ( '" + DateUtil.format(date, 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");
+    }
+    private  void formatTrade(Trade trade ,String sessionKey, List<String> executeSqls){
+        String oaid=trade.getOaid();
+        String tid=trade.getTid().toString();
+        boolean isEXISTS = baseDao.checkIf("SALE", "SA_CODE='"+tid+"'");
+        if(isEXISTS) {
+            return;
+        }
+        TopOaidDecryptRequest req= new TopOaidDecryptRequest();
+        List<TopOaidDecryptRequest.ReceiverQuery> queryList = new ArrayList<TopOaidDecryptRequest.ReceiverQuery>();
+        TopOaidDecryptRequest.ReceiverQuery receiverQuery = new TopOaidDecryptRequest.ReceiverQuery();
+          receiverQuery.setOaid(oaid);
+          receiverQuery.setTid(tid);
+          receiverQuery.setScene("1001");
+          queryList.add(receiverQuery);
+        req.setQueryList(queryList);
+
+        TaobaoClient client =  new DefaultTaobaoClient(taoBaoConfig.getServerUrl(), taoBaoConfig.getAppKey(), taoBaoConfig.getAppSecret());
+        String name_oaid=trimNull(trade.getReceiverName() );
+        String receiver_mobile=trimNull(trade.getReceiverMobile() );
+        String address=trimNull(trade.getReceiverState() ) + trimNull(trade.getReceiverCity() ) + trimNull(trade.getReceiverDistrict() ) +  trimNull(trade.getReceiverAddress() );
+        if(oaid!=null) {
+            try {
+                TopOaidDecryptResponse rep = client.execute(req, sessionKey);
+                name_oaid = rep.getReceiverList().get(0).getName();
+                receiver_mobile=rep.getReceiverList().get(0).getMobile();
+                address=trimNull(rep.getReceiverList().get(0).getState() ) + trimNull(rep.getReceiverList().get(0).getCity() ) + trimNull(rep.getReceiverList().get(0).getDistrict() ) +  trimNull( rep.getReceiverList().get(0).getAddressDetail() );
+            } catch (Exception e) {
+                logger.info("淘宝返回敏感信息失败,"+e.getMessage());
+            }
+        }
+        name_oaid=name_oaid.replaceAll("'","");
+        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())
+                &&!"WAIT_BUYER_CONFIRM_GOODS".equals(trade.getStatus())
+                &&!"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) 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+"') 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_recorddate,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_plandelivery,sa_printstatuscode,sa_remark)" +
+                    "  SELECT   1," + trade.getDiscountFee() + ",'" + trimNull(trade.getStatus()) + "',replace( nvl( '" + trimNull(trade.getSellerNick()) + " ' ,'静夜思solong'),' ',''), 'GN0008358','P001', " + trade.getTid() + " , '现结','HLK淘宝','国内标准销售订单', ' " + trimNull(name_oaid) + "  ' , ' " + trimNull(receiver_mobile) + " ' , " + said + "," + trade.getTid() + "," + trade.getTid()
+                    + " , to_date (  '" + end_time + "' ,'YYYY-MM-DD hh24:mi:ss') , '管理员',sysdate,'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', '淘宝自动抓取'   FROM DUAL  " +
+                    " WHERE   NOT EXISTS ( select 1 from sale WHERE SA_TAOBAOID=" + trade.getTid() + "   )  ";
+
+            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 )" +
+                        "  SELECT  ' " + trimNull(orders.get(j).getSkuPropertiesName()) + " ' ,  ' " + orders.get(j).getTitle() + " ' , saledetail_seq.nextval ," + said + "  ,' " + trade.getTid() + " '," + (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() + " FROM DUAL   WHERE  NOT EXISTS ( select sd_id from  sale left join  saledetail on sa_id=sd_said " +
+                        "WHERE SD_CODE = '" + tid + "'  and sd_detno = " + (j+1) + " )  ";
+                executeSqls.add(INSERTSALEDETAILSql);
+            }
+        }
+    }
+
+    public  String trimNull(String str){
+        if("".equals(str)||str==null||"null".equals(str)){
+            return "";
+        }else{
+            return str.trim();
+        }
+    }
+}

+ 1 - 0
src/main/java/com/uas/eis/utils/DateUtil.java

@@ -9,6 +9,7 @@ import java.util.GregorianCalendar;
 import java.util.List;
 
 public class DateUtil {
+	public static final String FORMAT_YMD_HMS = "yyyy-MM-dd HH:mm:ss";
 	static final SimpleDateFormat ym = new SimpleDateFormat("yyyyMM");
 	static final SimpleDateFormat YM = new SimpleDateFormat("yyyy-MM");
 	static final SimpleDateFormat YMD = new SimpleDateFormat("yyyy-MM-dd");

+ 7 - 0
src/main/resources/application-prod.yml

@@ -77,3 +77,10 @@ logging:
   config: classpath:logback-prod.xml
 SECURITY_KEY: 435aMe9L5itTrckY35kfcOQvPkBGZtGo
 KEEP: 86400000
+extral:
+  taobao:
+    serverUrl: http://39.98.201.114:30001/router/rest
+    appKey: 31921866
+    appSecret: 7121c52d4c9970ba08bf09e2f525acd0
+    publicKey: AD81B4DA5940107267B543F3C271810DA8FAF6DF214AA674EBF9DBA70F16CE7B
+

+ 4 - 1
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -1,6 +1,7 @@
 package com.uas.eis;
 
 import com.uas.eis.service.InsertService;
+import com.uas.eis.task.TaoBaoDownLoadTask;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,9 +14,11 @@ public class UasEisApplicationTests {
 
 	@Autowired
 	private InsertService insertService;
+	@Autowired
+	private TaoBaoDownLoadTask taoBaoDownLoadTask;
 	@Test
 	public void contextLoads() {
-		insertService.getAllDate();
+		taoBaoDownLoadTask.DownLoadOrder();
 	}
 
 }