TestCardInfo.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. use PHPUnit\Framework\TestCase;
  3. define('APP_ID', 'test');
  4. define('BASE_ROOT_PATH', str_replace('/test', '', dirname(__FILE__)));
  5. require_once(BASE_ROOT_PATH . '/global.php');
  6. require_once(BASE_CORE_PATH . '/lrlz.php');
  7. require_once(BASE_ROOT_PATH . '/fooder.php');
  8. class TestCardInfo extends TestCase
  9. {
  10. public static function setUpBeforeClass(): void
  11. {
  12. Base::run_util();
  13. }
  14. //docker-compose run phpcli php /var/www/html/phpunit-9.2.5.phar --filter "/(TestCardInfo::testImport)( .*)?$/" --test-suffix TestCardInfo.php /var/www/html/test
  15. public function testImport()
  16. {
  17. $mod_cardinfo = Model('card_info');
  18. $importer = function ($info) use($mod_cardinfo)
  19. {
  20. $card_no = trim($info['card_no']);
  21. if(strlen($card_no) != 11) {
  22. return;
  23. }
  24. $mod_cardinfo->import_old($info);
  25. };
  26. $import_hour = function ($end) use ($importer)
  27. {
  28. $start = $end - 3600;
  29. $cond = ['order_time&order_time' => ['_multi' => true, ['egt', $start], ['lt', $end]],
  30. 'inner_status' => 0];
  31. $i = 0;
  32. while (true)
  33. {
  34. $start = $i * 3000;
  35. $items = Model()->table('refill_order')
  36. ->field('card_no,order_time,card_type,regin_no,is_transfer,cardno_state')
  37. ->where($cond)
  38. ->order('order_time desc')->limit("{$start},3000")->select();
  39. $i++;
  40. if(empty($items)) break;
  41. foreach ($items as $item) {
  42. $importer($item);
  43. }
  44. }
  45. };
  46. $import_date = function ($end) use ($import_hour)
  47. {
  48. $start = $end - 86400;
  49. for ($hour = $end; $hour >= $start; $hour -= 3600) {
  50. $import_hour($hour);
  51. }
  52. };
  53. $import_days = function ($start_date, $end_date) use ($import_date)
  54. {
  55. for ($date = $end_date; $date > $start_date; $date -= 86400) {
  56. $import_date($date);
  57. }
  58. };
  59. $start_date = strtotime('2021-09-16');
  60. $end_date = strtotime('2021-09-29');
  61. $import_days($start_date,$end_date);
  62. }
  63. }