| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- <?php
- namespace addons\ReservationService\backend\controllers;
- use addons\ReservationService\common\enums\ReservationServiceEnum;
- use addons\ReservationService\common\models\ReservationServiceOrder;
- use addons\ReservationService\common\services\BackendService;
- use common\enums\OrderStatusEnum;
- use common\enums\StatusEnum;
- use common\models\order\Order;
- use common\models\order\OrderDetail;
- use common\models\user\User;
- use Yii;
- /**
- * 申请控制器
- *
- * Class ApplyController
- * @package addons\ReservationService\backend\controllers
- */
- class OrderController extends BaseController
- {
- public $enableCsrfValidation = false;
- /**
- * 首页
- *
- * @return string
- */
- public function actionIndex()
- {
- $retuest = \Yii::$app->request;
- if ($retuest->isAjax) {
- if ($retuest->isGet) {
- $params = \Yii::$app->request->get();
- $_params = [];
- if (!empty($params['date_start'])) {
- $_params['date_start'] = $params['date_start'];
- unset($params['date_start']);
- }
- if (!empty($params['date_end'])) {
- $_params['date_end'] = $params['date_end'];
- unset($params['date_end']);
- }
- $params['check_status'] = StatusEnum::ENABLED;
- $list = BackendService::getUserList($this->mall_id, $params);
- $list['custom_text'] = BackendService::getCustomText($this->mall_id);
- if (!$list) {
- return $this->error(BackendService::getStaticError());
- } else {
- if (!empty($list['list'])) {
- foreach ($list['list'] as &$item) {
- $_where = [
- 'and',
- ['mall_id' => $this->mall_id],
- ['staff_user_id' => $item['user_id']],
- ['status' => StatusEnum::ENABLED],
- ['is_refund' => 0],
- ['service_status' => [ReservationServiceEnum::RESERVE_ORDER_STATUS_NORMAL, ReservationServiceEnum::RESERVE_ORDER_STATUS_TALKING,
- ReservationServiceEnum::RESERVE_ORDER_STATUS_SERVING, ReservationServiceEnum::RESERVE_ORDER_STATUS_UNDERWRITER, ReservationServiceEnum::RESERVE_ORDER_STATUS_FINISH]]
- ];
- if (!empty($_params)) {
- if (!empty($_params['date_start'])) {
- $_where[] = ['>=', 'created_at', strtotime($_params['date_start'])];
- }
- if (!empty($_params['date_end'])) {
- $_where[] = ['<=', 'created_at', strtotime($_params['date_end'])];
- }
- }
- $oder_ids = ReservationServiceOrder::find()->where($_where)->select('order_id')->column();
- $item['order_num'] = count($oder_ids);
- $order_amount = Order::find()->where(['id' => $oder_ids])->sum('goods_price');
- $item['order_amount'] = !empty($order_amount)? $order_amount : 0;
- $pay_amount = Order::find()->where(['id' => $oder_ids])->sum('pay_money');
- $item['order_pay_amount'] = !empty($pay_amount)? $pay_amount : 0;
- $item['date'] = date('Y-m-d');
- }
- unset($item);
- }
- $this->success('数据请求成功', $list);
- }
- }
- }
- return $this->render('index');
- }
- /**
- * 入驻审核
- * @return mixed|null
- */
- public function actionList()
- {
- if (Yii::$app->request->isAjax && Yii::$app->request->isGet) {
- $params = Yii::$app->request->get();
- $valid = Yii::$app->services->validate->validate($params, [
- [['user_id', 'service_status', 'page', 'limit'], 'integer'],
- [['order_no'], 'string'],
- [['date_start', 'date_end', 'keyword'], 'string'],
- [['user_id'], 'required']
- ]);
- if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- try {
- $where = [
- ['r.mall_id' => $this->mall_id],
- ['c.staff_user_id' => $params['user_id']]
- ];
- if (!empty($params['keyword'])) {
- $user_list = User::lists(['where' => [['mall_id' => $this->mall_id], [
- 'or',
- ['=', 'id', $params['keyword']],
- ['like', 'nickname', $params['keyword'] . '%', false],
- ['like', 'mobile', $params['keyword'] . '%', false]
- ]], 'select' => 'id']);
- $user_ids = array_column($user_list, 'id');
- if (!empty($user_ids)) {
- $where[] = ['r.user_id' => $user_ids];
- } else {
- $where[] = ['r.id' => 0];
- }
- }
- if (!empty($params['date_start'])) $where[] = ['>=', 'r.created_at', strtotime($params['date_start'])];
- if (!empty($params['date_end'])) $where[] = ['<=', 'r.created_at', strtotime($params['date_end'])];
- if (isset($params['service_status']) && $params['service_status'] !== '') {
- $where[] = ['c.service_status' => $params['service_status']];
- } else {
- $where[] = ['c.service_status' => [ReservationServiceEnum::RESERVE_ORDER_STATUS_NORMAL, ReservationServiceEnum::RESERVE_ORDER_STATUS_TALKING,
- ReservationServiceEnum::RESERVE_ORDER_STATUS_SERVING, ReservationServiceEnum::RESERVE_ORDER_STATUS_UNDERWRITER, ReservationServiceEnum::RESERVE_ORDER_STATUS_FINISH]];
- }
- if (!empty($params['order_no'])) {
- $where[] = ['like', 'c.order_no', $params['order_no']];
- }
- $ret = Order::listPage([
- 'where' => $where,
- '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',
- 'order' => 'r.id desc',
- 'limit' => $params['limit'] ?? 10,
- 'group' => 'c.order_id',
- 'join' => [['right join',ReservationServiceOrder::tableName().' as c','c.order_id=r.id']],
- 'alias' => 'r'
- ]);
- if (!$ret) return $this->error(Order::getStaticError());
- if (!empty($ret['list'])) {
- $uids = array_column($ret['list'], 'user_id');
- $users = User::find()->where(['id' => $uids])->select('id,nickname,avatar_url,mobile')->indexBy('id')->asArray()->all();
- foreach ($ret['list'] as &$item) {
- $item['user'] = $users[$item['user_id']] ?? [];
- $item['detail'] = OrderDetail::find()->where(['order_id' => $item['id']])->select('goods_name,num,goods_price,price')->asArray()->all();
- }
- unset($item);
- }
- $ret['service_status_map'] = ReservationServiceEnum::RESERVE_ORDER_STATUS_MAP;
- return $this->success('获取成功', $ret);
- } catch (\Exception $e) {
- return $this->error($e->getMessage());
- }
- }
- return $this->render('list');
- }
- }
|