优惠券订单及其他脚本

excel_ftxia.php 8.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. require_once 'DB_PDO.class.php';
  3. require_once 'TBK.class.php';
  4. require_once 'confv2.class.php';
  5. require_once 'PHPExcel-1.8/Classes/PHPExcel.php';
  6. require_once 'PHPExcel-1.8/Classes/PHPExcel/IOFactory.php';
  7. require_once 'PHPExcel-1.8/Classes/PHPExcel/Reader/Excel5.php';
  8. # 定义下载订单时间段
  9. define("END_TIME", date('Y-m-d%20H:i:s', strtotime('2018-12-07 18:00:00')) );
  10. define("START_TIME", date('Y-m-d%20H:i:s', strtotime('2018-12-07 17:00:00')) );
  11. define("DETAILDEBUG", 0);//打印流程详细信息,如有需要,设为1
  12. define("LIMIT_NUM", 0);//限制导入条数,0不限制,方便测试,上线设为0
  13. /**
  14. * 导入及更新 ftxia数据
  15. */
  16. #设置时区
  17. date_default_timezone_set('PRC');
  18. set_time_limit(0);
  19. ini_set('memory_limit','1024M');
  20. function readDataFromDb(){
  21. # 1.下载excel
  22. $res = down_excel();
  23. if( !$res ){
  24. echo '下载excel文件失败';
  25. exit;
  26. }
  27. # 遍历订单
  28. # 统计
  29. $res_count = array(
  30. 'total_num' => 0,
  31. 'insert_num' => 0,
  32. 'already_num' => 0,
  33. 'fail_num' => 0
  34. );
  35. #初始化pdo
  36. $_PDO=DB_PDO::getInstance( conf::$DB_CONF );
  37. # 读取excel
  38. $templateName = $res;
  39. //实例化Excel读取类
  40. $objReader = new PHPExcel_Reader_Excel2007();
  41. if(!$objReader->canRead($templateName)){
  42. $objReader = new PHPExcel_Reader_Excel5();
  43. if(!$objReader->canRead($templateName)){
  44. echo "\n".'无法识别的Excel文件!';
  45. return false;
  46. }
  47. }
  48. $objPHPExcel=$objReader->load($templateName);
  49. $sheet=$objPHPExcel->getSheet(0);//获取第一个工作表
  50. $highestRow=$sheet->getHighestRow();//取得总行数
  51. $highestColumn=$sheet->getHighestColumn(); //取得总列数
  52. if( strlen($highestColumn) == 2 ){
  53. $highestColumn = 'Z';
  54. }
  55. $now = date("Y-m-d H:i:s");
  56. $orderList = array();
  57. //循环读取excel文件,读取一条,插入一条
  58. for($j=2;$j<=$highestRow;$j++){//从第二行开始读取数据
  59. $str='';
  60. for($k='A';$k<=$highestColumn;$k++){ //从A列读取数据
  61. //这种方法简单,但有不妥,以'\\'合并为数组,再分割\\为字段值插入到数据库,实测在excel中,如果某单元格的值包含了\\导入的数据会为空
  62. $str.=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\\';//读取单元格
  63. if( $k=='AE' ){
  64. break;
  65. }
  66. }
  67. //explode:函数把字符串分割为数组。
  68. $orderDetail = explode('\\',trim($str,'\\') );
  69. $res_count['total_num']++;
  70. echo "/ ************************ order{$res_count['total_num']}-Start ************************* / \n";
  71. echo 'order_id:'.$orderDetail[25].'|| goods_id:'.$orderDetail[3].'|| orderstatus:'.$orderDetail[8].'|| order_balance_at:'.$orderDetail[16].'|| update_time:'.$now;
  72. if( DETAILDEBUG == 1){
  73. echo 'orderDetail:';
  74. var_dump($orderDetail);
  75. }
  76. $sql = "select id from ftxia_taoke_detail2 where order_sn = '$orderDetail[25]' and goods_id = '$orderDetail[3]' limit 1";
  77. $stmt = $_PDO->prepare($sql);
  78. $stmt->execute();
  79. $result = $stmt->fetch(PDO::FETCH_ASSOC);
  80. if(!empty($result) && !in_array($orderDetail[25],$orderList)){
  81. echo "\n 该订单已存在";
  82. $res_count['already_num']++;
  83. }else{
  84. #@普通//0创建时间 1点击时间 2商品信息 3商品ID 4掌柜旺旺 5所属店铺 6商品数 7商品单价 8订单状态 9订单类型 10收入比率 11分成比率 12付款金额 13效果预估 14结算金额 15预估收入 16结算时间 17佣金比率 18佣金金额 19技术服务费比率 20补贴比率 21补贴金额 22补贴类型 23成交平台 24第三方服务来源 25订单编号 26类目名称 27来源媒体ID 28来源媒体名称 29广告位ID 30广告位名称
  85. #三方 //0创建时间 1点击时间 2商品信息 3商品ID 4掌柜旺旺 5所属店铺 6商品数 7商品单价 8订单状态 9订单类型 10收入比率 11分成比率 12付款金额 13效果预估 14结算金额 15预估收入 16结算时间 17佣金比率 18佣金金额 19补贴比率 20补贴金额 21补贴类型 22成交平台 23产品类型 24订单编号 25类目名称 26来源媒体ID 27来源媒体名称 28广告位ID 29广告位名称
  86. $orderDetail[2] = addslashes($orderDetail[2]);
  87. $orderDetail[4] = addslashes($orderDetail[4]);
  88. $orderDetail[5] = addslashes($orderDetail[5]);
  89. $sql = "insert into ftxia_taoke_detail2(create_time,click_time,goods_name,goods_id,wangwang,shop,goods_number,goods_price,order_status,order_type,income_ratio,divided_ratio,order_amount,effect_prediction,balance_amount,estimated_revenue,is_balanced,is_balanced2,is_balanced3,is_balanced4,balance_time,commission_ratio,commission_amount,subsidy_ratio,subsidy_amount,subsidy_type,order_platform,serve_from,order_sn,category,media_id,media_name,adv_id,adv_name,updatetime) values('$orderDetail[0]','$orderDetail[1]','$orderDetail[2]','$orderDetail[3]','$orderDetail[4]','$orderDetail[5]','$orderDetail[6]','$orderDetail[7]','$orderDetail[8]','$orderDetail[9]','$orderDetail[10]','$orderDetail[11]','$orderDetail[12]','$orderDetail[13]','$orderDetail[14]','$orderDetail[15]',0,0,0,0,'$orderDetail[16]','$orderDetail[17]','$orderDetail[18]','$orderDetail[20]','$orderDetail[21]','$orderDetail[22]','$orderDetail[23]','$orderDetail[24]','$orderDetail[25]','$orderDetail[26]','$orderDetail[27]','$orderDetail[28]','$orderDetail[29]','$orderDetail[30]','$now')";
  90. $stmt = $_PDO->prepare($sql);
  91. $stmt->execute();
  92. $res = $_PDO->lastinsertid();
  93. if($res){
  94. $orderList[] = $orderDetail[25];
  95. echo "\n 处理成功 +1";
  96. $res_count['insert_num']++;
  97. }else{
  98. echo "\n 处理失败 +1";
  99. $res_count['fail_num']++;
  100. }
  101. }
  102. echo "\n/ ** order{$res_count['total_num']}-End ** /";
  103. echo "\n\n\n";
  104. }
  105. print_r($res_count);
  106. }
  107. # curl调用接口push
  108. function curl_post($url, $params){
  109. $ch = curl_init();
  110. curl_setopt($ch, CURLOPT_URL, $url);
  111. curl_setopt($ch, CURLOPT_HEADER, 0);
  112. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  113. curl_setopt($ch, CURLOPT_POST, 1);
  114. curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
  115. $response = curl_exec($ch);
  116. curl_close($ch);
  117. return $response;
  118. }
  119. # 下载excel订单文件
  120. function down_excel(){
  121. $str_cookie = 'cna=gGnDEwQLQAACATqEyYplpj5I; account-path-guide-s1=true; 209580064_yxjh-filter-1=true; undefined_yxjh-filter-1=true; t=8c549c3cedcac7891a2c3c7f36ca91f4; cookie2=1fa7fa9dd6e4fb3bd69c512533182db2; _tb_token_=e0351ee7d530a; JSESSIONID=5898C4CE1551CAC98F389B372BB32B80; v=0; alimamapwag=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzY5LjAuMzQ5Ny4xMDAgU2FmYXJpLzUzNy4zNg%3D%3D; cookie32=2d2dbd51714bd91fa4e604f2e1050dd6; alimamapw=FnABFCAlFCZcQ3dVHXF2FncCFnF5FCAlFCFWQ3YjHXBxFnAEFnF7FCEgFCFXQ3BRHXFxFnd3FnEB%0AFCIhFCYmQ3YkMQICVwcEUgQPAQFWBlxWBVJRWwEAAABQAgQJV1dSVQAG; cookie31=OTk1MDYxNzMsJUU0JUI4JThBJUU5JUE1JUI2JUU1JUI4JTgyJUU1JTkwJTg4JUU0JUI4JTgwJUU3JUE3JTkxJUU2JThBJTgwJUU2JTlDJTg5JUU5JTk5JTkwJUU1JTg1JUFDJUU1JThGJUI4LGppYW5nbmFuQGZhbnRvdXRpYW8uY29tLFRC; login=WqG3DMC9VAQiUQ%3D%3D; rurl=aHR0cHM6Ly9wdWIuYWxpbWFtYS5jb20vaW5kZXguaHRt; apush848645ac0bf07b717f88c18a7e296d1e=%7B%22ts%22%3A1544176619068%2C%22heir%22%3A1544166809632%2C%22parentId%22%3A1544165506604%7D; isg=BG1tMLZEzcbYRa6cZKIpCs1MfAknYrnCxdSqqq9yNoRzJozYdxqUbfuwFLplprlU';
  122. $nowTime = END_TIME;
  123. $pastTime = START_TIME;
  124. $url = "https://pub.alimama.com/report/getTbkPaymentDetails.json?DownloadID=DOWNLOAD_REPORT_INCOME_NEW&queryType=1&payStatus=&startTime=".$pastTime."&endTime=".$nowTime;
  125. echo $url."\n";
  126. $ch = curl_init($url);
  127. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  128. curl_setopt($ch, CURLOPT_COOKIE, $str_cookie); //使用上面获取的cookies
  129. $response = curl_exec($ch);
  130. curl_close($ch);
  131. if( $response ){
  132. $file = fopen("./order_excel.csv", "w+");
  133. $a = fputs($file, $response);
  134. fclose($file);
  135. return './order_excel.csv';
  136. }
  137. else{
  138. return false;
  139. }
  140. }
  141. readDataFromDb();