request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['limit', 'page', 'service_status'], 'integer'], [['order_type'], 'safe'], ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $data['staff_user_id'] = $this->user_id; $data['reservation_model'] = [0,2]; $ret = (new OrderService())->page($this->mall_id, $data); return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret); } /** * 订单详情 * @return mixed|null */ public function actionDetail() { $data = Yii::$app->request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['id'], 'integer'], [['id'], 'required'] ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); // $ret = (new OrderService())->getDetailByCodeOrId($this->mall_id, $this->user_id, '', $data['id'], $data['store_id']); $ret = (new OrderService())->getDetailById($this->mall_id, $this->user_id, $data['id']); return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret); } /** * 核销 通过订单ID进行核销 * * @return string */ public function actionUnderwriter() { $data = Yii::$app->request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['id'], 'integer'], [['id'], 'required'], [['code','clerk_nums'], 'safe'], ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); if(!empty($data['code'])){ $code = $data['code']; $code_pre = $code[0].$code[1]; switch ($code_pre) { case ClerkEnum::SECONDARY_CARD_CLERK_CODE_PRE: $params['mall_id'] = $this->mall_id; $params['clerk_user_id'] = $this->user_id ?: 0; $params['user_id'] = $this->user_id; $ret = SecondaryCardService::underwriter($params); return is_string($ret) ? $this->error($ret) : $this->success('核销成功'); } } $ret = (new OrderService())->underwriter($this->mall_id, $this->user_id, $data['id']); return is_string($ret) ? $this->error($ret) : $this->success('核销成功'); } /** * 接单 * @return mixed|null */ public function actionTalking() { $data = Yii::$app->request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['id'], 'integer'], [['id'], 'required'] ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $ret = (new OrderService())->talking($this->mall_id, $this->user_id, $data['id']); return is_string($ret) ? $this->error($ret) : $this->success('操作成功'); } /** * 拒绝接单 * @return mixed|null */ public function actionReject() { $data = Yii::$app->request->post(); $valid = Yii::$app->services->validate->validate($data, [ [['id'], 'integer'], [['reason'], 'required'], [['id'], 'required'] ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $data['reason'] = (string)$data['reason']; $ret = (new OrderService())->reject($this->mall_id, $this->user_id, $data['id'], 0, !empty($data['reason']) ? $data['reason'] : '无'); return is_string($ret) ? $this->error($ret) : $this->success('操作成功'); } /** * 取消接单 * @return mixed|null */ public function actionCancel() { $data = Yii::$app->request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['id'], 'integer'], [['id'], 'required'] ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $ret = (new OrderService())->cancel($this->mall_id, $this->user_id, $data['id']); return is_string($ret) ? $this->error($ret) : $this->success('取消成功'); } /** * 买家取消预约 * @return mixed|null */ public function actionCancelReserve() { $data = Yii::$app->request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['id'], 'integer'], [['id'], 'required'] ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $ret = (new OrderService())->cancel($this->mall_id, $this->user_id, $data['id'], 0, true); return is_string($ret) ? $this->error($ret) : $this->success('取消成功'); } /** * 扫码取到的商品详情 * @return mixed|null */ public function actionScan() { $data = Yii::$app->request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['code'], 'string'], [['store_id'], 'integer'], [['code'], 'required'] ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $ret = (new OrderService())->getDetailByCodeOrId($this->mall_id, $this->user_id, $data['code'], 0, 0); return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret); } /** * 验收 * @return mixed|null */ public function actionAcceptance() { $data = Yii::$app->request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['id'], 'integer'], [['id'], 'required'] ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $ret = (new OrderService())->acceptance($this->mall_id, $data['id'], $this->user_id); return is_string($ret) ? $this->error($ret) : $this->success('验收成功'); } public function actionRefundReason() { $tags = \Yii::$app->services->setting->addons->get($this->mall_id, ReservationServiceEnum::ADDONS_NAME, 'basic.refund_tags'); return $this->success('获取成功', !empty($tags) ? Json::decode((string)$tags) : []); } public function actionUnderwriterList() { $data = Yii::$app->request->get(); $valid = Yii::$app->services->validate->validate($data, [ [['page', 'limit'], 'integer'], ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $data['user_id'] = $this->user_id; $ret = (new OrderService())->underwriterList($this->mall_id, $data); if (!empty($ret['list'])) { $reservation_service_order_ids = []; foreach ($ret['list'] as $val) { if(!empty($val['secondary_card_no'])){ $reservation_service_order_ids[]=$val['id']; } } $use_log_list = $this->getSecondaryCardUseLog($this->mall_id,$reservation_service_order_ids); foreach ($ret['list'] as &$item) { $item['order']['created_at'] = date('Y-m-d H:i:s', $item['created_at']); $item['order']['service_status'] = $item['service_status']; $item['order']['service_status_text'] = ReservationServiceEnum::RESERVE_ORDER_STATUS_MAP[$item['service_status']]; $item['order']['id'] = $item['id']; $item = $item['order']; if (!empty($item['store'])) { $item['mall_name'] = $item['store']['store_name']; $item['mall_logo'] = $item['store']['logo_img']; } else { $item['mall_name'] = $this->mall['name']; $item['mall_logo'] = Yii::$app->services->setting->mall->get($this->mall_id, 'basic.logo'); } $item['secondary_card'] = []; if(isset($use_log_list[$item['id']])){ $use_log = $use_log_list[$item['id']]; $item['secondary_card']['clerk_nums'] = $use_log['clerk_nums']; $item['secondary_card']['order_no'] = $use_log['order_no']; $item['secondary_card']['service_income'] = $use_log['service_income']; } } } return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret); } protected function getSecondaryCardUseLog($mall_id,$reservation_service_order_ids){ $list = []; if(MallAddons::isInstall($mall_id,'SecondaryCard')){ $list = SecondaryCardService::getSecondaryCardUseLog($mall_id,$reservation_service_order_ids); } return $list; } /** * 预约满人检测 * @return mixed|null */ public function actionCheckReserveFull() { try { $data = Yii::$app->request->post(); $valid = Yii::$app->services->validate->validate($data, [ [['goods_reserve_sku_id','store_id','date'], 'required'] ]); if ($valid === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $res = (new OrderService())->checkReserveFull($data['goods_reserve_sku_id'], $data['store_id'], $data['date']); $is_full = 0; if ($res == false) { $is_full = 1; } return $this->success('获取成功', ['is_full' => $is_full]); }catch (\Exception $e){ return $this->error($e->getMessage()); } } }