request->isAjax && \Yii::$app->request->isGet) { $data = \Yii::$app->request->get(); $rules = [ [['keyword','order_no', 'date_c_start', 'date_c_end', 'date_start', 'date_end'], 'string'], [['status', 'page', 'limit', 'service_status','server_status','service_type','create_type','time_type'], 'integer'], ]; $res = \Yii::$app->services->validate->validate($data, $rules); if (!$res) return $this->error(\Yii::$app->services->validate->getErrorMessage()); $data['from'] = 'store'; $data['from_type'] = 'store_reserve_order'; $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->page($data); if (is_array($ret)) $ret['service_status_map'] = ReservationServiceEnum::SERVER_STATUS_MAP; $ret['custom_text'] = BackendService::getCustomText($this->mall_id); foreach ($ret['list'] as &$item) { $item['remark'] = BackendService::replaceTextToCustomText($item['remark'], $ret['custom_text']); } return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret); } return $this->render('index'); }catch (\Exception $e){ return $this->error($e->getMessage()); } } public function actionUnderwriter() { $data = \Yii::$app->request->post(); $rules = [ [['id'], 'integer'], ]; $res = \Yii::$app->services->validate->validate($data, $rules); if (!$res) return $this->error(\Yii::$app->services->validate->getErrorMessage()); $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->underwriter($data['id']); return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret); } public function actionEdit() { try { if (\Yii::$app->request->isAjax) { if(\Yii::$app->request->isGet){ $params = \Yii::$app->request->get(); $params['store'] = $this->store; $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->getEditData($params); $ret['store_name'] = $this->store['store_name']??''; return $this->success('获取成功', $ret); }elseif(\Yii::$app->request->isPost){ $params = \Yii::$app->request->post(); $params = $params['form']; $params['store'] = $this->store; if (empty($params['id'])) { if (!isset($params['service_type'])) { $params['service_type'] = ReserveServiceEnum::TO_STORE; } if (!isset($params['reservation_model'])) { $params['reservation_model'] = 2; } if (!isset($params['create_type'])) { $params['create_type'] = ReservationServiceEnum::SYSTEM_CREATION; } } $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id, 'store' => $this->store]))->setEditData($params); return $this->success('获取成功', $ret); } } return $this->render('edit'); }catch (\Exception $e){ return $this->error($e->getMessage()); } } public function actionGetStaffUserList() { if (\Yii::$app->request->isAjax) { if(\Yii::$app->request->isGet){ $params = \Yii::$app->request->get(); $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->getStaffUserList($params); return $this->success('获取成功', $ret); } } } public function actionGetReserveTime() { if (\Yii::$app->request->isAjax) { if(\Yii::$app->request->isGet){ $params = \Yii::$app->request->get(); $params['store'] = $this->store; $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->getReserveTime($params); return $this->success('获取成功', $ret); } } } public function actionGetReserveTimes() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $params = \Yii::$app->request->get(); $params['store'] = $this->store; $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->getReserveTimes($params); return $this->success('获取成功', $ret); } } } //http://admin.qimall.test/index.php?r=store%2Fclient%2Freserve-order%2Fget-reserve-times&sku_id=170&staff_user_id=0&date=2024-11-09T16:00:00.000Z //http://admin.qimall.test/index.php?r=store%2Fclient%2Freserve-order%2Fget-reserve-times&sku_id=&staff_user_id=553295&date=2024-11-10T16:00:00.000Z public function actionGetReserveDay() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $params = \Yii::$app->request->get(); $params['store'] = $this->store; $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->getReserveDay($params); return $this->success('获取成功', $ret); } } } public function actionGetStaffUserWorkTime() { if (\Yii::$app->request->isAjax) { if(\Yii::$app->request->isGet){ $params = \Yii::$app->request->get(); $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->getStaffUserWorkTime($params); return $this->success('获取成功', $ret); } } } public function actionConfirmToStore() { try { if (\Yii::$app->request->isAjax) { if(\Yii::$app->request->isPost){ $params = \Yii::$app->request->post(); $params['mall_id'] = $this->mall_id; // 以为需求更改。点击确认到店-状态变成已核销 $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->storeVerification($params); if (!$ret) return $this->error('核销失败'); return $this->success('获取成功', $ret); } } }catch (\Exception $e){ return $this->error($e->getMessage()); } } public function actionCancel() { try { if (\Yii::$app->request->isAjax) { if(\Yii::$app->request->isPost){ $params = \Yii::$app->request->post(); $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->cancel($params); return $this->success('获取成功', $ret); } } }catch (\Exception $e){ return $this->error($e->getMessage() . $e->getFile() . $e->getLine()); } } public function actionCheckAccept() { try { if (\Yii::$app->request->isAjax) { if(\Yii::$app->request->isPost){ $params = \Yii::$app->request->post(); $params['store'] = $this->store; $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->checkAccept($params); return $this->success('验收成功', $ret); } } }catch (\Exception $e){ return $this->error($e->getMessage()); } } public function actionGetSkuList() { if (\Yii::$app->request->isAjax && \Yii::$app->request->isGet) { $data = (new ReserveOrderService(['mall_id' => $this->mall_id, 'store_id' => $this->store_id]))->getSkuList(); $this->success('获取成功', $data); return $this->success('获取成功', []); } return $this->render($this->action->id); } public function actionGetUser() { if (\Yii::$app->request->isAjax) { if (\Yii::$app->request->isGet) { $params = \Yii::$app->request->get(); $ret = (new ReserveOrderService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->getUser($params); return $this->success('获取成功', $ret); } } } public function actionOrderList() { $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 = (new StaffService(['store_id' => $this->store_id, 'mall_id' => $this->mall_id]))->page($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], ['store_id' => $this->store_id], ['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('order-list'); } public function actionOrderDetail() { 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']], ['r.store_id' => $this->store_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('order-detail'); } }