TestTransferOrder.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. use PHPUnit\Framework\TestCase;
  3. use const mtopcard\ProvinceList;
  4. define('APP_ID', 'test');
  5. define('BASE_ROOT_PATH', str_replace('/test', '', dirname(__FILE__)));
  6. define('BASE_HELPER_PATH', BASE_ROOT_PATH . '/helper');
  7. require_once(BASE_ROOT_PATH . '/global.php');
  8. require_once(BASE_CORE_PATH . '/lrlz.php');
  9. require_once(BASE_HELPER_PATH . '/task/manager.php');
  10. require_once(BASE_HELPER_PATH . '/task/handler.php');
  11. require_once(BASE_HELPER_PATH . '/task/task_wrapper.php');
  12. const CurrentTest = NetTest;
  13. class TestTransferOrder extends TestCase
  14. {
  15. public static function setUpBeforeClass(): void
  16. {
  17. Base::run_util();
  18. }
  19. public function testSql()
  20. {
  21. // SELECT refill_order.*, vr_order.order_state, (1741162635 - refill_order.order_time - merchant.time_out) as mtime_out
  22. // FROM `lrlz_refill_order` AS `refill_order`
  23. // INNER JOIN `lrlz_vr_order` AS `vr_order` ON refill_order.order_id = vr_order.order_id
  24. // INNER JOIN `lrlz_merchant` AS `merchant` ON refill_order.mchid = merchant.mchid
  25. // WHERE (refill_order.inner_status = 0)
  26. // AND (refill_order.mchid IN (10296, 10292, 10297, 10549, 10550))
  27. // AND (refill_order.order_time >= 1741017600)
  28. // and (vr_order.order_state in (30,0))
  29. // and refill_order.is_retrying = 0
  30. // # and (refill_order.order_sn='2216470794433302240785')
  31. // AND NOT EXISTS (
  32. // SELECT 1
  33. // FROM lrlz_refill_order AS ro
  34. // INNER JOIN lrlz_vr_order vo
  35. // ON ro.order_id=vo.order_id
  36. // INNER JOIN lrlz_refill_buyback AS rb
  37. // ON ro.order_id = rb.order_id
  38. // WHERE ro.order_time >= 1741017600 and ro.mch_order = refill_order.mch_order and vo.order_state=40
  39. // )
  40. // ORDER BY refill_order.order_time desc
  41. // LIMIT 1000;
  42. // SELECT
  43. // refill_order.order_id,
  44. // refill_order.order_sn,
  45. // refill_order.mchid,
  46. // refill_order.mch_order,
  47. // refill_order.card_no,
  48. // vr_order.order_state,
  49. // (UNIX_TIMESTAMP() - refill_order.order_time - merchant.time_out) AS mtime_out,
  50. // MAX(refill_order.order_time) AS max_order_time -- 选取最大 order_time
  51. // FROM `lrlz_refill_order` AS `refill_order`
  52. // INNER JOIN `lrlz_vr_order` AS `vr_order`
  53. // ON refill_order.order_id = vr_order.order_id
  54. // INNER JOIN `lrlz_merchant` AS `merchant`
  55. // ON refill_order.mchid = merchant.mchid
  56. // LEFT JOIN `lrlz_refill_order` AS ro
  57. // ON refill_order.mch_order = ro.mch_order
  58. // AND ro.order_time >= 1741017600
  59. // LEFT JOIN `lrlz_vr_order` AS vo
  60. // ON ro.order_id = vo.order_id
  61. // AND vo.order_state = 40
  62. // LEFT JOIN `lrlz_refill_buyback` AS rb
  63. // ON ro.order_id = rb.order_id
  64. // WHERE
  65. // refill_order.inner_status = 0
  66. // AND refill_order.mchid IN (10296, 10292, 10297, 10549, 10550)
  67. // AND refill_order.order_time >= 1741017600
  68. // AND vr_order.order_state IN (30, 0)
  69. // AND refill_order.is_retrying = 0
  70. // GROUP BY refill_order.order_id, refill_order.mch_order, refill_order.mchid, refill_order.card_no, vr_order.order_state,refill_order.order_sn, refill_order.order_time, merchant.time_out
  71. // HAVING COUNT(DISTINCT CASE WHEN rb.order_id IS NOT NULL THEN ro.order_id END) = 0
  72. // ORDER BY max_order_time DESC
  73. // LIMIT 1000;
  74. $con = [
  75. 'refill_buyback.order_time' => ['egt', 1740758400],
  76. 'refill_order.order_time' => ['egt', 1740758400],
  77. 'vr_order.order_state' => ORDER_STATE_SUCCESS
  78. ];
  79. $res = $this->getAllBuybackOrder($con);
  80. }
  81. public function getAllBuybackOrder($condition)
  82. {
  83. $model = Model('');
  84. $len = 1000;
  85. $i = 0;
  86. $orders = [];
  87. while (true)
  88. {
  89. $start = $i * $len;
  90. $items = $model->table('refill_buyback,refill_order,vr_order')
  91. ->on('refill_buyback.order_id=refill_order.order_id,refill_order.order_id=vr_order.order_id')
  92. ->field("distinct refill_order.mch_order")
  93. ->join('inner,inner')
  94. ->where($condition)
  95. ->limit("{$start},{$len}")
  96. ->select();
  97. $orders = array_merge($orders,$items);
  98. if (empty($items) || count($items) < $len) {
  99. break;
  100. }
  101. $i++;
  102. }
  103. return $orders;
  104. }
  105. }