Mt4UserSearch.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace backend\models\searches;
  3. use backend\models\Mt4UserApi;
  4. use common\helpers\ExcelHelper;
  5. use common\helpers\UserAgentHelper;
  6. use Yii;
  7. use yii\data\ArrayDataProvider;
  8. use yii\data\Pagination;
  9. use yii\helpers\Url;
  10. use yii\web\Response;
  11. class Mt4UserSearch extends DataTable
  12. {
  13. /**
  14. * @param array $params
  15. * @return ArrayDataProvider
  16. */
  17. public function search($params)
  18. {
  19. $this->setAttributes($params);
  20. // 初始化DataTable查询参数
  21. $this->initSearchParams();
  22. $pagination = new Pagination();
  23. $pagination->setPageSize($this->pageSize);
  24. $data['pageSize'] = $pagination->getPageSize();
  25. $data['page'] = $this->page;
  26. if ($this->orderBy) {
  27. $data['orderBy'] = $this->orderBy;
  28. }
  29. if (!empty($this->search['value']) && trim($this->search['value']) !== '') {
  30. $data['search'] = trim($this->search['value']);
  31. }
  32. if ($this->pageSize > 5000) {
  33. if (Yii::$app->getRequest()->getIsAjax()) {
  34. Yii::$app->getResponse()->redirect(Url::current(), UserAgentHelper::isIE() ? 200 : 302);
  35. } else {
  36. $this->exportXls($data);
  37. }
  38. Yii::$app->end();
  39. }
  40. $api = new Mt4UserApi();
  41. $result = $api->getPagelist($data);
  42. $models = [];
  43. if ($result['code'] == 1) {
  44. $models = (array)$result['data']['dataList'];
  45. $pagination->totalCount = $result['data']['totalCount'];
  46. }
  47. $dataProvider = new ArrayDataProvider([
  48. 'models' => $models,
  49. 'pagination' => $pagination,
  50. 'totalCount' => $pagination->totalCount,
  51. ]);
  52. return $dataProvider;
  53. }
  54. /**
  55. * @param array $data
  56. */
  57. private function exportXls($data)
  58. {
  59. ExcelHelper::init();
  60. $attachmentName = "MT4账户管理_" . date('Y-m-d') . '.xlsx';
  61. $header = ['代理商', '账户', '姓名', '用户组', '杠杆', '余额', '注册时间'];
  62. $source = [];
  63. $api = new Mt4UserApi();
  64. $data['pageSize'] = 5000;
  65. $data['page'] = 1;
  66. while (true) {
  67. $result = $api->getPagelist($data);
  68. if ($result['code'] == 1 && !empty($result['data']['dataList'])) {
  69. foreach ((array)$result['data']['dataList'] as $key => $row) {
  70. $arr = [];
  71. $arr[] = $row['IBNAME'];
  72. $arr[] = $row['LOGIN'];
  73. $arr[] = $row['NAME'];
  74. $arr[] = $row['GROUP'];
  75. $arr[] = "1:{$row['LEVERAGE']}";
  76. $arr[] = $row['BALANCE'];
  77. $arr[] = $row['REGDATE'];
  78. $source[] = $arr;
  79. }
  80. } else {
  81. break;
  82. }
  83. if ($data['page'] * $data['pageSize'] >= $result['data']['totalCount']) {
  84. break;
  85. }
  86. $data['page']++;
  87. }
  88. ExcelHelper::output($source, $header, $attachmentName);
  89. }
  90. }