OrderController.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. namespace addons\ReservationService\backend\controllers;
  3. use addons\ReservationService\common\enums\ReservationServiceEnum;
  4. use addons\ReservationService\common\models\ReservationServiceOrder;
  5. use addons\ReservationService\common\services\BackendService;
  6. use common\enums\OrderStatusEnum;
  7. use common\enums\StatusEnum;
  8. use common\models\order\Order;
  9. use common\models\order\OrderDetail;
  10. use common\models\user\User;
  11. use Yii;
  12. /**
  13. * 申请控制器
  14. *
  15. * Class ApplyController
  16. * @package addons\ReservationService\backend\controllers
  17. */
  18. class OrderController extends BaseController
  19. {
  20. public $enableCsrfValidation = false;
  21. /**
  22. * 首页
  23. *
  24. * @return string
  25. */
  26. public function actionIndex()
  27. {
  28. $retuest = \Yii::$app->request;
  29. if ($retuest->isAjax) {
  30. if ($retuest->isGet) {
  31. $params = \Yii::$app->request->get();
  32. $_params = [];
  33. if (!empty($params['date_start'])) {
  34. $_params['date_start'] = $params['date_start'];
  35. unset($params['date_start']);
  36. }
  37. if (!empty($params['date_end'])) {
  38. $_params['date_end'] = $params['date_end'];
  39. unset($params['date_end']);
  40. }
  41. $params['check_status'] = StatusEnum::ENABLED;
  42. $list = BackendService::getUserList($this->mall_id, $params);
  43. $list['custom_text'] = BackendService::getCustomText($this->mall_id);
  44. if (!$list) {
  45. return $this->error(BackendService::getStaticError());
  46. } else {
  47. if (!empty($list['list'])) {
  48. foreach ($list['list'] as &$item) {
  49. $_where = [
  50. 'and',
  51. ['mall_id' => $this->mall_id],
  52. ['staff_user_id' => $item['user_id']],
  53. ['status' => StatusEnum::ENABLED],
  54. ['is_refund' => 0],
  55. ['service_status' => [ReservationServiceEnum::RESERVE_ORDER_STATUS_NORMAL, ReservationServiceEnum::RESERVE_ORDER_STATUS_TALKING,
  56. ReservationServiceEnum::RESERVE_ORDER_STATUS_SERVING, ReservationServiceEnum::RESERVE_ORDER_STATUS_UNDERWRITER, ReservationServiceEnum::RESERVE_ORDER_STATUS_FINISH]]
  57. ];
  58. if (!empty($_params)) {
  59. if (!empty($_params['date_start'])) {
  60. $_where[] = ['>=', 'created_at', strtotime($_params['date_start'])];
  61. }
  62. if (!empty($_params['date_end'])) {
  63. $_where[] = ['<=', 'created_at', strtotime($_params['date_end'])];
  64. }
  65. }
  66. $oder_ids = ReservationServiceOrder::find()->where($_where)->select('order_id')->column();
  67. $item['order_num'] = count($oder_ids);
  68. $order_amount = Order::find()->where(['id' => $oder_ids])->sum('goods_price');
  69. $item['order_amount'] = !empty($order_amount)? $order_amount : 0;
  70. $pay_amount = Order::find()->where(['id' => $oder_ids])->sum('pay_money');
  71. $item['order_pay_amount'] = !empty($pay_amount)? $pay_amount : 0;
  72. $item['date'] = date('Y-m-d');
  73. }
  74. unset($item);
  75. }
  76. $this->success('数据请求成功', $list);
  77. }
  78. }
  79. }
  80. return $this->render('index');
  81. }
  82. /**
  83. * 入驻审核
  84. * @return mixed|null
  85. */
  86. public function actionList()
  87. {
  88. if (Yii::$app->request->isAjax && Yii::$app->request->isGet) {
  89. $params = Yii::$app->request->get();
  90. $valid = Yii::$app->services->validate->validate($params, [
  91. [['user_id', 'service_status', 'page', 'limit'], 'integer'],
  92. [['order_no'], 'string'],
  93. [['date_start', 'date_end', 'keyword'], 'string'],
  94. [['user_id'], 'required']
  95. ]);
  96. if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  97. try {
  98. $where = [
  99. ['r.mall_id' => $this->mall_id],
  100. ['c.staff_user_id' => $params['user_id']]
  101. ];
  102. if (!empty($params['keyword'])) {
  103. $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
  104. 'or',
  105. ['=', 'id', $params['keyword']],
  106. ['like', 'nickname', $params['keyword'] . '%', false],
  107. ['like', 'mobile', $params['keyword'] . '%', false]
  108. ]], 'select' => 'id']);
  109. $user_ids = array_column($user_list, 'id');
  110. if (!empty($user_ids)) {
  111. $where[] = ['r.user_id' => $user_ids];
  112. } else {
  113. $where[] = ['r.id' => 0];
  114. }
  115. }
  116. if (!empty($params['date_start'])) $where[] = ['>=', 'r.created_at', strtotime($params['date_start'])];
  117. if (!empty($params['date_end'])) $where[] = ['<=', 'r.created_at', strtotime($params['date_end'])];
  118. if (isset($params['service_status']) && $params['service_status'] !== '') {
  119. $where[] = ['c.service_status' => $params['service_status']];
  120. } else {
  121. $where[] = ['c.service_status' => [ReservationServiceEnum::RESERVE_ORDER_STATUS_NORMAL, ReservationServiceEnum::RESERVE_ORDER_STATUS_TALKING,
  122. ReservationServiceEnum::RESERVE_ORDER_STATUS_SERVING, ReservationServiceEnum::RESERVE_ORDER_STATUS_UNDERWRITER, ReservationServiceEnum::RESERVE_ORDER_STATUS_FINISH]];
  123. }
  124. if (!empty($params['order_no'])) {
  125. $where[] = ['like', 'c.order_no', $params['order_no']];
  126. }
  127. $ret = Order::listPage([
  128. 'where' => $where,
  129. 'select' => 'r.id, r.order_no, r.user_id, r.pay_money, r.goods_price, r.out_trade_no, r.created_at, r.order_source, r.order_status, c.service_start_at, c.service_end_at, c.service_status',
  130. 'order' => 'r.id desc',
  131. 'limit' => $params['limit'] ?? 10,
  132. 'group' => 'c.order_id',
  133. 'join' => [['right join',ReservationServiceOrder::tableName().' as c','c.order_id=r.id']],
  134. 'alias' => 'r'
  135. ]);
  136. if (!$ret) return $this->error(Order::getStaticError());
  137. if (!empty($ret['list'])) {
  138. $uids = array_column($ret['list'], 'user_id');
  139. $users = User::find()->where(['id' => $uids])->select('id,nickname,avatar_url,mobile')->indexBy('id')->asArray()->all();
  140. foreach ($ret['list'] as &$item) {
  141. $item['user'] = $users[$item['user_id']] ?? [];
  142. $item['detail'] = OrderDetail::find()->where(['order_id' => $item['id']])->select('goods_name,num,goods_price,price')->asArray()->all();
  143. }
  144. unset($item);
  145. }
  146. $ret['service_status_map'] = ReservationServiceEnum::RESERVE_ORDER_STATUS_MAP;
  147. return $this->success('获取成功', $ret);
  148. } catch (\Exception $e) {
  149. return $this->error($e->getMessage());
  150. }
  151. }
  152. return $this->render('list');
  153. }
  154. }