HOTEL_STATUS = 1; if (Yii::$app->request->isPost || Yii::$app->request->isGet) { $data['OperaHotel'] = is_null(Yii::$app->request->post('OperaHotel')) ? Yii::$app->request->get('OperaHotel') : Yii::$app->request->post('OperaHotel'); $model->load($data); } $dataProvider = $model->upDownHoteList(); return $this->render('upDownList', ['model' => $model, 'dataProvider' => $dataProvider]); } /** * 上架酒店 */ public function actionPutawayHotel() { $request = Yii::$app->request->get(); $user = new BaseUser(); $hotel = new OperaHotel(['scenario' => 'putawayHotel']); $base_room = new OperaHotelBaseRoom(); $supplier = new BaseSupplier(); $purchase = new BaseSupplierPurchase(); // 查找未上架的酒店列表 $hotel_list = OperaHotel::findAll(['cancel_flag' => 0, 'IS_SELL' => 0]); if (empty($hotel_list)) { Yii::$app->session->setFlash('warning', "无可上架酒店!"); return $this->redirect('/hotel/hotel-room/up-down-list'); } $supplier_list = $supplier->getSupplierList(); $channel_list = $supplier->getChannelList(); $confirm_from = BaseConfirmOrganization::findAll(['CANCEL_FLAG' => 0]); $pricipal_list = $hotel->getPrincipal(); $isAjax = Yii::$app->request->isPjax; if ($isAjax && isset($_REQUEST['hotel_id'])) { $hotel_id = $_REQUEST['hotel_id']; } elseif ($isAjax && isset($_REQUEST['supplier_id'])) { $supplier_id = $_REQUEST['supplier_id']; } $hotel_one_id = empty($hotel_id) ? $hotel->getFirstHotel()[0]['HOTEL_ID'] : $hotel_id; $hotel_base_room = $base_room->getBaseRoomAll($hotel_one_id); // 获取供应商id $supplier_one_id = empty($supplier_id) ? $supplier->getFirstSupplier()[0]['ID'] : $supplier_id; // 获取采购人 $purchase_list = $purchase->getPurchaseName($supplier_one_id); $data['user'] = $user; $data['purchase'] = $purchase; $data['purchase_list'] = $purchase_list; $data['hotel_base_room'] = $hotel_base_room; $data['hotel_list'] = $hotel_list; $data['hotel'] = $hotel; $data['base_room'] = $base_room; $data['supplier_list'] = $supplier_list; $data['supplier'] = $supplier; $data['pricipal_list'] = $pricipal_list; $data['confirm_from'] = $confirm_from; $data['channel_list'] = $channel_list; /********************上架酒店开始************************/ $flag = Yii::$app->request->isPost; if ($flag) { $request = Yii::$app->request->post(); $hotel_info = $hotel->findHotel($request['OperaHotel']['HOTEL_NAME']); $hotel_info->setScenario('putawayHotel'); if (isset($request['ROOM_TYPE_SALE'])) { $request['OperaHotel']['ROOM_TYPE_SALE'] = empty($request['ROOM_TYPE_SALE']) ? '' : implode(',', $request['ROOM_TYPE_SALE']); unset($request['OperaHotel']['HOTEL_NAME']); } $request['OperaHotel']['DRIECT_CONNNECT_CHANNEL'] = empty($request['channel_id']) ? '' : implode(',', $request['channel_id']); if ($hotel_info->load($request)) { if (!$hotel_info->save()) { Yii::$app->session->setFlash('error', "上架失败!"); } else { if (!empty($request['channel_id']) && in_array(675, $request['channel_id'])) { $send_data = array('hotel_id' => $hotel_info['HOTEL_ID']); $http_res = Yii::$app->runAction('hotel/ali/add-hotel', $send_data); $http_res = json_decode($http_res, true); } // 如果进行了酒店推送,判断推送是否成功,本地建立直连关系 if (!empty($http_res) && $http_res['code'] != 0) { Yii::$app->session->setFlash('error', "上架成功, 推送失败!"); } elseif (!empty($http_res) && $http_res['code'] == 0) { Yii::$app->session->setFlash('success', "上架成功, 推送成功!"); } if (empty($request['channel_id'])) { Yii::$app->session->setFlash('success', "上架成功!"); } return $this->redirect('/hotel/hotel-room/up-down-list'); } } else { Yii::$app->session->setFlash('error', "上架失败!"); } } /********************上架酒店结束************************/ return $this->render('putawayHotel', ['data' => $data]); } /** * 修改上架酒店 */ public function actionUpdatePutHotel($hotel_id) { /**修改酒店**/ $hotel = new OperaHotel(); $one_hotel_info = $hotel->getOneHotelInfo($hotel_id); $one_hotel_info->setScenario('putawayHotel'); $base_room = new OperaHotelBaseRoom(); $supplier = new BaseSupplier(); $purchase = new BaseSupplierPurchase(); $hotel_list = OperaHotel::findAll(['cancel_flag' => 0]); $channel_list = $supplier->getChannelList(); $supplier_list = $supplier->getSupplierList(); $confirm_from = BaseConfirmOrganization::findAll(['CANCEL_FLAG' => 0]); $one_hotel_info->HOTEL_NAME = $one_hotel_info->HOTEL_ID; $supplier_id = $one_hotel_info->SUPPLIER_ID; $pricipal_list = $hotel->getPrincipal(); // 获取该酒店直连的渠道id $channel_arr = explode(',', $one_hotel_info->DRIECT_CONNNECT_CHANNEL); $connect_channel = $supplier->getConnectChannel($channel_arr); $isAjax = Yii::$app->request->isPjax; if ($isAjax && isset($_REQUEST['hotel_id'])) { $hotel_id = $_REQUEST['hotel_id']; } elseif ($isAjax && isset($_REQUEST['supplier_id'])) { $supplier_id = $_REQUEST['supplier_id']; } $hotel_one_id = $hotel_id; $hotel_base_room = $base_room->getBaseRoomAll($hotel_one_id); $supplier_one_id = $supplier_id; $purchase_list = $purchase->getPurchaseName($supplier_one_id); $data['channel_list'] = $channel_list; $data['purchase_list'] = $purchase_list; $data['hotel_base_room'] = $hotel_base_room; $data['hotel_list'] = $hotel_list; $data['hotel'] = $one_hotel_info; $data['supplier_list'] = $supplier_list; $data['pricipal_list'] = $pricipal_list; $data['confirm_from'] = $confirm_from; $data['connect_channel'] = $connect_channel; $data['op'] = 'modify'; /********************修改上架酒店开始************************/ $flag = Yii::$app->request->isPost; if ($flag) { $request = Yii::$app->request->post(); $hotel_info = $hotel->findHotel($request['OperaHotel']['HOTEL_NAME']); if (isset($request['ROOM_TYPE_SALE'])) // 拼接可售基础房型字段 { $request['OperaHotel']['ROOM_TYPE_SALE'] = empty($request['ROOM_TYPE_SALE']) ? '' : implode(',', $request['ROOM_TYPE_SALE']); $request['OperaHotel']['HOTEL_NAME'] = $hotel_info->HOTEL_NAME; } $request['OperaHotel']['DRIECT_CONNNECT_CHANNEL'] = empty($request['channel_id']) ? '' : implode(',', $request['channel_id']); if ($hotel_info->load($request) && $hotel_info->validate()) { $hotel_info->IS_SELL = 1; if (!$hotel_info->save()) { Yii::$app->session->setFlash('error', "修改失败!"); return $this->render('putawayHotel', ['data' => $data]); } if (!empty($request['channel_id']) && in_array(Yii::$app->params['ali']['relation_supplier_id'], $request['channel_id'])) { $send_data = array('hotel_id' => $hotel_info['HOTEL_ID']); $http_res = Yii::$app->runAction('hotel/ali/add-hotel', $send_data); $http_res = json_decode($http_res, true); } $msg = ''; $key = ''; // 如果进行了酒店推送,判断推送是否成功,本地建立直连关系 if (!empty($http_res) && $http_res['code'] != 0) { $key = 'error'; $msg = '修改上架成功, 推送失败!失败原因:' . $http_res['msg']; } elseif (!empty($http_res) && $http_res['code'] == 0) { $key = 'success'; $msg = '修改上架成功, 推送成功!'; } // 直连渠道为空,则只进行酒店上架,并未推送添加酒店 if (empty($request['channel_id'])) { $key = 'success'; $msg = '修改上架成功!'; } Yii::$app->session->setFlash($key, $msg); return $this->redirect('/hotel/hotel-room/up-down-list'); } } /********************修改上架酒店结束************************/ return $this->render('putawayHotel', ['data' => $data]); } /** * 开售酒店 * @param $hotels:根据酒店id拼接的字符串 */ public function actionOpenHotel($hotels) { $uid = Yii::$app->user->id; $res = OperaHotel::updateAll(['HOTEL_STATUS' => 1, 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'UPDATE_USER_ID' => $uid], 'HOTEL_ID in (' . $hotels . ')'); if ($res) { Yii::$app->session->setFlash('success', '开售成功!'); } else { Yii::$app->session->setFlash('error', '开售失败!'); } return $this->redirect(['up-down-list']); } /** * 停售酒店 */ public function actionCloseHotel($hotels) { $uid = Yii::$app->user->id; $res = OperaHotel::updateAll(['HOTEL_STATUS' => 0, 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'UPDATE_USER_ID' => $uid], 'HOTEL_ID in (' . $hotels . ')'); if ($res) { Yii::$app->session->setFlash('success', '停售成功!'); } else { Yii::$app->session->setFlash('error', '停售失败!'); } return $this->redirect(['up-down-list']); } public function actionSetBedType() { $request = Yii::$app->request->post(); $base_room = OperaHotelBaseRoom::findOne(['MAIN_ID' => $request['baseRoomId']]); $base_room->BED_TYPE = implode(',', $request['OperaHotelBaseRoom']['BED_TYPE']); $base_room->CURRENCY_CODE = implode(',', $request['OperaHotelBaseRoom']['CURRENCY_CODE']); if ($base_room->update()) Yii::$app->session->setFlash('success', '设置成功!'); else Yii::$app->session->setFlash('error', '设置失败!'); return $this->redirect(['/hotel/hotel-room/update-put-hotel', 'hotel_id' => $base_room['HOTEL_ID']]); } public function actionGetBaseRoom() { $request = Yii::$app->request->get(); $base_room = new OperaHotelBaseRoom(['scenario' => 'set_bed_type']); $bed_info = $base_room->getBedType($request['main_id']); return 1; } /** * User:Steven * Desc:房态管理-酒店列表 * @return string */ public function actionIndex() { $model = new OperaHotel(); if (Yii::$app->request->isPost || Yii::$app->request->isGet) { $model->HOTEL_STATUS = 1; $data['OperaHotel'] = is_null(Yii::$app->request->post('OperaHotel')) ? Yii::$app->request->get('OperaHotel') : Yii::$app->request->post('OperaHotel'); $model->load($data); } $dataProvider = $model->getHotel(); return $this->render('index', ['model' => $model, 'dataProvider' => $dataProvider]); } /** * User:Steven * Desc: * @return string */ public function actionRoomManager() { $model = new OperaHotel(); $dataProvider = $model->getHotel(); return $this->render('roomManager', ['dataProvider' => $dataProvider]); } /** * Notes:酒店预定页面 * User: Steven * Date: 2018/1/18 * Time: 13:15 * @return string */ public function actionBookOrderView() { $model = new OperaHotelRoom(); $data['model'] = $model; $dataProvider = $model->getHotelProduct(Yii::$app->request->queryParams); return $this->render('bookView', ['data' => $data, 'dataProvider' => $dataProvider]); } /** * Notes:CS系统酒店订单预订 * User: Steven * Date: 2018/1/24 * Time: 12:02 * @return array|string|\yii\web\Response * @throws \yii\db\Exception */ public function actionBookOrder() { $room_id = Yii::$app->request->get('room_id'); //查询下单的产品信息 $room_info = OperaHotelRoom::find() ->select(['a.ID', 'a.HOTEL_ID', 'a.PARENT_ROOM_TYPE', 'a.ROOM_TYPE', 'a.ROOM_NAME', 'a.BREAKFAST_INCLUDE', 'a.INNER_IDENTIFY', 'a.BED_TYPE', 'b.HOTEL_NAME', 'c.BED_TYPE', 'c.BASE_ROOM_NAME', 'b.SUPPLIER_ID', 'd.TRUE_NAME']) ->joinWith('operaHotel b') ->joinWith('operaHotelBaseRoom c') ->leftJoin('base_user d', 'b.PRINCIPAL=d.ID') ->where(['a.ID' => $room_id]) ->from('opera_hotel_room a')->asArray()->one(); $stock_info = []; $stock_arr[0] = ['stock_id' => 0, 'stock_count' => 0]; if (Yii::$app->request->isPjax) { $common_order = new CommonOrder(['scenario' => 'Product']); $params = Yii::$app->request->queryParams; $common_order->load($params); $stock_info = $common_order->getHotelStock(); $arr = []; foreach ($stock_info as $item) { $arr[] = $item['OVERSELL_FLAG'] == 1 ? $item['BUYOUT'] + $item['INQUIRY'] + $item['RETAIN'] : $item['REMAINING_COUNT']; } if (!empty($stock_info)) { $minStock = min($arr) > 30 ? 30 : min($arr); for ($i = 1; $i <= $minStock; $i++) { $stock_arr[$i] = [ 'stock_id' => $i, 'stock_count' => $i, ]; } } } if (Yii::$app->request->post()) { $params = Yii::$app->request->post(); $common_order = new CommonOrder(['scenario' => 'BookHotelOrder']); $common_order->CreateUserID = Yii::$app->user->id; $common_order->RoomPrices = $params['RoomPrices']; $common_order->DistribID = $params['OrderMain']['OUTSIDE_SALE_ORG_ID']; $common_order->RoomID = $params['OrderMain']['RUN_ID']; $common_order->HotelID = $params['OrderMain']['PARENT_PROD_ID']; $common_order->OrderID = $params['OrderMain']['OUTSIDE_ORDER_NO']; $common_order->CheckIn = $params['OrderMain']['PROD_START_STATION_DATE']; $common_order->CheckOut = $params['OrderMain']['PROD_END_STATION_DATE']; $common_order->RoomNum = $params['OrderMain']['room_count']; $common_order->ContactTel = $params['OrderMain']['CUSTOMER_MOBILE']; $common_order->NeedInvoice = 0; $common_order->OrderGuests = [0 => ['Name' => $params['OrderMain']['CUSTOMER_NAME']]]; $common_order->ContactTel = $params['OrderMain']['CUSTOMER_MOBILE']; $common_order->PayType = CommonOrder::PAY_TYPE_CREDIT; $common_order->PayTradeNo = []; $common_order->Currency = 'RMB'; foreach ($params['OrderComment']['COMMENT_TXT'] as $key => $item) { if (!empty($params['OrderComment']['COMMENT_TXT'])) { $comment[] = [ 'comment_type' => $key, 'comment' => $item ]; } } $common_order->Comment = $comment; $common_order->CommentType = $params['OrderMain']['Comment']; $common_order->TotalPrice = $params['OrderMain']['ORDER_PRICE']; $common_order->OrderTitleID = 0; //非组合单 ,组合单号为0 if ($common_order->validate()) { $res = $common_order->bookHotelOrder(); if ($res['code'] == CommonOrder::RETURN_CODE_SUCCESS) { if (isset($params['OrderMain']['SendStatus']) && $params['OrderMain']['SendStatus'] == 198) { $status_log = new OrderHtStatusLog(); //记录罚单的status数据 $status_log->ORDER_ID = $res['data']['order_id']; $status_log->ORDER_STATUS = OrderMain::ORDER_STATUS_WAITING_CONFIRM; $status_log->BEFORE_STATUS = OrderMain::ORDER_STATUS_WAITING_SEND; $status_log->CREATE_USER_ID = Yii::$app->user->id; $status_log->UPDATE_USER_ID = Yii::$app->user->id; if ($status_log->save()) { OrderMain::updateAll(['ORDER_STATUS' => OrderMain::ORDER_STATUS_WAITING_CONFIRM, 'UPDATE_TIME' => date('Y-m-d H:i:s', time())], ['and', ['CANCEL_FLAG' => 0], ['or', ['ORDER_ID' => $res['data']['order_id']], ['PARENT_ORDER_ID' => $res['data']['order_id']]]]); OrderMain::setMemcache($res['data']['order_id'], OrderMain::ORDER_STATUS_WAITING_CONFIRM, $room_info['SUPPLIER_ID'], $room_info['ROOM_NAME']); $common_order->setOrderLog($res['data']['order_id'], $room_info['PARENT_ROOM_TYPE'], $room_info['ROOM_TYPE'], "订单号为:" . $res['data']['order_id'] . '的状态由待发单变为待确认'); } else { Yii::$app->session->setFlash('warning', "预订成功,订单号:" . $res['data']['order_id'] . '自动发单失败,请在订单列表手动发单'); return $this->redirect(['/hotel/ordermain/index']); } } Yii::$app->session->setFlash('success', "预订成功,订单号:" . $res['data']['order_id']); return $this->redirect(['/hotel/ordermain/index']); } else { Yii::$app->session->setFlash('error', "预订失败,原因:" . $res['info']); } } else { $error = array_values($common_order->getFirstErrors()); Yii::$app->session->setFlash('error', "预订失败,原因:" . $error); } } $data['stock_info'] = $stock_info; $data['stock_arr'] = $stock_arr; $data['room_info'] = $room_info; $data['order'] = new OrderMain(['scenario' => 'csBook']); $data['order_comment'] = new OrderComment(); $data['channel'] = BaseSupplier::find() ->select(['DISTINCT(a.ID) ID', 'a.SUPPLIER_NAME']) ->joinWith('baseSupplierSale as b', false) ->from('base_supplier as a') ->where(['and', ['=', 'b.PARENT_TYPE', 25], ['=', 'a.SUPPLIER_TYPE', 301], ['=', 'a.cancel_flag', 0], ['=', 'a.IS_DISABLED', 0], ['=', 'b.cancel_flag', 0], ['or', ['=', 'main_corp_id', Yii::$app->user->identity->MAIN_CORP_ID], ['=', 'main_corp_id', 0], ], ])->asArray()->all(); return $this->render('bookOrder', ['data' => $data, 'dataProvider' => []]); } /** * @Author wanglg * @Desc异步验证客户端请求 * @return array */ public function actionValidateForm() { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $model = new OrderMain(['scenario' => 'csBook']); $model->load(Yii::$app->request->post()); return ActiveForm::validate($model); } /** * @Author wanglg * @Desc ajax验证同一渠道下的订单号是否重复 * @return string */ public function actionValidateOutOrder() { $request = Yii::$app->request->post(); if (empty($request['channel_id']) || empty($request['outside_order_id'])) { return json_encode(array('code' => 0, 'msg' => '')); } $res = OrderMain::findOne(['OUTSIDE_SALE_ORG_ID' => $request['channel_id'], 'OUTSIDE_ORDER_NO' => trim($request['outside_order_id']), 'ORDER_PROD_TYPE' => [25, 26], 'CANCEL_FLAG' => 0, 'ORDER_VALID_STATUS' => 1]); $data = empty($res) ? array('code' => 0, 'msg' => '') : array('code' => 1, 'info' => '渠道订单号已存在,请核实无误后再作预订'); return json_encode($data); } /**4 * Notes:临时刷订单数据 * User: Steven * Date: 2018/1/25 * Time: 0:03 * @return array * @throws \yii\db\Exception */ public function actionTemUpdate() { $sql = "select ORDER_ID,PARENT_PROD_ID,PROD_ID from order_main where PARENT_ORDER_ID=0 and ORDER_PROD_TYPE=25 and CREATE_TIME BETWEEN '2017-12-15 00:00:00' and '2017-12-20 00:00:00' and ORDER_STATUS<>148"; $connection = Yii::$app->db; $res = $connection->createCommand($sql)->queryAll(); foreach ($res as $item) { $res1 = OperaHotelRoom::findOne(['HOTEL_ID' => $item['PARENT_PROD_ID'], 'ROOM_TYPE' => $item['PROD_ID']]); if ($res1) { $COUNT = OrderMain::updateAll(['RUN_ID' => $res1->ID, 'RUN_BUS_SEAT_TYPE' => 2], ['and', ['CANCEL_FLAG' => 0], ['or', ['ORDER_ID' => $item['ORDER_ID']], ['PARENT_ORDER_ID' => $item['ORDER_ID']]]]); } } } /** * @Author wanglg * @Desc获取渠道商排序列表 * @return string */ public function actionOrderChannelList() { if (Yii::$app->request->isAjax) { $request = Yii::$app->request->post(); // 修改 $res = 0; if (!empty($request['seqId'])) { $model = OperaSort::findOne($request['seqId']); $model->seq = $request['seq']; $res = $model->update(); } else { $model_sort = new OperaSort(); $arr = array('hotel_id' => 0, 'base_room_id' => 0, 'room_id' => 0, 'channel_id' => $request['channel_id'], 'seq' => $request['seq']); if ($model_sort->load($arr, '') && $model_sort->validate()) { $res = $model_sort->save(); } } if ($res) { Yii::$app->session->setFlash('success', '修改排序成功'); } else { Yii::$app->session->setFlash('error', '修改排序失败'); } } // 获取渠道商列表 $model = new BaseSupplier(); $channel_list = $model->getOrderChannelList(); return $this->render('channel_order', ['data' => $channel_list]); } public function actionUpdateChannelSeq() { $request = Yii::$app->request->post(); // 修改 if (!empty($request['seqId'])) { $model = OperaSort::findOne($request['seqId']); $model->seq = $request['seq']; $res = $model->update(); } else { $model_sort = new OperaSort(); $arr = array('hotel_id' => 0, 'base_room_id' => 0, 'room_id' => 0, 'channel_id' => $request['channel_id'], 'seq' => $request['seq']); if ($model_sort->load($arr, '') && $model_sort->validate()) { $res = $model_sort->save(); } } $data = empty($res) ? array('type' => 'error', 'msg' => '修改排序失败') : array('type' => 'success', 'msg' => '修改排序成功'); return json_encode($data); } }