DefaultController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace addons\UnionPay\backend\controllers;
  3. use common\enums\PayTypeEnum;
  4. use common\enums\StatusEnum;
  5. use common\models\common\PaymentTrade;
  6. use common\models\common\PaymentTradeOrder;
  7. use common\models\user\User;
  8. /**
  9. * 默认控制器
  10. *
  11. * Class DefaultController
  12. * @package addons\UnionPay\backend\controllers
  13. */
  14. class DefaultController extends BaseController
  15. {
  16. public function actionIndex()
  17. {
  18. if (\Yii::$app->request->isAjax) {
  19. if (\Yii::$app->request->isGet) {
  20. $order_no = \Yii::$app->request->get('order_no');
  21. $start_time = \Yii::$app->request->get('start_time');
  22. $end_time = \Yii::$app->request->get('end_time');
  23. $user_id = \Yii::$app->request->get('user_id');
  24. $user_keyword = \Yii::$app->request->get('user_keyword');
  25. $out_trade_no = \Yii::$app->request->get('out_trade_no');
  26. $page = \Yii::$app->request->get('page', 1);
  27. $limit = \Yii::$app->request->get('limit', $this->pageSize);
  28. $wheres[] = ['mall_id' => $this->mall_id];
  29. $wheres[] = ['pay_type' => PayTypeEnum::UNIONPAY];
  30. if (!empty($start_time)) $wheres[] = ['>=', 'created_at', strtotime($start_time . '00:00:00')];
  31. if (!empty($end_time)) $wheres[] = ['<=', 'created_at', strtotime($end_time . ' 23:59:59')];
  32. if (!empty($out_trade_no)) $wheres[] = ['like', 'out_trade_no', $out_trade_no];
  33. if (!empty($user_id)) $wheres[] = ['user_id' => $user_id];
  34. if (!empty($user_keyword)) {
  35. $users = User::find()
  36. ->select('id,nickname,mobile,avatar_url')
  37. ->where(['or', ['like', 'nickname', $user_keyword], ['like', 'mobile', $user_keyword]])
  38. ->asArray()
  39. ->indexBy('id')
  40. ->all();
  41. $user_ids = array_column($users, 'id');
  42. $wheres[] = ['user_id' => $user_ids];
  43. }
  44. if (!empty($order_no)) {
  45. $payment_order_logs = PaymentTradeOrder::find()
  46. ->select('trade_id,order_no')
  47. ->where(['order_no' => $order_no])
  48. ->asArray()
  49. ->indexBy('trade_id')
  50. ->all();
  51. $trade_ids = array_column($payment_order_logs, 'trade_id');
  52. $wheres[] = ['id' => $trade_ids];
  53. }
  54. $params = [
  55. 'select' => 'id,mall_id,user_id,out_trade_no,pay_fee as amount,is_pay,trade_type,created_at,updated_at',
  56. 'where' => $wheres,
  57. 'order' => 'created_at desc,updated_at desc',
  58. 'page' => $page,
  59. 'limit' => $limit
  60. ];
  61. $pay_records = PaymentTrade::listPage($params);
  62. if (empty($pay_records['list'])) {
  63. if (false === $pay_records['list']) {
  64. return $this->error(PaymentTrade::getStaticError());
  65. }
  66. return $this->success('success', $pay_records);
  67. }
  68. if (empty($users)) {
  69. $user_ids = array_column($pay_records['list'], 'user_id');
  70. $users = User::find()
  71. ->select('id,nickname,mobile,avatar_url')
  72. ->where(['id' => $user_ids, 'status' => StatusEnum::ENABLED])
  73. ->asArray()
  74. ->indexBy('id')
  75. ->all();
  76. }
  77. if (empty($payment_order_logs)) {
  78. $trade_ids = array_column($pay_records['list'], 'id');
  79. $payment_order_logs = PaymentTradeOrder::find()
  80. ->select('trade_id,order_no')
  81. ->where(['trade_id' => $trade_ids])
  82. ->asArray()
  83. ->indexBy('trade_id')
  84. ->all();
  85. }
  86. foreach ($pay_records['list'] as &$record) {
  87. $user = $users[$record['user_id']] ?? [];
  88. $payment_order_log = $payment_order_logs[$record['id']] ?? [];
  89. $record['nickname'] = $user['nickname'] ?? '默认会员';
  90. $record['avatar_url'] = $user['avatar_url'] ?? \Yii::$app->request->hostInfo . '/resources/img/common/default-avatar.png';
  91. $record['mobile'] = $user['mobile'] ?? '';
  92. $record['order_no'] = $payment_order_log['order_no'] ?? '';
  93. }
  94. $pay_records['export_list'] = [];
  95. return $this->success('success', $pay_records);
  96. }
  97. }
  98. return $this->render($this->action->id);
  99. }
  100. }