orderTest.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2017/1/13
  6. * Time: 下午11:46
  7. */
  8. define('BASE_ROOT_PATH',str_replace('/test','',dirname(__FILE__)));
  9. require_once (BASE_ROOT_PATH . '/fooder.php');
  10. require_once (BASE_ROOT_PATH . '/helper/util_helper.php');
  11. class orderTest extends PHPUnit_Framework_TestCase
  12. {
  13. public static function setUpBeforeClass()
  14. {
  15. Base::run_util();
  16. }
  17. public static function tearDownAfterClass()
  18. {
  19. }
  20. public static function testSuccess()
  21. {
  22. $model_order = Model('order');
  23. $logic_order = Logic('order');
  24. $condition = array();
  25. $condition['order_state'] = ORDER_STATE_SEND;
  26. $condition['lock_state'] = 0;
  27. //$condition['delay_time'] = array('lt',time() - ORDER_AUTO_RECEIVE_DAY * 86400);
  28. $condition['order_id'] = 6370;
  29. //分批,每批处理100个订单,最多处理5W个订单
  30. $order_list = $model_order->getOrderList($condition, '', '*', 'delay_time asc', 100);
  31. foreach ($order_list as $order_info) {
  32. $result = $logic_order->changeOrderStateReceive($order_info,'system','系统','超期未收货系统自动完成订单');
  33. }
  34. }
  35. public function testSend()
  36. {
  37. $order_sn = '9000000001035202';
  38. $status = 1;
  39. $consign_time = '2017-01-15 18:07:05.0';
  40. $logistics_no = '3322415835338';
  41. $logistics_company = '申通快递';
  42. $express = Model('express')->field('id')->where(array('e_name' => $logistics_company))->select();
  43. if (empty($express) || count($express) == 0) {
  44. echo 'FAIL';
  45. return;
  46. }
  47. $express_id = $express[0]['id'];
  48. $time = strtotime($consign_time);
  49. }
  50. public function testInitOrder()
  51. {
  52. $mod_member = Model('member');
  53. $i = 0;
  54. while (true)
  55. {
  56. $start = $i * 1000;
  57. $items = Model()->table('member')->field('member_id')->order('member_id asc')->limit("{$start},1000")->select();
  58. if(empty($items)) {
  59. return;
  60. }
  61. $i++;
  62. foreach ($items as $item)
  63. {
  64. $member_id = intval($item['member_id']);
  65. if($member_id <= 0) continue;
  66. $result = $this->stat_order($member_id);
  67. if($result == false) continue;
  68. $order_num = intval($result['order_num']);
  69. $lasted_time = intval($result['lastest_time']);
  70. $mod_member->editMember(['member_id' => $member_id],['order_num' => $order_num,'lastest_order' => $lasted_time]);
  71. }
  72. }
  73. }
  74. private function stat_order($member_id)
  75. {
  76. $items = Model()->table('order')
  77. ->field('count(*) as order_num,max(payment_time) lastest_time')
  78. ->where(['buyer_id' => $member_id,'order_state' => array('in',[20,30,40])])
  79. ->select();
  80. if(empty($items)) {
  81. return false;
  82. }
  83. else
  84. {
  85. if($items[0]['order_num'] == 0){
  86. return false;
  87. } else {
  88. return $items[0];
  89. }
  90. }
  91. }
  92. public function testMemberOrder()
  93. {
  94. $mod_member = Model('member');
  95. $this->mStartm = strtotime(date('Y-m-d',time()));
  96. $this->mEndtm = $this->mStartm + 86400 - 1;
  97. $cond['payment_time'] = ['between',"{$this->mStartm},{$this->mEndtm}"];
  98. $cond['order_state'] = array('in',[20,30,40]);
  99. $i = 0;
  100. while (true)
  101. {
  102. $start = $i * 1000;
  103. $items = Model()->table('order')->field('buyer_id,payment_time')->where($cond)->order('payment_time asc')->limit("{$start},1000")->select();
  104. if(empty($items)) {
  105. return;
  106. }
  107. $i++;
  108. foreach ($items as $item)
  109. {
  110. $member_id = intval($item['buyer_id']);
  111. if($member_id <= 0) continue;
  112. $payment_time = intval($item['payment_time']);
  113. if($payment_time <= 0) continue;
  114. $mod_member->editMember(['member_id' => $member_id],['order_num' => array('exp', 'order_num+1'),'lastest_order' => $payment_time]);
  115. }
  116. }
  117. }
  118. public function testStatCall()
  119. {
  120. $x = 'a:4:{s:8:"function";a:16:{s:10:"app_update";a:2:{s:13:"check_version";a:1:{s:5:"count";i:7;}s:4:"area";a:1:{s:5:"count";i:7;}}s:6:"config";a:1:{s:11:"getconfigex";a:1:{s:5:"count";i:9;}}s:11:"member_info";a:2:{s:3:"get";a:1:{s:5:"count";i:7;}s:4:"edit";a:1:{s:5:"count";i:1;}}s:7:"special";a:1:{s:5:"index";a:1:{s:5:"count";i:10;}}s:5:"index";a:2:{s:6:"splash";a:1:{s:5:"count";i:8;}s:4:"tabs";a:1:{s:5:"count";i:8;}}s:5:"login";a:1:{s:6:"status";a:1:{s:5:"count";i:8;}}s:12:"member_order";a:1:{s:15:"orderCountState";a:1:{s:5:"count";i:5;}}s:12:"member_bonus";a:1:{s:5:"topup";a:1:{s:5:"count";i:16;}}s:13:"member_logout";a:1:{s:5:"index";a:1:{s:5:"count";i:2;}}s:14:"member_address";a:1:{s:12:"address_list";a:1:{s:5:"count";i:1;}}s:7:"bonusex";a:1:{s:4:"open";a:1:{s:5:"count";i:2;}}s:6:"search";a:3:{s:13:"suggest_words";a:1:{s:5:"count";i:4;}s:5:"index";a:1:{s:5:"count";i:7;}s:7:"history";a:1:{s:5:"count";i:1;}}s:12:"goods_common";a:1:{s:5:"index";a:1:{s:5:"count";i:2;}}s:5:"fcode";a:2:{s:5:"index";a:1:{s:5:"count";i:4;}s:4:"open";a:1:{s:5:"count";i:4;}}s:5:"mshop";a:1:{s:7:"signurl";a:1:{s:5:"count";i:3;}}s:4:"cart";a:2:{s:5:"addex";a:1:{s:5:"count";i:1;}s:10:"rate_money";a:1:{s:5:"count";i:1;}}}s:5:"other";a:3:{s:10:"goods_4919";a:1:{s:5:"count";i:1;}s:10:"goods_6212";a:1:{s:5:"count";i:1;}s:11:"special_466";a:1:{s:5:"count";i:1;}}s:9:"app_count";i:107;s:9:"wap_count";i:11;}';
  121. $y = unserialize($x);
  122. $x = json_encode($y);
  123. $x = json_decode($x,true);
  124. }
  125. }