WithdrawSearch.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. namespace backend\models\searches;
  3. use backend\models\WithdrawApi;
  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. class WithdrawSearch extends DataTable
  11. {
  12. public $sTime;
  13. public $eTime;
  14. public $memberId;
  15. public $type;
  16. /**
  17. * @inheritdoc
  18. */
  19. public function rules()
  20. {
  21. $rules = parent::rules();
  22. $rules[] = [['sTime', 'eTime', 'memberId', 'type'], 'safe'];
  23. return $rules;
  24. }
  25. /**
  26. * @param array $params
  27. * @param null|string $from
  28. * @return ArrayDataProvider
  29. */
  30. public function search($params, $from = null)
  31. {
  32. $this->setAttributes($params);
  33. // 初始化DataTable查询参数
  34. $this->initSearchParams();
  35. $pagination = new Pagination();
  36. $pagination->setPageSize($this->pageSize);
  37. $data['pageSize'] = $pagination->getPageSize();
  38. $data['page'] = $this->page;
  39. if ($this->orderBy) {
  40. $data['orderBy'] = $this->orderBy;
  41. }
  42. if (!empty($this->search['value']) && trim($this->search['value']) !== '') {
  43. $data['search'] = trim($this->search['value']);
  44. }
  45. if ($from == 'admin') {
  46. $data['from'] = $from;
  47. if ($this->sTime && ($inTimeStart = strtotime($this->sTime))) {
  48. $data['inTimeStart'] = $inTimeStart * 1000;
  49. }
  50. if ($this->eTime && ($inTimeEnd = strtotime($this->eTime))) {
  51. $data['inTimeEnd'] = $inTimeEnd * 1000;
  52. }
  53. $this->memberId && $data['memberId'] = $this->memberId;
  54. is_numeric($this->type) && $data['type'] = $this->type;
  55. } else {
  56. $data['memberId'] = Yii::$app->getUser()->getId();
  57. }
  58. if ($this->pageSize > 5000) {
  59. if (Yii::$app->getRequest()->getIsAjax()) {
  60. Yii::$app->getResponse()->redirect(Url::current(), UserAgentHelper::isIE() ? 200 : 302);
  61. } else {
  62. $this->exportXls($data);
  63. }
  64. Yii::$app->end();
  65. }
  66. $api = new WithdrawApi();
  67. $result = $api->getWithdrawList($data);
  68. $models = [];
  69. if ($result['code'] == 1) {
  70. $models = (array)$result['data']['dataList'];
  71. $pagination->totalCount = $result['data']['totalCount'];
  72. }
  73. $dataProvider = new ArrayDataProvider([
  74. 'models' => $models,
  75. 'pagination' => $pagination,
  76. 'totalCount' => $pagination->totalCount,
  77. ]);
  78. return $dataProvider;
  79. }
  80. /**
  81. * @param array $data
  82. */
  83. private function exportXls($data)
  84. {
  85. ExcelHelper::init();
  86. $attachmentName = "出金申请_" . date('Y-m-d') . '.xlsx';
  87. $header = ['类型', '代理商', '账户', '状态', '美金', '人民币', '手续费', '实扣', '汇率', '姓名',
  88. '手机', '银行', '省份', '城市', '分行', '卡号', '申请时间', '出金时间', '备注', '操作人'];
  89. $source = [];
  90. $api = new WithdrawApi();
  91. $data['pageSize'] = 5000;
  92. $data['page'] = 1;
  93. while (true) {
  94. $result = $api->getWithdrawList($data);
  95. if ($result['code'] == 1 && !empty($result['data']['dataList'])) {
  96. foreach ((array)$result['data']['dataList'] as $key => $row) {
  97. $arr = [];
  98. if ($row['memberType'] == 1) {
  99. $arr[] = "用户";
  100. } elseif($row['memberType'] == 2) {
  101. $arr[] = "代理";
  102. } else {
  103. $arr[] = "";
  104. }
  105. $arr[] = $row['IBNAME'];
  106. $arr[] = $row['login'];
  107. if ($row['type'] == 0) {
  108. $arr[] = "等待审核";
  109. } elseif($row['type'] == 1) {
  110. $arr[] = "不通过";
  111. } elseif($row['type'] == 2) {
  112. $arr[] = "已出金";
  113. } elseif($row['type'] == 3) {
  114. $arr[] = "管理员撤销";
  115. } elseif($row['type'] == 4) {
  116. $arr[] = "未分享朋友圈";
  117. } elseif($row['type'] == 5) {
  118. $arr[] = "暂不处理";
  119. } elseif($row['type'] == 6) {
  120. $arr[] = "处理中";
  121. } else {
  122. $arr[] = "";
  123. }
  124. $arr[] = $row['amount'];
  125. $arr[] = $row['rmb'];
  126. $arr[] = $row['fee'];
  127. $arr[] = $row['sk'];
  128. $arr[] = $row['rate'];
  129. $arr[] = $row['true_name'];
  130. $arr[] = $row['mobile'];
  131. $arr[] = $row['bank_name'];
  132. $arr[] = $row['bank_province'];
  133. $arr[] = $row['bank_city'];
  134. $arr[] = $row['bank_sub_name'];
  135. $bank_card_no = $row['bank_card_no'];
  136. $arr[] = function ($cell) use ($bank_card_no) {
  137. /** @var \PHPExcel_Cell $cell */
  138. $cell->setValueExplicit($bank_card_no);
  139. return true;
  140. };
  141. $arr[] = date('Y-m-d H:i:s', intval($row['in_time'] / 1000));
  142. if ($row['out_time'] > 0) {
  143. $arr[] = date('Y-m-d H:i:s', intval($row['out_time'] / 1000));
  144. } else {
  145. $arr[] = "";
  146. }
  147. $arr[] = $row['memo'];
  148. $arr[] = $row['admin_name'];
  149. $source[] = $arr;
  150. }
  151. } else {
  152. break;
  153. }
  154. if ($data['page'] * $data['pageSize'] >= $result['data']['totalCount']) {
  155. break;
  156. }
  157. $data['page']++;
  158. }
  159. ExcelHelper::output($source, $header, $attachmentName);
  160. }
  161. }