OpenSearch.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2017/11/27/027
  6. * Time: 18:07
  7. */
  8. namespace backend\models\searches;
  9. use backend\models\AdminOpenApi;
  10. use backend\models\OpenApi;
  11. use yii\data\ArrayDataProvider;
  12. use yii\data\Pagination;
  13. use yii\helpers\Url;
  14. class OpenSearch extends DataTable
  15. {
  16. /**
  17. * @param array $params
  18. * @return ArrayDataProvider
  19. */
  20. public function search($params)
  21. {
  22. $this->setAttributes($params);
  23. // 初始化DataTable查询参数
  24. $this->initSearchParams();
  25. $pagination = new Pagination();
  26. $pagination->setPageSize($this->pageSize);
  27. $data['pageSize'] = $pagination->getPageSize();
  28. $data['page'] = $this->page;
  29. if ($this->orderBy) {
  30. $data['orderBy'] = $this->orderBy;
  31. }
  32. if (!empty($this->search['value']) && trim($this->search['value']) !== '') {
  33. $data['search'] = trim($this->search['value']);
  34. }
  35. $data['member_id'] = \Yii::$app->getUser()->getId();
  36. if ($this->pageSize > 1000) {
  37. if (\Yii::$app->getRequest()->isAjax) {
  38. \Yii::$app->getResponse()->redirect(Url::current());
  39. } else {
  40. $this->exportXls($data);
  41. }
  42. \Yii::$app->end();
  43. }
  44. $api = new OpenApi();
  45. $result = $api->getOpenList($data);
  46. $models = [];
  47. if ($result['code'] == 1) {
  48. $models = (array)$result['data']['dataList'];
  49. $pagination->totalCount = (int)$result['data']['totalCount'];
  50. }
  51. $dataProvider = new ArrayDataProvider([
  52. 'models' => $models,
  53. 'pagination' => $pagination,
  54. 'totalCount' => $pagination->totalCount,
  55. ]);
  56. return $dataProvider;
  57. }
  58. /**
  59. * @param $data
  60. */
  61. private function exportXls($data)
  62. {
  63. \Yii::$app->getResponse()->setDownloadHeaders("开户申请记录_" . date('Y-m-d') . '.xls')->send();
  64. if (!ob_get_level()) {
  65. ob_start();
  66. }
  67. echo '<style>.num{mso-number-format:General;} .text{mso-number-format:"\@";/*force text*/}</style>';
  68. echo '<table border="1" cellpadding="0" cellspacing="0">';
  69. echo '<tr><th>ID</th><th>状态</th><th>姓名</th><th>邮箱</th><th>手机</th><th>推广ID</th><th>申请时间</th></tr>';
  70. $api = new OpenApi();
  71. $leftSize = $this->pageSize;
  72. while ($leftSize > 0) {
  73. // 重新计算页数和分页大小 start
  74. $pageSize = $leftSize > 1000 ? 1000 : $leftSize;
  75. $data['pageSize'] = $pageSize;
  76. $data['page'] = ceil($this->start / $pageSize) + 1;
  77. // 重新计算页数和分页大小 end
  78. $result = $api->getOpenList($data);
  79. if ($result['code'] == 1 && $result['data']['dataList']) {
  80. foreach ((array)$result['data']['dataList'] as $key => $row) {
  81. $str = '<tr>';
  82. $str .= "<td class='text'>{$row['id']}</td>";
  83. if ((int)$row['type'] == 0) {
  84. $str .= "<td class='text'>等待</td>";
  85. } elseif ((int)$row['type'] == 1) {
  86. $str .= "<td class='text'>处理中</td>";
  87. } elseif ((int)$row['type'] == 2) {
  88. $str .= "<td class='text'>完成</td>";
  89. } else {
  90. $str .= "<td class='text'>拒绝</td>";
  91. }
  92. $str .= "<td class='text'>{$row['name']}</td>";
  93. $str .= "<td class='text'>{$row['email']}</td>";
  94. $str .= "<td class='text'>{$row['mobile']}</td>";
  95. $str .= "<td class='text'>{$row['rid']}</td>";
  96. $str .= "<td class='text'>".date('Y-m-d H:i:s', intval($row['in_time'] / 1000))."</td>";
  97. $str .= "</tr>";
  98. echo $str;
  99. }
  100. ob_flush();
  101. flush();
  102. } else {
  103. break;
  104. }
  105. $this->start += $pageSize;
  106. $leftSize -= $pageSize;
  107. if ($this->start >= $result['data']['totalCount']) {
  108. break;
  109. }
  110. }
  111. echo "</table>";
  112. if (ob_get_level()) {
  113. ob_end_flush();
  114. }
  115. }
  116. }