| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- namespace addons\UnionPay\backend\controllers;
- use common\enums\PayTypeEnum;
- use common\enums\StatusEnum;
- use common\models\common\PaymentTrade;
- use common\models\common\PaymentTradeOrder;
- use common\models\user\User;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\UnionPay\backend\controllers
- */
- class DefaultController extends BaseController
- {
- public function actionIndex()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isGet) {
- $order_no = \Yii::$app->request->get('order_no');
- $start_time = \Yii::$app->request->get('start_time');
- $end_time = \Yii::$app->request->get('end_time');
- $user_id = \Yii::$app->request->get('user_id');
- $user_keyword = \Yii::$app->request->get('user_keyword');
- $out_trade_no = \Yii::$app->request->get('out_trade_no');
- $page = \Yii::$app->request->get('page', 1);
- $limit = \Yii::$app->request->get('limit', $this->pageSize);
- $wheres[] = ['mall_id' => $this->mall_id];
- $wheres[] = ['pay_type' => PayTypeEnum::UNIONPAY];
- if (!empty($start_time)) $wheres[] = ['>=', 'created_at', strtotime($start_time . '00:00:00')];
- if (!empty($end_time)) $wheres[] = ['<=', 'created_at', strtotime($end_time . ' 23:59:59')];
- if (!empty($out_trade_no)) $wheres[] = ['like', 'out_trade_no', $out_trade_no];
- if (!empty($user_id)) $wheres[] = ['user_id' => $user_id];
- if (!empty($user_keyword)) {
- $users = User::find()
- ->select('id,nickname,mobile,avatar_url')
- ->where(['or', ['like', 'nickname', $user_keyword], ['like', 'mobile', $user_keyword]])
- ->asArray()
- ->indexBy('id')
- ->all();
- $user_ids = array_column($users, 'id');
- $wheres[] = ['user_id' => $user_ids];
- }
- if (!empty($order_no)) {
- $payment_order_logs = PaymentTradeOrder::find()
- ->select('trade_id,order_no')
- ->where(['order_no' => $order_no])
- ->asArray()
- ->indexBy('trade_id')
- ->all();
- $trade_ids = array_column($payment_order_logs, 'trade_id');
- $wheres[] = ['id' => $trade_ids];
- }
- $params = [
- 'select' => 'id,mall_id,user_id,out_trade_no,pay_fee as amount,is_pay,trade_type,created_at,updated_at',
- 'where' => $wheres,
- 'order' => 'created_at desc,updated_at desc',
- 'page' => $page,
- 'limit' => $limit
- ];
- $pay_records = PaymentTrade::listPage($params);
- if (empty($pay_records['list'])) {
- if (false === $pay_records['list']) {
- return $this->error(PaymentTrade::getStaticError());
- }
- return $this->success('success', $pay_records);
- }
- if (empty($users)) {
- $user_ids = array_column($pay_records['list'], 'user_id');
- $users = User::find()
- ->select('id,nickname,mobile,avatar_url')
- ->where(['id' => $user_ids, 'status' => StatusEnum::ENABLED])
- ->asArray()
- ->indexBy('id')
- ->all();
- }
- if (empty($payment_order_logs)) {
- $trade_ids = array_column($pay_records['list'], 'id');
- $payment_order_logs = PaymentTradeOrder::find()
- ->select('trade_id,order_no')
- ->where(['trade_id' => $trade_ids])
- ->asArray()
- ->indexBy('trade_id')
- ->all();
- }
- foreach ($pay_records['list'] as &$record) {
- $user = $users[$record['user_id']] ?? [];
- $payment_order_log = $payment_order_logs[$record['id']] ?? [];
- $record['nickname'] = $user['nickname'] ?? '默认会员';
- $record['avatar_url'] = $user['avatar_url'] ?? \Yii::$app->request->hostInfo . '/resources/img/common/default-avatar.png';
- $record['mobile'] = $user['mobile'] ?? '';
- $record['order_no'] = $payment_order_log['order_no'] ?? '';
- }
- $pay_records['export_list'] = [];
- return $this->success('success', $pay_records);
- }
- }
- return $this->render($this->action->id);
- }
- }
|