|
- <?php
-
- namespace backend\modules\hotel\controllers;
-
- //use common\models\BaseSupplier;
-
-
- use backend\modules\api\models\BaseUser;
- use backend\modules\hotel\models\Ali\AliOrder;
- use backend\modules\hotel\models\Ali\TopLogger;
- use backend\modules\hotel\models\CommonOrder;
- use backend\modules\hotel\models\CtripOrder;
- use backend\modules\hotel\models\OperaRoomDistrib;
- use backend\modules\hotel\models\OrderComment;
- use backend\modules\hotel\models\OrderHtExceptionList;
- use backend\modules\hotel\models\OrderInvoiceInfo;
- use common\components\zGridView;
- use common\components\zPhpExcel;
- use common\models\BaseSupplierLink;
- use Yii;
- use backend\modules\hotel\models\OrderMain;
- use yii\helpers\ArrayHelper;
- use yii\web\Controller;
- use yii\web\HttpException;
- use yii\web\NotFoundHttpException;
- use yii\filters\VerbFilter;
- use backend\modules\hotel\models\search\searchOrderMain;
- use yii\data\ArrayDataProvider;
- use common\models\BaseSupplier;
- use backend\modules\hotel\models\OperaHotelLog;
- use common\components\zOfficeWechat;
- use backend\modules\hotel\models\OrderChannelInfo;
- use backend\modules\hotel\models\SetService;
- use backend\modules\api\util\Util;
- use yii\db\Expression;
-
- /**
- * OrdermainController implements the CRUD actions for OrderMain model.
- */
- class OrdermainController extends BaseController
- {
- public $layout = "@backend/modules/motorcade/views/layouts/iframe_new";
- public $enableCsrfValidation = false;
-
- /**
- * @inheritdoc
- */
- public function behaviors()
- {
- return [
- 'verbs' => [
- 'class' => VerbFilter::className(),
- 'actions' => [
- 'delete' => ['POST'],
- ],
- ],
- ];
- }
-
- /**
- * Author:Steven
- * Desc:酒店订单列表
- * @return string
- */
- public function actionIndex()
- {
- $searchModel = new searchOrderMain();
- $searchModel->date_from = date('Y-m-d', strtotime('-3 days'));
- $searchModel->date_to = date('Y-m-d');
- $rs = $searchModel->search_list(Yii::$app->request->queryParams);
- $dataProvider = $rs['dataProvider'];
- $status_arr = $rs['status_arr'];
- $channel_status_arr = $rs['channel_status_arr'];
-
- $channel = BaseSupplier::find()
- ->select(['DISTINCT(a.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],
- ],
- ])
- // -> createCommand() -> getRawSql();
- ->asArray()->all();
-
- return $this->render('index', [
- 'searchModel' => $searchModel,
- 'dataProvider' => $dataProvider,
- 'status_arr' => $status_arr,
- 'channel_status_arr' => $channel_status_arr,
- 'model_list' => $channel,
- ]);
- }
-
- /**
- * Notes:接受渠道订单
- * User: Steven
- * Date: 2018/1/19
- * Time: 11:37
- * @param $id
- * @param $status //渠道的订单状态
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionReceiveChannel($id, $status)
- {
- $order = $this->findModel($id);
- if ($order->CHANNEL_ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- $order->CHANNEL_ORDER_STATUS = OrderMain::ORDER_CHANNEL_STATUS_ACCEPT;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- if (!$order->receiveChannel()) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '接单失败']);
- }
- //这里需要判断是哪个渠道 //直连的订单,需要推送状态
- if ($order->OUTSIDE_SALE_ORG_ID == Yii::$app->params['ali']['supplier_id']) { //阿里
- Yii::$app->runAction('hotel/ali/confirm-order', ['tid' => $order->OUTSIDE_ORDER_NO, 'opt_type' => '2']);
- } elseif ($order->OUTSIDE_SALE_ORG_ID == Yii::$app->params['ctrip']['supplier_id']) { //
- $interFace = OrderChannelInfo::findOne(['CANCEL_FLAG' => 0, 'ORDER_ID' => $order->ORDER_ID]);
- if ($interFace != null) {
- $params = [
- 'OrderID' => $order->OUTSIDE_ORDER_NO,//订单ID
- 'InterfaceConfirmNo' => $order->ORDER_CONFIRM_CODE,//酒店确认号
- 'OrderStatus' => CtripOrder::ORDER_STATUS_COMFIRMED,//订单状态 3:确认;4:拒绝
- 'InterFaceSendID' => $interFace->InterFaceSendID,//订单接口发送号
- 'ResultCode' => CtripOrder::RETURN_CODE_SUCCESS,
- 'Message' => 'Success',
- 'channelId' => Yii::$app->params['ctrip']['relation_supplier_id'],//渠道ID 携程传1
- ];
- $set = new SetService();
- $setDes = $set->setOrderStatus($params);
- if ($setDes['flag'] == false) {
- zOfficeWechat::sendMsg([
- 'agentid' => zOfficeWechat::SEND_HOTEL,
- 'title' => '直连订单状态推送失败:',
- 'msg' => '客服接单:' . $order->ORDER_ID . "\n接单成功,但状态推送失败,请先电话告知携程渠道该订单已接单,并告知技术人员予以解决",
- 'touser' => $this->_developerList]
- );
- }
-
- }
- } elseif ($order->OUTSIDE_SALE_ORG_ID == Yii::$app->params['wx_hotel']['supplier_id']) { //微信商城
- //推送微信商城
- $res = Util::confirmHotelOrder($order->ORDER_ID);
- if ($res['code'] != 0) {
- /*zOfficeWechat::sendMsg([
- 'agentid' => zOfficeWechat::SEND_HOTEL,
- 'title' => '直连订单状态推送失败:',
- 'msg' => '接单失败【微信商城订单】:' . $order->ORDER_ID . ' ' . $res['info'],
- 'touser' => $this->_developerList]
- );*/
- }
- }
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:拒绝渠道订单
- * User: Steven
- * Date: 2018/1/19
- * Time: 11:41
- * @param $id
- * @param $status
- * @param $msg默认为满房
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionRefuseChannel($id, $status, $msg = 101)
- {
- $order = $this->findModel($id);
- if ($order->CHANNEL_ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- $order->CHANNEL_ORDER_STATUS = OrderMain::ORDER_CHANNEL_STATUS_REJECT;
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- if ($order->ORDER_STATUS == OrderMain::ORDER_STATUS_WAITING_SEND) { //待发单 渠道状态:拒绝 订单状态:取消
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_CANCEL;
- $order->ORDER_VALID_STATUS = 0;
- if (!$order->refuseChannel(true)) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '拒单失败']);
- }
- } //待安排、已取消
- elseif ($order->ORDER_STATUS == OrderMain::ORDER_STATUS_WAITING_CONFIRM || $order->ORDER_STATUS == OrderMain::ORDER_STATUS_CANCEL) {
- if (!$order->refuseChannel(false)) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '拒单失败']);
- }
- }
- if ($order->OUTSIDE_SALE_ORG_ID == Yii::$app->params['ali']['supplier_id']) { //阿里
- Yii::$app->runAction('hotel/ali/confirm-order', ['tid' => $order->OUTSIDE_ORDER_NO, 'opt_type' => '1']);
- } elseif ($order->OUTSIDE_SALE_ORG_ID == Yii::$app->params['ctrip']['supplier_id']) {
- $interFace = OrderChannelInfo::findOne(['CANCEL_FLAG' => 0, 'ORDER_ID' => $order->ORDER_ID]);
- if ($interFace != null) {
- $params = [
- 'OrderID' => $order->OUTSIDE_ORDER_NO,//订单ID
- 'InterfaceConfirmNo' => '',//酒店确认号
- 'OrderStatus' => CtripOrder::ORDER_STATUS_REFUSED,//订单状态 3:确认;4:拒绝
- 'InterFaceSendID' => $interFace->InterFaceSendID,//订单接口发送号
- 'ResultCode' => $msg, // 101:满房 103 价格错误
- 'Message' => CtripOrder::RETURN_MSG[$msg],
- 'channelId' => Yii::$app->params['ctrip']['relation_supplier_id'],//渠道ID 携程传1
- ];
- $set = new SetService();
- $setDes = $set->setOrderStatus($params);
- if ($setDes['flag'] == false) {
- zOfficeWechat::sendMsg([
- 'agentid' => zOfficeWechat::SEND_HOTEL,
- 'title' => '直连订单状态推送失败:',
- 'msg' => '客服拒单:' . $order->ORDER_ID . "\n拒单成功,但状态推送失败,请先电话告知渠道该订单已接单,并告知技术人员予以解决",
- 'touser' => $this->_developerList]
- );
- }
-
- }
- } else { //微信商城 拒绝渠道订单 向微信发起订单取消
- $res = Util::interfaceZzcx($order->ORDER_ID, 3);//如果不是需要通知微信的渠道订单,则不发送通知
- if ($res['code'] != 0) {
- /*zOfficeWechat::sendMsg([
- 'agentid' => zOfficeWechat::SEND_HOTEL,
- 'title' => '直连订单状态推送失败:',
- 'msg' => '接单失败【微信商城订单】:' . $order->ORDER_ID . ' ' . $res['info'],
- 'touser' => $this->_developerList,
- ]
- );*/
- }
- }
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:订单列表-确认订单
- * User: Steven
- * Date: 2018/1/19
- * Time: 11:43
- * @param $id
- * @param $status
- * @param $msg
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionConfirm($id, $status, $msg)
- {
- $postMsg = Yii::$app->request->post("copyMsg");
- $order = $this->findModel($id);
- $tmp_channel_status = $order->CHANNEL_ORDER_STATUS;
- if ($order->ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_CONFIRMED;
- if ($order->DOCKING_TYPE == OrderMain::ORDER_TYPE_CHANNEL)
- $order->CHANNEL_ORDER_STATUS = OrderMain::ORDER_CHANNEL_STATUS_ACCEPT;
- $order->ORDER_CONFIRM_CODE = $postMsg;
- $order->ORDER_LEVEL = OrderMain::ORDER_LEVEL_SURE;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- if ($order->validate()) {
- //渠道状态已取消,不能确认
- if ($order->CHANNEL_ORDER_STATUS == OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL_CONFIRMED) {
- zOfficeWechat::sendMsg([
- 'agentid' => zOfficeWechat::SEND_HOTEL,
- 'title' => 'CS直连订单状态推送失败:',
- 'msg' => '渠道已取消订单:' . $order->ORDER_ID . "不能确认订单",
- 'touser' => $this->_developerList . $this->_messageList,
- ]
- );
-
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '订单无法确认,请联系客服发取消单']);
- }
-
- if (!$order->confirm()) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '确认失败']);
- } elseif ($order->DOCKING_TYPE == OrderMain::ORDER_TYPE_CHANNEL) { //直连
- //对接的订单,需要推送状态
- if ($order->OUTSIDE_SALE_ORG_ID == Yii::$app->params['ali']['supplier_id'] &&
- $tmp_channel_status == OrderMain::ORDER_CHANNEL_STATUS_WAITING) { //阿里
- //这里㤇判断是否已经接单,如果没有接单的话,需要推送状态,如果接单了,相当于确认状态已经推送携程了,不能重复推送
- Yii::$app->runAction('hotel/ali/confirm-order', ['tid' => $order->OUTSIDE_ORDER_NO, 'opt_type' => '2']);
- } elseif ($order->OUTSIDE_SALE_ORG_ID == Yii::$app->params['ctrip']['supplier_id']) {
- //这里不需要向阿里渠道那样,因为携程是需要确认号的,即使已经确认了,也要通过此接口,更新确认号,所以不需要判读
- $interFace = OrderChannelInfo::findOne(['CANCEL_FLAG' => 0, 'ORDER_ID' => $order->ORDER_ID]);
- if ($interFace != null) {
- $params = [
- 'OrderID' => $order->OUTSIDE_ORDER_NO,//订单ID
- 'InterfaceConfirmNo' => $order->ORDER_CONFIRM_CODE,//酒店确认号
- 'OrderStatus' => CtripOrder::ORDER_STATUS_COMFIRMED,//订单状态 3:确认;4:拒绝
- 'InterFaceSendID' => $interFace->InterFaceSendID,//订单接口发送号
- 'ResultCode' => CtripOrder::RETURN_CODE_SUCCESS,
- 'Message' => 'Success',
- 'channelId' => Yii::$app->params['ctrip']['relation_supplier_id'],//渠道ID 携程传
- ];
- $set = new SetService();
- $setDes = $set->setOrderStatus($params);
- if ($setDes['flag'] == false) {
- zOfficeWechat::sendMsg([
- 'agentid' => zOfficeWechat::SEND_HOTEL,
- 'title' => '直连订单状态推送失败:',
- 'msg' => '酒店已经确认了直连订单:' . $order->ORDER_ID . "\n但是直连状态推送失败,请手动接单。",
- 'touser' => $this->_developerList]
- );
- }
- }
- } elseif ($order->OUTSIDE_SALE_ORG_ID == Yii::$app->params['wx_hotel']['supplier_id']) { //微信商城
- $res = Util::confirmHotelOrder($order->ORDER_ID);
- if (!$res) {
- zOfficeWechat::sendMsg([
- 'agentid' => zOfficeWechat::SEND_HOTEL,
- 'title' => '直连订单状态推送失败:',
- 'msg' => '接单失败【微信商城订单】:' . $order->ORDER_ID . ' ' . $res['info'],
- 'touser' => $this->_developerList]
- );
- }
- }
- }
- } else {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => $order->getErrors()]);
- }
- $order->resetMem(); //将缓存中用于提醒酒店处理订单的数据删除
- $logger = new TopLogger();
- $logger->log([date("Y-m-d H:i:s"), 'cs后台确认,清除缓存,订单号:' . $order->ORDER_ID . ',订单状态:' . $order->ORDER_STATUS . "\n" . PHP_EOL], 'ali/error');
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:发单到酒店
- * User: Steven
- * Date: 2018/1/19
- * Time: 11:44
- * @param $id
- * @param $status
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionSendHotel($id, $status)
- {
- $order = $this->findModel($id);
- if ($order->ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_WAITING_CONFIRM; //变为待安排(待确认)
- $order->ORDER_LEVEL = OrderMain::ORDER_LEVEL_SURE;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- if (!$order->sendOrder()) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '发单失败']);
- }
-
- $order->setMemcache($order->ORDER_ID, OrderMain::ORDER_STATUS_WAITING_CONFIRM, $order->PROD_TOP_ORG_ID, $order->PROD_NAME);
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:取消单
- * User: Steven
- * Date: 2018/1/17
- * Time: 18:32
- * @param $id
- * @param $status
- * @param $msg
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionCancelOrder($id, $status, $msg)
- {
- $order = $this->findModel($id);
- if ($order->ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- //直连-渠道申请取消-订单待安排
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- $order->ORDER_VALID_STATUS = 0;
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- if ($order->DOCKING_TYPE == OrderMain::ORDER_TYPE_CHANNEL && //直连订单
- ($order->CHANNEL_ORDER_STATUS == OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL || $order->CHANNEL_ORDER_STATUS == OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL_CONFIRMED) //渠道接单状态 申请取消 已同意取消
- && ($order->ORDER_STATUS == OrderMain::ORDER_STATUS_WAITING_CONFIRM || $order->ORDER_STATUS == OrderMain::ORDER_STATUS_WAITING_SEND)) { //订单状态是待确认 待发单
- $order->ORDER_LEVEL = OrderMain::ORDER_LEVEL_CANCEL;
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_CANCEL;
- $order->CHANNEL_ORDER_STATUS = OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL_CONFIRMED;
- if (!$order->cancelOrder($msg)) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '取消失败']);
- }
-
- $order->resetMem();
- } else { //非直连订单
- if ($order->ORDER_STATUS != 313) {
- $order->ORDER_LEVEL = OrderMain::ORDER_LEVEL_CANCEL;
- }
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_CANCEL;
- if (!$order->refuse($msg, 'cancel_order')) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '取消失败']);
- }
- if ($status == OrderMain::ORDER_STATUS_CHANGING) {
- $order->setMemcache($order->ORDER_ID, OrderMain::ORDER_STATUS_CANCEL_BEFORE_CONFIRM, $order->PROD_TOP_ORG_ID, $order->PROD_NAME);
- } else {
- $order->resetMem();
- }
- }
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:订单退改
- * User: Steven
- * Date: 2018/1/19
- * Time: 11:44
- * @param $id
- * @param $status
- * @param $msg
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionBackChange($id, $status, $msg)
- {
- $order = $this->findModel($id);
- if ($order->ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_CHANGING;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- if (!$order->backChange($msg)) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '退改失败']);
- }
- $order->setMemcache($order->ORDER_ID, OrderMain::ORDER_STATUS_WAITING_SEND, $order->PROD_TOP_ORG_ID, $order->PROD_NAME);
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:向酒店供应商申请退单
- * User: Steven
- * Date: 2018/1/19
- * Time: 11:45
- * @param $id
- * @param $status
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionCancelConfirming($id, $status)
- {
- $order = $this->findModel($id);
- if ($order->ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- $order->ORDER_STATUS = OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL_WAITING_CONFIRM;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- if (!$order->cancelConfirming()) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '申请退单失败']);
- }
- $order->setMemcache($order->ORDER_ID, OrderMain::ORDER_STATUS_CANCEL_BEFORE_CONFIRM, $order->PROD_TOP_ORG_ID, $order->PROD_NAME);
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:取消退改
- * User: Steven
- * Date: 2018/1/19
- * Time: 11:45
- * @param $id
- * @param $status
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionCancelBackChange($id, $status)
- {
- $order = $this->findModel($id);
- if ($order->ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_CONFIRMED;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- if (!$order->cancelBackChange()) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '取消退改失败']);
- }
- // $order->setMemcache($order->ORDER_ID, OrderMain::ORDER_STATUS_CANCEL_BEFORE_CONFIRM, $order->PROD_TOP_ORG_ID, $order->PROD_NAME);
- $order->resetMem();
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:同意退单
- * User: Steven
- * Date: 2018/1/18
- * Time: 11:57
- * @param $id
- * @param $status
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionAgreeCancel($id, $status)
- {
- $order = $this->findModel($id);
- if ($order->ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->ORDER_LEVEL = 2;
- $order->ORDER_VALID_STATUS = 0;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- $flag = true;
- if ($order->DOCKING_TYPE == OrderMain::ORDER_TYPE_CHANNEL && $order->ORDER_STATUS == OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL_WAITING_CONFIRM) { //待退单确认
- $order->CHANNEL_ORDER_STATUS = OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL_CONFIRMED;
- $flag = false;
- }
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_CANCEL;
- if (!$order->agreeCancel($flag, 'agree-cancel')) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '同意退单失败']);
- }
- $order->resetMem();
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Notes:拒绝退单
- * User: Steven
- * Date: 2018/1/18
- * Time: 11:36
- * @param $id
- * @param $status
- * @return string
- * @throws NotFoundHttpException
- * @throws \yii\db\Exception
- */
- public function actionRefuseCancel($id, $status)
- {
- $order = $this->findModel($id);
- if ($order->ORDER_STATUS != $status) {
- return \GuzzleHttp\json_encode(['code' => 2, 'msg' => '订单状态已经发生变化,请刷新后再操作']);
- }
- $order->ORDER_STATUS = OrderMain::ORDER_STATUS_CONFIRMED;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- $order->UPDATE_TIME = date('Y-m-d H:i:s', time());
- if ($status == OrderMain::ORDER_TYPE_CHANNEL && $status == OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL_WAITING_CONFIRM) { //待退单确认
- $order->CHANNEL_ORDER_STATUS = OrderMain::ORDER_CHANNEL_STATUS_APPLY_CANCEL_REJECT;
- }
- if (!$order->refuseCancel()) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '拒绝退单失败']);
- }
-
- $order->resetMem();
-
- return \GuzzleHttp\json_encode(['code' => 0]);
- }
-
- /**
- * Steven
- * 获取该供应商下所有的邮件信息
- */
- public function actionGetEmailInfo($supplier_id)
- {
- $emails = BaseSupplierLink::find()->select(['LINK_NAME', 'EMAIL'])->where(['SUPPLIER_ID' => $supplier_id, 'CANCEL_FLAG' => 0])->asArray()->all();
-
- return \GuzzleHttp\json_encode(['code' => 0, 'data' => $emails]);
- }
-
- /**
- * Steven
- * 发送 邮件
- */
- public function actionSendEmail($id, $msg)
- {
- $order = $this->findModel($id);
- $filename = "【" . $order->ORDER_ID . "】" . $order->CUSTOMER_NAME . $order->PROD_START_STATION_DATE . ".doc";
- $html = $order->wordHtml($order->ORDER_LEVEL);
- $mail = Yii::$app->mailer->compose();
- /*$email = BaseSupplierLink::find()->select(['EMAIL'])->where(['SUPPLIER_ID' => $order->PROD_TOP_ORG_ID, 'CANCEL_FLAG' => 0])->asArray()->one();
- if (empty($email)) {
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '邮件发送失败,供应商邮件未设置!']);
- }*/
- $email_arr = explode(',', $msg);
- $mail->setTo($email_arr);
- // $mail->setTo('shifp@zhizhuchuxing.com');
- $mail->setSubject($filename);
- $mail->attachContent($html, ['fileName' => $filename, 'contentType' => 'text/plain']);
- // $mail->setTextBody("<b>酒店确认单:</b><br>订单号:{$order->ORDER_ID}<br>烦请尽快确认"); //发布纯文字文本
- $mail->setHtmlBody("<br><b>酒店确认单:</b><br>订单号:{$order->ORDER_ID}<br>烦请尽快确认"); //发布可以带html标签的文本
- if ($mail->send()) {
- $seq_id = ($order->RUN_BUS_SEAT_SEQ_ID) == -1 ? 1 : $order->RUN_BUS_SEAT_SEQ_ID + 1;
- OrderMain::updateAll(['RUN_BUS_SEAT_SEQ_ID' => $seq_id, 'UPDATE_TIME' => date('Y-m-d H:i:s', time())],
- ['and', ['CANCEL_FLAG' => 0], ['or', ['ORDER_ID' => $order->ORDER_ID], ['PARENT_ORDER_ID' => $order->ORDER_ID]]]);
- $order->saveLog('send_email_success', false, $msg);
-
- return \GuzzleHttp\json_encode(['code' => 0, 'msg' => '邮件发送成功']);
- } else {
- OrderMain::updateAll(['RUN_BUS_SEAT_SEQ_ID' => -1, 'UPDATE_TIME' => date('Y-m-d H:i:s', time())],
- ['and', ['CANCEL_FLAG' => 0], ['or', ['ORDER_ID' => $order->ORDER_ID], ['PARENT_ORDER_ID' => $order->ORDER_ID]]]);
- $order->saveLog('send_email_error', false, $msg);
-
- return \GuzzleHttp\json_encode(['code' => 1, 'msg' => '邮件发送失败,请手动发邮件到酒店!']);
- }
- }
-
- /**
- * Author:Steven
- * Desc:酒店订单白名单处理
- * @return string
- */
- public function actionOrderWhiteList()
- {
- $exception = new OrderHtExceptionList();
- if (Yii::$app->request->isPost) {
- $param = Yii::$app->request->post();
- if ($exception->load($param) && $exception->save()) {
- // 保存操作日志
- $order_model = OrderMain::findOne(['ORDER_ID' => $param['OrderHtExceptionList']['order_id'], 'CANCEL_FLAG' => 0, 'PARENT_ORDER_ID' => 0]);
- $order_model->saveLog('add_white_list', false, OrderHtExceptionList::WHITE_ARRAY[$param['OrderHtExceptionList']['status']]);
-
- return '<script>z.pjaxFinish("success", "添加成功!", "#float-div");$("#search-btn").trigger(\'click\');</script>';
- } else {
- Yii::$app->session->setFlash('error', "添加失败!");
- }
- }
-
- return $this->render('_order_whitelist', [
- 'model' => $exception,
- ]);
- }
-
- /**
- * @Author wanglg
- * @Desc 获取订单备注信息,用于弹框显示
- * @return string
- */
- public function actionGetComment()
- {
- $request = Yii::$app->request->post();
- $comment = new OrderComment();
- $comment_list = $comment->getCommentList($request['order_id']);
-
- $data['comment_list'] = $comment_list;
-
- return json_encode($data);
- }
-
- /**
- * @Author wanglg
- * @Desc 修改确认号form框
- * @return string
- */
- public function actionUpdateConfirm()
- {
- $model = new OrderMain(['scenario' => 'upConfirm']);
- $request = Yii::$app->request->get();
-
- return $this->render('_updateConfirmCode', [
- 'model' => $model,
- 'hidden' => $request['param'],
- ]);
- }
-
- /**
- * @Author wanglg
- * @Desc 获取订单发票信息,用于弹框显示
- * @return string
- */
- public function actionGetInvoice()
- {
- $request = Yii::$app->request->post();
- $model = new OrderInvoiceInfo();
- $invoice_list = $model->getInvoiceInfo($request['order_id']);
- $invoice_list[0]['NeedInvoice'] = OrderInvoiceInfo::NEEDINVOICE[$invoice_list[0]['NeedInvoice']];
- $invoice_list[0]['EarllyPrepare'] = OrderInvoiceInfo::EARLLYPREPARE[$invoice_list[0]['EarllyPrepare']];
- $invoice_list[0]['PostType'] = OrderInvoiceInfo::POSTTYPE[$invoice_list[0]['PostType']];
- $invoice_list[0]['InvoiceType'] = OrderInvoiceInfo::INVOICETYPE[$invoice_list[0]['InvoiceType']];
- $invoice_list[0]['Status'] = OrderInvoiceInfo::ORDER_STATUS_DESC[$invoice_list[0]['Status']];
- $data['invoice_list'] = $invoice_list;
-
- return json_encode($data);
- }
-
- /**
- * @Author wanglg
- * @Desc 录入订单发票信息页面
- * @return bool|string
- */
- public function actionAddInvoiceView()
- {
- if (empty(Yii::$app->request->get('order_id')) || empty(Yii::$app->request->get('channel_id'))) {
- return json_encode(array('code' => '1', 'msg' => '参数有误'));
- }
-
- $model = OrderInvoiceInfo::findOne(['OrderID' => Yii::$app->request->get('order_id')]);
-
- if (empty($model)) {
- // 用户选择发票类型,用于显示赋值
- $type = Yii::$app->request->get('type') == 2 ? 2 : 1;
- $model = Yii::$app->request->get('type') == 2 ? new OrderInvoiceInfo(['scenario' => 'exclusive']) : new OrderInvoiceInfo(['scenario' => 'showInvoice']);
- $model->InvoiceType = $type;
- $model->ChannelId = Yii::$app->request->get('channel_id');
- } else {
- $scenario = $model->InvoiceType == 1 ? 'addInvoice' : 'exclusive';
- $model->scenario = $scenario;
- }
-
- return $this->render('_add_invoice', ['model' => $model, 'order_id' => Yii::$app->request->get('order_id')]);
- }
-
- /**
- * @Author wanglg
- * @Desc 录入发票操作
- */
- public function actionAddInvoice()
- {
- $request = Yii::$app->request->post();
- $model = OrderInvoiceInfo::findOne(['OrderID' => $request['OrderInvoiceInfo']['OrderID']]);
-
- if (empty($model)) {
- $msg = '添加发票成功!';
- $logDesc = '添加发票';
- $model = new OrderInvoiceInfo();
- $model->CreateUseId = Yii::$app->user->id;
- } else {
- $msg = '修改发票信息成功';
- $logDesc = '修改发票';
- }
-
- if ($model->load($request) && $model->validate()) {
- $model->Status = 1;
- if ($model->save()) {
- // 添加或修改发票信息成功
- Yii::$app->session->setFlash('success', $msg);
- // 记录日志
- $model->addInvoice($logDesc);
-
- return '<script>z.pjaxFinish("success", "' . $msg . '", "#float-div2");$("#search-button").trigger(\'click\');</script>';
- }
- }
-
- Yii::$app->session->setFlash('error', "添加发票失败!");
-
- return $this->renderPartial('_add_invoice', [
- 'model' => $model,
- 'order_id' => $request['OrderInvoiceInfo']['OrderID'],
- ]);
- }
-
- /**
- * @Author wanglg
- * @Desc 申请开发票,修改发票信息状态
- * @return string
- */
- public function actionUpdateInvoiceStatus()
- {
- $order_id = Yii::$app->request->get('id');
- $user_id = Yii::$app->user->id;
- if (empty($order_id)) {
- return json_encode(array('code' => 1, 'msg' => '申请参数不能为空'));
- }
-
- if (empty($user_id)) {
- return json_encode(array('code' => 1, 'msg' => '请重新登录再提交申请'));
- }
-
- $model = OrderInvoiceInfo::findOne(['OrderID' => $order_id, 'Status' => [1, 5]]);
- $user = BaseUser::findOne(['ID' => $user_id, 'CANCEL_FLAG' => 0]);
- if (empty($model)) {
- return json_encode(array('code' => 2, 'msg' => '当前发票不允许执行该操作'));
- }
-
- $model->Status = 2;
- $model->ApplyUser = $user_id;
- $model->CreateTime = date('Y-m-d H:i:s');
- $update = $model->update();
- if ($update) {
- // 记录开票日志
- $model->applyInvoice();
- zOfficeWechat::sendMsg([
- 'agentid' => zOfficeWechat::SEND_HOTEL,
- 'title' => '【发票通知】您有一个新的发票任务等待开具:',
- 'msg' => "关联订单号:" . $order_id . "\n申请人:" . $user->TRUE_NAME . "\n申请时间:" . date('Y-m-d H:i:s') . "\n请至CS系统财务管理-发票管理进行操作",
- 'touser' => $this->_financeList,
- // 'touser' => $this->_private,
- ]);
- }
- $res = $update == 0 ? json_encode(array('code' => 3, 'msg' => '申请开票失败,请重新申请')) : json_encode(array('code' => 0, 'msg' => '申请开票成功'));
-
- return $res;
- }
-
- /**
- * @Author wanglg
- * @Desc 修改确认号
- * @return string
- */
- public function actionUpdateConfirmCode()
- {
- $request = Yii::$app->request->post();
- $uid = Yii::$app->user->id;
- $order = $this->findModel($request['order_id']);
- $count = OrderMain::find()
- ->select(['count(*) as count'])->where(['ORDER_ID' => $request['order_id'], 'ORDER_STATUS' => $request['order_status'], 'CHANNEL_ORDER_STATUS' => $request['channel_order_status'], 'CANCEL_FLAG' => 0])
- // -> createCommand() -> getRawSql();
- ->asArray()->one();
-
- if ($count['count'] == 0) {
- Yii::$app->session->setFlash('error', "订单状态已改变,请重新刷新页面");
-
- return '<script>z.pjaxFinish("error", "订单状态已改变,请重新刷新页面", "#float-div");</script>';
- }
-
- $res = OrderMain::updateAll(['ORDER_CONFIRM_CODE' => $request['OrderMain']['ORDER_CONFIRM_CODE'], 'UPDATE_USER_ID' => $uid, 'UPDATE_TIME' => date('Y-m-d H:i:s')], ['and', 'CANCEL_FLAG= 0',
- ['or', 'ORDER_ID=' . $request['order_id'], 'PARENT_ORDER_ID=' . $request['order_id']]]);
- !$res ? Yii::$app->session->setFlash('error', "修改确认号失败!") : Yii::$app->session->setFlash('success', "修改确认号成功!");
-
- if ($res) {
- $order->saveLog('update_confirm', false, $request['OrderMain']['ORDER_CONFIRM_CODE']);
-
- return '<script>z.pjaxFinish("success", "修改成功", "#float-div");$("#search-button").trigger(\'click\');</script>';
- }
- }
-
- /**
- * @Author wanglg
- * @Desc 获取订单详情
- * @param $id
- * @return string
- */
- public function actionOrderDetail($id)
- {
- $request = Yii::$app->request->post();
- $model = new OrderMain();
- $supplier = new \backend\modules\api\models\BaseSupplier();
- $channel_list = $supplier->getChannelList();
- $data = $model->orderDetail($id);
- $order_log_model = new OperaHotelLog();
- $order_logs = $order_log_model->getOrderLog($id);
- $main_order = array();
-
- // 加载库存,通过pjax实现
- if (Yii::$app->request->isAjax) {
- $request = Yii::$app->request->get();
-
- // 查询库存信息
- $orderModel = new CommonOrder(['scenario' => 'Product']);
- if ($orderModel->load($request, '') && $orderModel->validate()) {
- $data['hotel_child_order_detail'] = $orderModel->getHotelStock();
- }
- }
-
- foreach ($data['data'] as $order) {
- if ($order['PARENT_ORDER_ID'] == 0) {
- $main_order = $order;
- }
- }
-
- return $this->render('orderDetail', [
- 'model' => $model,
- 'channel_list' => $channel_list,
- 'data' => $data,
- 'child_order' => $data['hotel_child_order_detail'],
- 'main_order' => $main_order,
- 'log' => $order_logs,
- ]);
- }
-
- /**
- * @Author wanglg
- * @Desc 修改入住需求
- * @return string
- */
- public function actionUpdateCheckIn()
- {
- $param = Yii::$app->request->post();
- $avail_data = array(
- 'HotelID' => $param['hotel_id'],
- 'RoomID' => $param['room_id'],
- 'RoomNum' => $param['room_count'],
- 'CheckIn' => $param['start_date'],
- 'CheckOut' => $param['end_date'],
- 'DistribID' => $param['org_id'],
- 'CreateUserID' => $param['user_id'],
- 'RoomPrices' => 0,
- 'IfCheckPrice' => false,
- );
- $newOrder = new CommonOrder(['scenario' => 'CheckRoomAvail']);
- if (!$newOrder->load($avail_data, '') || !$newOrder->validate()) {
- $error = array_values($newOrder->getFirstErrors());
-
- return json_encode(['code' => 1, 'info' => $error[0]]);
- }
-
- $is_avail = $newOrder->checkRoomAvail();
- if ($is_avail['code'] != 0) {
- return json_encode(['code' => 2, 'info' => $is_avail['info']]);
- }
-
- $room_price = array();
- foreach ($is_avail['data']['room_price'] as $k => $room) {
- $room_price[] = array('RunDate' => $room['run_date'], 'Price' => $room['price']);
- }
- // 客人信息
- $uncus_names = explode(' ', $param['customer_name']);
- $all_cus_name = array_values(array_filter($uncus_names));
- $split_customer = array_map("self::customer", $all_cus_name);
-
- $make_order_arr = array(
- 'CreateUserID' => Yii::$app->user->id,
- 'ZZ_ORDER_ID' => $param['order_id'], //蜘蛛订单号
- 'OrderID' => $param['org_num'], //渠道订单号
- 'HotelID' => $param['hotel_id'], //酒店ID
- 'RoomID' => $param['room_id'], //房型ID
- 'DistribID' => $param['org_id'],//渠道ID
- 'RoomNum' => $param['room_count'], //房间数量
- 'CheckIn' => $param['start_date'], //入住日期
- 'CheckOut' => $param['end_date'], //离店日期,
- 'TotalPrice' => $is_avail['data']['total_price'],//订单总价
- 'Currency' => 'RMB', //币种
- 'ContactName' => $param['customer_name'],//联系人姓名
- 'ContactTel' => $param['customer_mobile'], //联系人电话
- 'OrderGuests' => $split_customer, //入住人信息
- 'Comment' => $param['customer_memo'], //客人备注
- 'NeedInvoice' => 0,
- 'InvoiceInfos' => array(),
- 'RoomPrices' => $room_price,
- );
-
- $newUpdateOrder = new CommonOrder(['scenario' => 'UpdateHotelOrder']);
- if ($newUpdateOrder->load($make_order_arr, '')) {
- $res = $newUpdateOrder->updateHotelOrder();
-
- return json_encode($res);
- } else {
- $error = array_values($newOrder->getFirstErrors());
-
- return json_encode(['code' => 3, 'info' => $error[0]]);
- }
- }
-
- /**
- * @Author wanglg
- * @Desc 客人信息处理
- * @param $item
- * @return array
- */
- public static function customer($item)
- {
- return array('Name' => $item);
- }
-
- /**
- * @Author wanglg
- * @Desc 修改订单客户信息
- * @return string
- */
- public function actionUpdateCustomer()
- {
- $request = Yii::$app->request->post();
- // $main_order = OrderMain::findOne(['ORDER_ID' => $request['OrderMain']['ORDER_ID'], 'CANCEL_FLAG' => 0, 'PARENT_ORDER_ID' => 0, 'ORDER_PROD_TYPE' => OrderMain::ORDER_PROD_TYPE_MAIN]);
- $main_order = OrderMain::find()
- ->select(['order_main.*', 'opera_hotel_room.PARENT_ROOM_TYPE', 'opera_hotel_room.HOTEL_ID', 'opera_hotel_room.ROOM_TYPE'])
- ->joinWith('operaHotelRoom')
- ->from('order_main')
- ->where(['ORDER_ID' => $request['OrderMain']['ORDER_ID'], 'order_main.CANCEL_FLAG' => 0, 'PARENT_ORDER_ID' => 0, 'ORDER_PROD_TYPE' => OrderMain::ORDER_PROD_TYPE_MAIN])
- ->asArray()->one();
- if (in_array($main_order['ORDER_STATUS'], array(198, 382))) {
- $update_res = OrderMain::updateAll(['CUSTOMER_NAME' => $request['OrderMain']['CUSTOMER_NAME'], 'CUSTOMER_MOBILE' => $request['OrderMain']['CUSTOMER_MOBILE'],
- 'UPDATE_USER_ID' => Yii::$app->user->id, 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'ORDER_LEVEL' => 1],
- ['and', 'CANCEL_FLAG=0', 'ORDER_PROD_TYPE in (25, 26)', ['or', 'ORDER_ID=' . $request['OrderMain']['ORDER_ID'], 'PARENT_ORDER_ID=' . $request['OrderMain']['ORDER_ID']]]);
- } else {
- $update_res = OrderMain::updateAll(['CUSTOMER_NAME' => $request['OrderMain']['CUSTOMER_NAME'], 'CUSTOMER_MOBILE' => $request['OrderMain']['CUSTOMER_MOBILE'],
- 'UPDATE_USER_ID' => Yii::$app->user->id, 'UPDATE_TIME' => date('Y-m-d H:i:s')],
- ['and', 'CANCEL_FLAG=0', 'ORDER_PROD_TYPE in (25, 26)', ['or', 'ORDER_ID=' . $request['OrderMain']['ORDER_ID'], 'PARENT_ORDER_ID=' . $request['OrderMain']['ORDER_ID']]]);
- }
-
- // 修改成功则添加日志记录
- if ($update_res) {
- $log_desc = "修改客人信息:修改客人信息【{$main_order['CUSTOMER_NAME']}】为【{$request['OrderMain']['CUSTOMER_NAME']}】";
- $log_arr = array('CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'LOG_TYPE' => OperaHotelLog::LOG_TYPE_ORDER, 'HOTEL_ID' => $main_order['HOTEL_ID'],
- 'PARENT_ROOM_TYPE' => $main_order['PARENT_ROOM_TYPE'], 'ROOM_TYPE' => $main_order['ROOM_TYPE'], 'LOG_DESC' => $log_desc, 'ORDER_ID' => $request['OrderMain']['ORDER_ID']);
- $order_log = new OperaHotelLog();
- if ($order_log->load($log_arr, '') && $order_log->validate()) {
- if (!$order_log->save()) {
- throw new \Exception('记录日志失败!');
- }
- }
- }
-
- empty($update_res) ? Yii::$app->session->setFlash('error', '修改客人信息失败') : Yii::$app->session->setFlash('success', '修改客人信息成功');
-
- return $this->redirect(['/hotel/ordermain/order-detail', 'id' => $request['OrderMain']['ORDER_ID']]);
- }
-
- /**
- * @Author wanglg
- * @Desc 添加备注
- * @return
- */
- public function actionComment()
- {
- $request = Yii::$app->request->get();
- if (empty($request['comment_txt'])) {
- return false;
- }
-
- // 查询主订单
- $main_order = OrderMain::find()
- ->select(['order_main.*', 'opera_hotel_room.PARENT_ROOM_TYPE', 'opera_hotel_room.HOTEL_ID', 'opera_hotel_room.ROOM_TYPE'])
- ->joinWith('operaHotelRoom')
- ->from('order_main')
- ->where(['ORDER_ID' => $request['order_id'], 'order_main.CANCEL_FLAG' => 0, 'PARENT_ORDER_ID' => 0, 'ORDER_PROD_TYPE' => OrderMain::ORDER_PROD_TYPE_MAIN])
- ->asArray()->one();
- $comment_arr = array('ORDER_ID' => $request['order_id'], 'COMMENT_TYPE' => $request['comment_type'], 'COMMENT_TXT' => $request['comment_txt'],
- 'CANCEL_FLAG' => 0, 'CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'UPDATE_USER_ID' => 0, 'UPDATE_TIME' => '0');
-
- if ($request['comment_type'] == 1 && in_array($main_order['ORDER_STATUS'], array(198, 382))) {
- OrderMain::updateAll(['UPDATE_USER_ID' => Yii::$app->user->id, 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'ORDER_LEVEL' => 1],
- ['and', 'CANCEL_FLAG=0', 'ORDER_PROD_TYPE in (25, 26)', ['or', 'ORDER_ID=' . $request['order_id'], 'PARENT_ORDER_ID=' . $request['order_id']]]);
- }
- $comment = new OrderComment();
-
- if ($comment->load($comment_arr, '') && $comment->validate()) {
- if (!$comment->save()) {
- Yii::$app->session->setFlash('error', '添加备注失败');
- } else {
- Yii::$app->session->setFlash('success', '添加备注成功');
- }
- }
-
- $log_type = $request['comment_type'] == 0 ? '内部备注' : '公共备注';
- // 保存添加备注日志
- $log_desc = "添加备注:【{$log_type}】 【{$request['comment_txt']}】";
- $log_arr = array('CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'LOG_TYPE' => OperaHotelLog::LOG_TYPE_ORDER, 'HOTEL_ID' => $main_order['HOTEL_ID'],
- 'PARENT_ROOM_TYPE' => $main_order['PARENT_ROOM_TYPE'], 'ROOM_TYPE' => $main_order['ROOM_TYPE'], 'LOG_DESC' => $log_desc, 'ORDER_ID' => $request['order_id']);
- $order_log = new OperaHotelLog();
- if ($order_log->load($log_arr, '') && $order_log->validate()) {
- if (!$order_log->save()) {
- throw new \Exception('记录日志失败!');
- }
- }
-
- return $this->redirect(['/hotel/ordermain/order-detail', 'id' => $request['order_id']]);
- }
-
- /**
- * @Author wanglg
- * @Desc 删除备注
- * @return int|\yii\web\Response
- */
- public function actionDelComment()
- {
- $request = Yii::$app->request->get();
- $order = OrderComment::findOne($request['comment_id']);
- $order->CANCEL_FLAG = 1;
- $order->UPDATE_USER_ID = Yii::$app->user->id;
- $order->UPDATE_TIME = date('Y-m-d H:i:s');
-
- $main_order = OrderMain::find()
- ->select(['order_main.*', 'opera_hotel_room.PARENT_ROOM_TYPE', 'opera_hotel_room.HOTEL_ID', 'opera_hotel_room.ROOM_TYPE'])
- ->joinWith('operaHotelRoom')
- ->from('order_main')
- ->where(['ORDER_ID' => $request['order_id'], 'order_main.CANCEL_FLAG' => 0, 'PARENT_ORDER_ID' => 0, 'ORDER_PROD_TYPE' => OrderMain::ORDER_PROD_TYPE_MAIN])
- ->asArray()->one();
-
- // 如果是公共备注生成修改单
- if ($order->COMMENT_TYPE == 1 && in_array($main_order['ORDER_STATUS'], array(198, 382))) {
- OrderMain::updateAll(['UPDATE_USER_ID' => Yii::$app->user->id, 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'ORDER_LEVEL' => 1],
- ['and', 'CANCEL_FLAG=0', 'ORDER_PROD_TYPE in (25, 26)', ['or', 'ORDER_ID=' . $order->ORDER_ID, 'PARENT_ORDER_ID=' . $order->ORDER_ID]]);
- }
-
- if (!$order->update()) {
- Yii::$app->session->setFlash('error', '删除失败');
- } else {
- Yii::$app->session->setFlash('success', '删除成功');
- }
-
- $log_type = $request['comment_type'] == 0 ? '内部备注' : '公共备注';
- // 保存添加备注日志
- $log_desc = "删除备注:【{$log_type}】 【{$order['COMMENT_TXT']}】";
- $log_arr = array('CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'LOG_TYPE' => OperaHotelLog::LOG_TYPE_ORDER, 'HOTEL_ID' => $main_order['HOTEL_ID'],
- 'PARENT_ROOM_TYPE' => $main_order['PARENT_ROOM_TYPE'], 'ROOM_TYPE' => $main_order['ROOM_TYPE'], 'LOG_DESC' => $log_desc, 'ORDER_ID' => $request['order_id']);
- $order_log = new OperaHotelLog();
- if ($order_log->load($log_arr, '') && $order_log->validate()) {
- if (!$order_log->save()) {
- throw new \Exception('记录日志失败!');
- }
- }
-
- return $this->redirect(['/hotel/ordermain/order-detail', 'id' => $request['order_id']]);
- }
-
- /**
- * @Author wanglg
- * @Desc修改采购价
- * @return string
- */
- public function actionUpdatePurchasePrice()
- {
- $request = Yii::$app->request->post();
- $order_main = OrderMain::findOne(['ORDER_ID' => $request['order_id'], 'CANCEL_FLAG' => 0]);
- $data = json_decode($request['data'], true);
- $transa = Yii::$app->db->beginTransaction();
- try {
- if (in_array($order_main['ORDER_STATUS'], array(198, 382))) // 待确认 - 退改中的订单需要生成修改单
- {
- OrderMain::updateAll(['ORDER_LEVEL' => 1], "CANCEL_FLAG=0 and ORDER_VALID_STATUS=1 and
- (ORDER_ID={$request['order_id']} or PARENT_ORDER_ID={$request['order_id']})");
- }
- foreach ($data as $key => $day) {
- // 查询订单入住该天的订单信息
- $sel_old_info = OrderMain::find()
- ->select(['a.BASE_PRICE', 'a.ORDER_PRICE', 'a.TOTAL_COMMISSION', 'a.ORDER_STATUS', 'a.OUTSIDE_SALE_ORG_ID', 'b.HOTEL_ID', 'b.PARENT_ROOM_TYPE', 'b.ROOM_TYPE'])
- ->leftJoin('opera_hotel_room b', 'a.PARENT_PROD_ID=b.HOTEL_ID AND b.ROOM_TYPE=a.PROD_ID and b.CANCEL_FLAG=0')
- ->from('order_main a')
- ->where(['a.PARENT_ORDER_ID' => $request['order_id'], 'RUN_DATE' => $day['run_date'], 'a.CANCEL_FLAG' => 0, 'a.ORDER_VALID_STATUS' => 1])
- // -> createCommand()->getRawSql();
- ->asArray()->one();
-
- if ($sel_old_info['BASE_PRICE'] == $day['base_price']) continue; //如果当天价格相等则不进行修改
- if (!$sel_old_info) {
- throw new \Exception('修改采购价 -- 未找到相关信息');
- }
-
- // 只有待发单-待安排-退改中状态的订单允许进行修改
- if (!in_array($sel_old_info['ORDER_STATUS'], array('313', '198', '382'))) {
- throw new \Exception('事务异常-目前只有待发单-待安排-退改中状态的订单允许进行修改');
- }
-
- // 修改子订单采购价
- $update_order = OrderMain::updateAll(['BASE_PRICE' => $day['base_price'], 'PROFIT_VALUE' => $sel_old_info['ORDER_PRICE'] - $sel_old_info['TOTAL_COMMISSION'] - $day['base_price'],
- 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'UPDATE_USER_ID' => Yii::$app->user->id],
- ['ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0, 'PARENT_ORDER_ID' => $request['order_id'], 'RUN_DATE' => $day['run_date']]);
-
- if (!$update_order) {
- throw new \Exception('修改子订单成本价失败');
- }
-
- // 保存操作日志
- $log_desc = "修改采购价:修改【{$day['run_date']}】采购价【{$sel_old_info['BASE_PRICE']}】为【{$day['base_price']}】";
- $log_arr = array('CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'LOG_TYPE' => OperaHotelLog::LOG_TYPE_ORDER, 'HOTEL_ID' => $sel_old_info['HOTEL_ID'],
- 'PARENT_ROOM_TYPE' => $sel_old_info['PARENT_ROOM_TYPE'], 'ROOM_TYPE' => $sel_old_info['ROOM_TYPE'], 'LOG_DESC' => $log_desc, 'ORDER_ID' => $request['order_id']);
- $order_log = new OperaHotelLog();
- if ($order_log->load($log_arr, '') && $order_log->validate()) {
- if (!$order_log->save()) {
- throw new \Exception('记录修改日志失败!');
- }
- }
- }
-
- /** 修改主订单信息**/
- // 计算子订单的成本和利润之和
- $sum_orders = OrderMain::find()->select(['SUM(BASE_PRICE) as sum_base_price', 'SUM(PROFIT_VALUE) AS sum_profit_value'])
- ->where(['PARENT_ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0])->asArray()->one();
-
- if (empty($sum_orders)) {
- throw new \Exception('修改采购价 -- 未找到子订单信息');
- }
- // 修改主订单
- $update_parent_order = OrderMain::updateAll(['UPDATE_USER_ID' => Yii::$app->user->id, 'UPDATE_TIME' => date('Y-m-d H:i:s'),
- 'BASE_PRICE' => $sum_orders['sum_base_price'], 'PROFIT_VALUE' => $sum_orders['sum_profit_value']],
- ['ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0]);
-
- if (!$update_parent_order) {
- throw new \Exception('修改采购价 -- 修改主订单信息失败');
- }
-
- $transa->commit();
- // 渠道预付款处理,修改采购价
- $comm_model = new CommonOrder();
- $update_res = $comm_model->previousBalance(CommonOrder::UPDATE_ORDER_DEDUCTION_TYPE, $request['order_id']);
- if ($update_res['code'] != 0) {
- // 通知处理
- $this->sendAliMsgToRtx('预付款处理失败', '关联订单:' . "{$request['order_id']}\n" . '修改采购价:' . $update_res['msg'], $this->_developerList);
- }
- } catch (\Exception $e) {
- $transa->rollBack();
-
- return json_encode(array('code' => 1, 'info' => $e->getMessage()));
- }
-
- return json_encode(array('code' => 0, 'info' => '修改成功', 'order_id' => $request['order_id']));
- }
-
- /**
- * Author:Steven
- * Desc:直连失败订单处理
- * @return string
- */
- public function actionExceptionOrder()
- {
- $flag = false;
- $orderChannelInfo = new OrderChannelInfo(['scenario' => 'error_order']);
- $data['orderChannelInfo'] = $orderChannelInfo;
- if (Yii::$app->request->post()) {
- $param = Yii::$app->request->post('OrderChannelInfo');
- $outside_order_id = trim($param['channel_order_id']);
- $order_id = trim($param['ORDER_ID']);
- $order_main = OrderMain::find()
- ->leftJoin('opera_hotel_room', 'order_main.PARENT_PROD_ID=opera_hotel_room.HOTEL_ID and order_main.PROD_ID=opera_hotel_room.ROOM_TYPE and opera_hotel_room.CANCEL_FLAG=0')
- ->select(['outside_sale_org_id', 'PARENT_PROD_ID', 'PROD_ID', 'opera_hotel_room.PARENT_ROOM_TYPE'])->where([
- 'ORDER_ID' => $order_id,
- 'PARENT_ORDER_ID' => 0,
- 'order_main.CANCEL_FLAG' => 0,
- 'OUTSIDE_ORDER_NO' => "{$outside_order_id}",
- ])->asArray()->one();
- if (empty($order_main)) {
- return '<script>z.pjaxFinish("error", "订单不存在,请重新输入订单信息", "#float-div1");</script>';
- }
- if ($order_main['outside_sale_org_id'] == Yii::$app->params['ctrip']['supplier_id']) {
- $effect_count = OrderChannelInfo::updateAll([
- 'ORDER_ID' => $order_id,
- ], "CANCEL_FLAG=0 and channel_order_id=$outside_order_id");
- } elseif ($order_main['outside_sale_org_id'] == Yii::$app->params['ali']['supplier_id']) {
- //这里需要查询ali_order的支付宝流水号
- $ali_order = AliOrder::find()
- ->select(['AlipayTradeNo'])
- ->where(['TaoBaoOrderId' => $outside_order_id])
- ->asArray()->one();
- if (!empty($ali_order)) {
- $orderLog = new OperaHotelLog();
- $orderLog->CREATE_USER_ID = Yii::$app->params['ali']['base_user_id'];
- $orderLog->HOTEL_ID = $order_main['PARENT_PROD_ID'];
- $orderLog->LOG_TYPE = OperaHotelLog::LOG_TYPE_ORDER;
- $orderLog->ROOM_TYPE = $order_main['PROD_ID'];
- $orderLog->PARENT_ROOM_TYPE = $order_main['PARENT_ROOM_TYPE'];
- $orderLog->LOG_DESC = "支付订单,支付宝流水号:" . $ali_order['AlipayTradeNo'];
- $orderLog->ORDER_ID = $order_id;
- }
- }
- $count = OrderMain::updateAll([
- 'DOCKING_TYPE' => 556,
- 'CHANNEL_ORDER_STATUS' => 550,
- ], "ORDER_ID=$order_id or PARENT_ORDER_ID=$order_id");
- $flag = true;
- // 记录日志
- if ($count) {
- $model = OrderMain::findOne(['CANCEL_FLAG' => 0, 'PARENT_ORDER_ID' => 0, 'ORDER_ID' => $order_id, 'ORDER_LEVEL' => [0, 1], 'ORDER_STATUS' => [147, 198, 313, 314], 'ORDER_VALID_STATUS' => 1]);
- $model->saveLog('exception-order');
- }
-
- return '<script>z.pjaxFinish("success", "直连成功", "#float-div1");$("#search-button").trigger(\'click\');</script>';
- }
-
- $data['flag'] = $flag;
-
- return $this->render('_exception_order', ['data' => $data]);
- }
-
- /**
- * @Author wanglg
- * @Desc 修改销售价
- */
- public function actionUpdateSalePrice()
- {
- $request = Yii::$app->request->post();
- // 首先判断订单是否是直连订单,直连订单不允许修改销售价
- $main_order = OrderMain::findOne(['ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0]);
-
- if ($main_order['DOCKING_TYPE'] == 556) // 556 直连 557 录单
- {
- return ['code' => 1, 'msg' => '直连订单不允许修改销售价'];
- }
-
- $data = json_decode($request['data'], true);
- $transa = Yii::$app->db->beginTransaction();
- try {
- foreach ($data as $key => $day) {
- // 查询订单入住该天的订单信息
- $sel_old_info = OrderMain::find()
- ->select(['a.ORDER_PRICE', 'a.OUTSIDE_SALE_ORG_ID', 'a.BASE_PRICE', 'b.HOTEL_ID', 'b.PARENT_ROOM_TYPE', 'b.ROOM_TYPE'])
- ->leftJoin('opera_hotel_room b', 'a.PARENT_PROD_ID=b.HOTEL_ID AND b.ROOM_TYPE=a.PROD_ID and b.CANCEL_FLAG=0')
- ->from('order_main a')
- ->where(['a.PARENT_ORDER_ID' => $request['order_id'], 'RUN_DATE' => $day['run_date'], 'a.CANCEL_FLAG' => 0, 'a.ORDER_VALID_STATUS' => 1])
- // -> createCommand()->getRawSql();
- ->asArray()->one();
-
- if (!$sel_old_info) throw new \Exception('修改销售价 -- 未找到相关信息');
-
- if ($sel_old_info['ORDER_PRICE'] == $day['sale_price']) continue; //如果当天价格相等则不进行修改
-
- // 渠道佣金规则
- $commission_role = BaseSupplier::find()
- ->select(['b.BACK_COMMISION_METHOD', "b.BACK_PERCENT", "b.BACK_VALUE"])
- ->innerJoin('base_supplier_sale as b', 'a.ID=b.SUPPLIER_ID AND b.PARENT_TYPE=25 and b.CANCEL_FLAG=0')
- ->from('base_supplier as a')
- ->where(['a.id' => $sel_old_info['OUTSIDE_SALE_ORG_ID'], 'a.CANCEL_FLAG' => 0, 'a.IS_DISABLED' => 0])->asArray()->one();
-
- //更改销售价和利润
- //修改销售单价的时候,渠道佣金也要根据当前设置佣金规则设置新的佣金金额
- $commission_sql = empty($commission_role['BACK_COMMISION_METHOD']) ? 0
- : ($commission_role['BACK_COMMISION_METHOD'] == 308 ? number_format($day['sale_price'] * $commission_role['BACK_PERCENT'] / 100, 2)
- : $commission_role['BACK_VALUE']);
- $profit = $day['sale_price'] - $sel_old_info['BASE_PRICE'] - $commission_sql;
- $update_orders = OrderMain::updateAll(['UPDATE_TIME' => date('Y-m-d H:i:s'), 'UPDATE_USER_ID' => Yii::$app->user->id, 'ORDER_PRICE' => $day['sale_price'], 'TOTAL_COMMISSION' => $commission_sql, 'PROFIT_VALUE' => $profit],
- ['PARENT_ORDER_ID' => $request['order_id'], 'RUN_DATE' => $day['run_date'], 'CANCEL_FLAG' => 0, 'ORDER_VALID_STATUS' => 1]);
- if (!$update_orders) {
- throw new \Exception('修改子订单成本价失败');
- }
-
- // 保存操作日志
- $log_desc = "修改销售价:修改【{$day['run_date']}】销售价【{$sel_old_info['ORDER_PRICE']}】为【{$day['sale_price']}】";
- $log_arr = array('CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'LOG_TYPE' => OperaHotelLog::LOG_TYPE_ORDER, 'HOTEL_ID' => $sel_old_info['HOTEL_ID'],
- 'PARENT_ROOM_TYPE' => $sel_old_info['PARENT_ROOM_TYPE'], 'ROOM_TYPE' => $sel_old_info['ROOM_TYPE'], 'LOG_DESC' => $log_desc, 'ORDER_ID' => $request['order_id']);
- $order_log = new OperaHotelLog();
- if ($order_log->load($log_arr, '') && $order_log->validate()) {
- if (!$order_log->save()) {
- throw new \Exception('记录修改日志失败!');
- }
- }
- }
-
- // 修改主订单信息
- // 计算子订单的成本和利润之和
- $sum_orders = OrderMain::find()
- ->select(['SUM(ORDER_PRICE) as sum_order_price', 'SUM(TOTAL_COMMISSION) as sum_total_commission', 'SUM(PROFIT_VALUE) AS sum_profit_value'])
- ->where(['PARENT_ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0])->asArray()->one();
-
- if (empty($sum_orders)) {
- throw new \Exception('修改销售价--未找到子订单信息');
- }
- // 修改主订单
- $update_parent_order = OrderMain::updateAll(['UPDATE_USER_ID' => Yii::$app->user->id, 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'ORDER_PRICE' => $sum_orders['sum_order_price'], 'PROFIT_VALUE' => $sum_orders['sum_profit_value'],
- 'TOTAL_COMMISSION' => $sum_orders['sum_total_commission']], ['ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0]);
- if (!$update_parent_order) {
- throw new \Exception('修改销售价--修改主订单信息失败');
- }
-
- $transa->commit();
- // 渠道预付款处理,修改采购价
- $comm_model = new CommonOrder();
- $update_res = $comm_model->previousBalance(CommonOrder::UPDATE_ORDER_DEDUCTION_TYPE, $request['order_id']);
- if ($update_res['code'] != 0) {
- $this->sendAliMsgToRtx('预付款处理失败', '关联订单:' . "{$request['order_id']}\n" . '修改销售价:' . $update_res['msg'], $this->_developerList);
- }
- } catch (\Exception $e) {
- $transa->rollBack();
-
- return json_encode(array('code' => 1, 'info' => $e->getMessage()));
- }
-
- return json_encode(array('code' => 0, 'info' => '修改成功'));
- }
-
- /**
- * Displays a single OrderMain model.
- * @param integer $id
- * @return mixed
- */
- public function actionView($id)
- {
- $request = Yii::$app->request->get();
-
- return $this->render('view', [
- 'model' => $this->findModel($id),
- ]);
- }
-
- /**
- * Creates a new OrderMain model.
- * If creation is successful, the browser will be redirected to the 'view' page.
- * @return mixed
- */
- public function actionCreate()
- {
- $model = new OrderMain();
-
- if ($model->load(Yii::$app->request->post()) && $model->save()) {
- return $this->redirect(['view', 'id' => $model->ID]);
- } else {
- return $this->render('create', [
- 'model' => $model,
- ]);
- }
- }
-
- /**
- * Updates an existing OrderMain model.
- * If update is successful, the browser will be redirected to the 'view' page.
- * @param integer $id
- * @return mixed
- */
- public function actionUpdate($id)
- {
- $model = $this->findModel($id);
-
- if ($model->load(Yii::$app->request->post()) && $model->save()) {
- return $this->redirect(['view', 'id' => $model->ID]);
- } else {
- return $this->render('update', [
- 'model' => $model,
- ]);
- }
- }
-
- /**
- * Deletes an existing OrderMain model.
- * If deletion is successful, the browser will be redirected to the 'index' page.
- * @param integer $id
- * @return mixed
- */
- public function actionDelete($id)
- {
- $this->findModel($id)->delete();
-
- return $this->redirect(['index']);
- }
-
- /**
- * Finds the OrderMain model based on its primary key value.
- * If the model is not found, a 404 HTTP exception will be thrown.
- * @param integer $id
- * @return OrderMain the loaded model
- * @throws NotFoundHttpException if the model cannot be found
- */
- protected function findModel($id)
- {
- if (($model = OrderMain::findOne($id)) !== null) {
- return $model;
- } else {
- throw new NotFoundHttpException('The requested page does not exist.');
- }
- }
-
- /**
- * CS调用订单是否可下
- *
- * @param $hotel integer
- * @param $room integer
- * @param $channel integer
- * @param $date string 日期 用,分隔
- * @param $count string 日期对应的数量 用,分隔
- *
- * @author wangxj
- */
- public function actionCheckAvailable($hotel, $room, $channel, $date, $count)
- {
- $date_array = explode(',', $date);
- $count_array = explode(',', $count);
- if (count($date_array) === count($count_array)) {
- $result = ['flag' => 'true', 'message' => []];
- $data = [
- 'PROD_ID' => $room,
- 'PARENT_PROD_ID' => $hotel,
- 'OUTSIDE_SALE_ORG_ID' => $channel,
- ];
- foreach ($date_array as $key => $item) {
- $tmp_order = new OrderMain();
- $tmp_order->load($data + ['RUN_DATE' => $item, 'room_count' => $count_array[$key]], '');
- $tmp_order->orderAvailable();
- if ($tmp_order->hasErrors()) {
- $result['flag'] = 'false';
- $result['message'][] = $tmp_order->getErrorMsg();
- }
- }
- $result['message'] = array_unique($result['message']);
- \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
-
- return $result;
- } else {
- throw new HttpException('400', '数据不匹配,无法操作');
- }
- }
-
- /**
- * @Author wanglg
- * @Desc获取房型库存价格列表
- * @return array
- */
- public function actionGetPriceList()
- {
- /*$param = [
- 'RoomNum' => 2,
- 'RoomID' => 2474,
- 'DistribID' => 669,
- 'CheckIn' => '2018-01-18',
- 'CheckOut' => '2018-01-21',
- ];*/
- $request = Yii::$app->request->post();
- if (empty($request['RoomNum'])) {
- return json_encode(array('code' => 1, 'info' => '缺少必要参数'));
- }
- $orderModel = new CommonOrder(['scenario' => 'Product']);
- if ($orderModel->load($request, '') && $orderModel->validate()) {
- $price_res = $orderModel->getHotelStock();
-
- // return json_encode($price_res);
- return json_encode(array('code' => 0, 'info' => '获取成功', 'data' => $price_res));
- } else {
- $error = array_values($orderModel->getFirstErrors());
-
- return json_encode(array('code' => 1, 'info' => implode('|', $error)));
- }
- }
-
- /**
- * @Author wanglg
- * @Desc 导出订单信息
- */
- public function actionExport()
- {
- set_time_limit(0);
- ini_set("memory_limit", "-1");
- $obj = new searchOrderMain();
- $obj->date_from = date('Y-m-d', strtotime('-3 days'));
- $obj->date_to = date('Y-m-d');
- $search = Yii::$app->request->queryParams;
- $dataProvider = $obj->exportList($search);
-
- $data = $dataProvider->getModels();
-
- $date_type = $search['searchOrderMain']['date_type'] == 1 ? '预订日期' : (($search['searchOrderMain']['date_type'] == 2) ? '入住日期' : '离店日期');
- $objPHPExcel = new zPhpExcel(); //实例化PHPExcel类
- $cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
- if (!\PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) {
- die($cacheMethod . " 缓存方法不可用" . EOL);
- }
-
- $objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动sheet的操作对象
- $objSheet->setTitle('User');
- $objPHPExcel->file_name = '订单信息' . date('Y-m-d H_i_s') . '_' . $date_type;
- // 定义要需要导出的字段
- $order_sort = ['ORDER_ID', 'PARENT_PROD_NAME', 'PROD_NAME', 'CREATE_TIME', 'CREATE_USER_NAME', 'PROD_SUPPLY_ORG_NAME', 'PROD_START_STATION_DATE',
- 'PROD_END_STATION_DATE', 'room_count', 'ORDER_CONFIRM_CODE', 'CUSTOMER_NAME', 'CUSTOMER_MOBILE', 'SUPPLIER_NAME', 'OUTSIDE_ORDER_NO', 'ORDER_PRICE', 'BASE_PRICE', 'TOTAL_COMMISSION',
- 'PROFIT_VALUE', 'PAY_WAY', 'ORDER_STATUS', 'CUSTOMER_MEMO', 'SALES_NAME', 'PRINCIPAL', 'ORDER_TITLE_ID'];
-
- //设置表头
- $a_k = range('A', 'X');
- foreach ($a_k as $key => $item) {
- $objSheet->setCellValue($item . '1', $obj->getAttributeLabel($order_sort[$key]));
- }
-
-
- foreach ($data as $key => $datum) {
- foreach ($a_k as $index => $item) {
- if ($item == 'M')
- $objSheet->setCellValue($item . ($key + 2), $datum->baseChannel->SUPPLIER_NAME);
- elseif ($item == 'E') // 操作人, 客服
- $objSheet->setCellValue($item . ($key + 2), $datum->user->TRUE_NAME);
- elseif ($item == 'I') // 间夜数
- $objSheet->setCellValue($item . ($key + 2), $datum['room_count']);
- elseif ($item == 'V') // 采购负责人
- $objSheet->setCellValue($item . ($key + 2), $datum->salesMan->TRUE_NAME);
- elseif ($item == 'W') // 运营负责人
- $objSheet->setCellValue($item . ($key + 2), $datum->principalMan->TRUE_NAME);
- elseif ($item == 'S') // 支付方式
- $objSheet->setCellValue($item . ($key + 2), $datum->baseChannel->settleType->TYPE_NAME);
- elseif ($item == 'T') // 订单状态
- $objSheet->setCellValue($item . ($key + 2), $datum->statusLabel->TYPE_NAME);
- elseif ($item == 'X') // 组合单
- {
- $group = ($datum->ORDER_TITLE_ID == 0) ? '否' : '是(组合订单号:' . $datum->ORDER_TITLE_ID . ')';
- $objSheet->setCellValue($item . ($key + 2), $group);
- } else
- $objSheet->setCellValue($item . ($key + 2), $datum->$order_sort[$index]);
- }
- }
-
- //设置宽度
- $objPHPExcel->setColumnSize(range('B', 'X'), [25, 30, 25, 10, 25, 20, 20, 10, 15, 15, 15, 20, 20, 10, 10, 10, 10, 10, 15, 20, 15, 15, 25]);
- $objPHPExcel->output();
- }
-
- /**
- * @Author wanglg
- * @Desc 导出订单格式CSV
- */
- public function actionExportCsv()
- {
- set_time_limit(0);
- ini_set("memory_limit", "-1");
- $obj = new searchOrderMain();
- $obj->date_from = date('Y-m-d', strtotime('-3 days'));
- $obj->date_to = date('Y-m-d');
- $search = Yii::$app->request->queryParams;
- $dataProvider = $obj->exportList($search);
- $data = $dataProvider->getModels();
- $date_type = $search['searchOrderMain']['date_type'] == 1 ? '预订日期' : (($search['searchOrderMain']['date_type'] == 2) ? '入住日期' : '离店日期');
- $file_name = '订单信息 时间范围 ' . $search['searchOrderMain']['date_from'] . '~' . $search['searchOrderMain']['date_to'] . '_' . date('Y-m-d H_i_s') . '_' . $date_type;
- // 输出Excel文件头,可把user.csv换成你要的文件名
- header('Content-Type: application/vnd.ms-excel;charset=UTF-8');
- header('Content-Disposition: attachment;filename="' . $file_name . '.csv"');
- header('Cache-Control: max-age=0');
-
- $fp = fopen('php://output', 'a');
- $order_sort = ['订单编号', '酒店名称', '预订产品', '预定时间', '预订人', '供应商', '入住时间',
- '离店时间', '间夜数', '确认号', '客人姓名', '联系电话', '渠道商', '渠道商订单号', '订单金额', '成本金额', '渠道佣金',
- '利润', '支付方式', '订单状态', '备注', '采购负责人', '运营负责人', '是否是组合订单'];
-
- $attrs = ['ORDER_ID', 'PARENT_PROD_NAME', 'PROD_NAME', 'CREATE_TIME', 'CREATE_USER_NAME', 'PROD_SUPPLY_ORG_NAME', 'PROD_START_STATION_DATE',
- 'PROD_END_STATION_DATE', 'room_count', 'ORDER_CONFIRM_CODE', 'CUSTOMER_NAME', 'CUSTOMER_MOBILE', 'SUPPLIER_NAME', 'OUTSIDE_ORDER_NO', 'ORDER_PRICE', 'BASE_PRICE', 'TOTAL_COMMISSION',
- 'PROFIT_VALUE', 'PAY_WAY', 'ORDER_STATUS', 'CUSTOMER_MEMO', 'SALES_NAME', 'PRINCIPAL', 'ORDER_TITLE_ID'];
-
- foreach ($order_sort as $key => $item) {
- $order_sort[$key] = iconv('utf-8', 'GB18030', $item);
- }
-
- fputcsv($fp, $order_sort);
-
- $data_count = count($data);
- $num = 0; // 订单下标
-
- while ($num < $data_count) {
- $put_data = array();
- foreach ($attrs as $k => $attr) {
- if ($attr == 'CREATE_USER_NAME') {
- $put_data[] = iconv('utf-8', 'GB18030', $data[$num]->user->TRUE_NAME);
- } elseif ($attr == 'SUPPLIER_NAME') {
- $put_data[] = iconv('utf-8', 'GB18030', $data[$num]->baseChannel->SUPPLIER_NAME);
- } elseif ($attr == 'room_count') // 间夜数
- {
- $put_data[] = iconv('utf-8', 'GB18030', $data[$num]['room_count']);
- } elseif ($attr == 'SALES_NAME') // 采购负责人
- {
- $put_data[] = iconv('utf-8', 'GB18030', $data[$num]->salesMan->TRUE_NAME);
- } elseif ($attr == 'PRINCIPAL') // 运营负责人
- {
- $put_data[] = iconv('utf-8', 'GB18030', $data[$num]->principalMan->TRUE_NAME);
- } elseif ($attr == 'PAY_WAY') {
- $put_data[] = iconv('utf-8', 'GB18030', $data[$num]->baseChannel->settleType->TYPE_NAME);
- } elseif ($attr == 'ORDER_STATUS') // 订单状态
- {
- $put_data[] = iconv('utf-8', 'GB18030', $data[$num]->statusLabel->TYPE_NAME);
- } elseif ($attr == 'ORDER_TITLE_ID') // 组合单
- {
- $group = ($data[$num]->ORDER_TITLE_ID == 0) ? '否' : '是(组合订单号:' . $data[$num]->ORDER_TITLE_ID . ')';
- $put_data[] = iconv('utf-8', 'GB18030', $group);
- } elseif ($attr == 'ORDER_PRICE' || $attr == 'PROD_START_STATION_DATE' || $attr == 'PROD_END_STATION_DATE' || $attr == 'BASE_PRICE' || $attr == 'room_count' || $attr == 'TOTAL_COMMISSION' || $attr == 'PROFIT_VALUE') // 组合单
- {
- $put_data[] = (string)iconv('utf-8', 'GB18030', $data[$num]->$attr);
- } else {
- $put_data[] = iconv('utf-8', 'GB18030', $data[$num]->$attr . "\t");
- }
-
- }
-
- fputcsv($fp, $put_data);
- if (is_int($num / 5000)) {
- ob_flush();
- flush();
- }
-
- $num++;
- }
- exit();
- }
-
- /**
- * @Author wanglg
- * @Desc 添加备注信息
- * @param $order_id
- * @param $comment_type
- * @param $comment_txt
- * @return bool|string
- */
- public function actionAddcomment($order_id, $comment_type, $comment_txt)
- {
- $comment_arr = array('ORDER_ID' => $order_id, 'COMMENT_TYPE' => $comment_type, 'COMMENT_TXT' => $comment_txt,
- 'CANCEL_FLAG' => 0, 'CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'UPDATE_USER_ID' => 0, 'UPDATE_TIME' => '0');
- $comment = new OrderComment();
- if ($comment->load($comment_arr, '') && $comment->validate()) {
- if (!$comment->save()) {
- return false;
- }
- }
- $data['order_comment'] = OrderComment::find()
- ->joinWith('user')
- ->where(['ORDER_ID' => $order_id, 'COMMENT_TYPE' => [0, 1], 'order_comment.CANCEL_FLAG' => 0])->asArray()->all();
-
- return $this->render('order_detail', ['data' => $data]);
- }
-
- /**
- * @Author wanglg
- * @Desc 订单详情页
- * @return string
- */
- public function actionDetail()
- {
- $id = Yii::$app->request->get('id');
- $model = new OrderMain();
- $model->setScenario('csBook');
- $comment_model = new OrderComment();
- $common_order = new CommonOrder();
- $stock_arr[1] = ['stock_id' => 0, 'stock_count' => 0];
- $order_log_model = new OperaHotelLog();
-
- if (Yii::$app->request->isAjax) {
- $request = Yii::$app->request->get();
- //订单详情操作:读取和修改
- // 备注添加
- if ($request['deal_type'] == 1) {
- $model->comment($request);
- }
-
- // 删除备注
- if ($request['deal_type'] == 2) {
- $model->delComment($request);
- }
-
- // 修改客人信息
- if ($request['deal_type'] == 3) {
- $model->updateCustomer($request);
- }
-
- // 修改入住需求
- if ($request['deal_type'] == 6) {
- $model->updateCheckIn($request);
- }
-
- // 修改销售价
- if ($request['deal_type'] == 7) {
- $this->actionUpdateOrderPrice($id, $request);
- }
-
- // 修改采购价
- if ($request['deal_type'] == 8) {
- $this->actionUpdateBasePrice($id, $request);
- }
-
- // 获取订单详情信息
- $data = $model->orderDetail($id);
-
- // 获取价格信息
- if ($request['deal_type'] == 5) {
- $common_order->setScenario('Product');
- $stock_res = $common_order->getOrderRoomNum($id, $request);
- $stock_arr = empty($stock_res) ? $stock_arr : $stock_res;
- $load_html = $model->getStockPriceList($request);
- $data['hotel_child_order_detail'] = $load_html;
- if (!empty($load_html)) {
- $main_order['ORDER_PRICE'] = array_sum(array_column($load_html, 'ALL_PRICE'));
- $main_order['TOTAL_MID_PRICE'] = array_sum(array_column($load_html, 'MID_PRICE'));
- $main_order['TOTAL_COMMISSION'] = array_sum(array_column($load_html, 'TOTAL_COMMISSION'));
- $main_order['PROFIT_VALUE'] = array_sum(array_column($load_html, 'BENEFIT'));
- }
- }
-
- if ($request['deal_type'] == 9) {
- $order_logs = $order_log_model->getOrderLog($id, $request['user_id']);
- }
- } else {
- $data = $model->orderDetail($id);
- $order_logs = $order_log_model->getOrderLog($id);
- }
-
- $supplier = new \backend\modules\api\models\BaseSupplier();
- $channel_list = $supplier->getChannelList();
- $log_users = $order_log_model->getLogUser($id);
- foreach ($data['data'] as $order) {
- if ($order['PARENT_ORDER_ID'] == 0) {
- $main_order = $order;
- }
- }
-
- return $this->render('order_detail', [
- 'hotel_log' => $order_log_model,
- 'log' => $order_logs,
- 'log_users' => $log_users,
- 'model' => $model,
- 'channel_list' => $channel_list,
- 'data' => $data,
- 'comment_model' => $comment_model,
- 'common_order' => $common_order,
- 'stock_arr' => $stock_arr,
- 'child_order' => $data['hotel_child_order_detail'],
- 'main_order' => $main_order]);
- }
-
- /**
- * @Author wanglg
- * @Desc 修改销售价
- * @throws \yii\db\Exception
- */
- public function actionUpdateOrderPrice($order_id, $request)
- {
- // 首先判断订单是否是直连订单,直连订单不允许修改销售价
- $main_order = OrderMain::findOne(['ORDER_ID' => $order_id, 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0]);
-
- if ($main_order['DOCKING_TYPE'] == 556) // 556 直连 557 录单
- {
- return ['code' => 1, 'msg' => '直连订单不允许修改销售价'];
- }
-
- $data = json_decode($request['data'], true);
- $transa = Yii::$app->db->beginTransaction();
- try {
- foreach ($data as $key => $day) {
- // 查询订单入住该天的订单信息
- $sel_old_info = OrderMain::find()
- ->select(['a.ID', 'a.ORDER_PRICE', 'a.OUTSIDE_SALE_ORG_ID', 'a.BASE_PRICE', 'b.HOTEL_ID', 'b.PARENT_ROOM_TYPE', 'b.ROOM_TYPE'])
- ->leftJoin('opera_hotel_room b', 'a.PARENT_PROD_ID=b.HOTEL_ID AND b.ROOM_TYPE=a.PROD_ID and b.CANCEL_FLAG=0')
- ->from('order_main a')
- ->where(['a.PARENT_ORDER_ID' => $request['order_id'], 'RUN_DATE' => $day['run_date'], 'a.CANCEL_FLAG' => 0, 'a.ORDER_VALID_STATUS' => 1])
- // -> createCommand()->getRawSql();
- ->asArray()->all();
-
- if (!$sel_old_info) throw new \Exception('修改销售价 -- 未找到相关信息');
-
- if ($sel_old_info['ORDER_PRICE'] == $day['sale_price']) continue; //如果当天价格相等则不进行修改
-
- // 渠道佣金规则
- $commission_role = BaseSupplier::find()
- ->select(['b.BACK_COMMISION_METHOD', "b.BACK_PERCENT", "b.BACK_VALUE"])
- ->innerJoin('base_supplier_sale as b', 'a.ID=b.SUPPLIER_ID AND b.PARENT_TYPE=25 and b.CANCEL_FLAG=0')
- ->from('base_supplier as a')
- ->where(['a.id' => $sel_old_info['OUTSIDE_SALE_ORG_ID'], 'a.CANCEL_FLAG' => 0, 'a.IS_DISABLED' => 0])->asArray()->one();
-
- //更改销售价和利润
- //修改销售单价的时候,渠道佣金也要根据当前设置佣金规则设置新的佣金金额
- $commission_sql = empty($commission_role['BACK_COMMISION_METHOD']) ? 0
- : ($commission_role['BACK_COMMISION_METHOD'] == 308 ? number_format($day['sale_price'] * $commission_role['BACK_PERCENT'] / 100, 2)
- : $commission_role['BACK_VALUE']);
-
- foreach ($sel_old_info as $old_info) {
- $profit = $day['sale_price'] - $old_info['BASE_PRICE'] - $commission_sql;
- $update_orders = OrderMain::updateAll(['UPDATE_TIME' => date('Y-m-d H:i:s'), 'UPDATE_USER_ID' => Yii::$app->user->id, 'ORDER_PRICE' => $day['sale_price'], 'TOTAL_COMMISSION' => $commission_sql, 'PROFIT_VALUE' => $profit],
- ['ID' => $old_info["ID"], 'PARENT_ORDER_ID' => $request['order_id'], 'RUN_DATE' => $day['run_date'], 'CANCEL_FLAG' => 0, 'ORDER_VALID_STATUS' => 1]);
-
- if (!$update_orders) {
- throw new \Exception('修改子订单成本价失败');
- }
- }
-
- // 保存操作日志
- $log_desc = "修改销售价:修改【{$day['run_date']}】销售价【{$sel_old_info[0]['ORDER_PRICE']}】为【{$day['sale_price']}】";
- $log_arr = array('CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'LOG_TYPE' => OperaHotelLog::LOG_TYPE_ORDER, 'HOTEL_ID' => $sel_old_info[0]['HOTEL_ID'],
- 'PARENT_ROOM_TYPE' => $sel_old_info[0]['PARENT_ROOM_TYPE'], 'ROOM_TYPE' => $sel_old_info[0]['ROOM_TYPE'], 'LOG_DESC' => $log_desc, 'ORDER_ID' => $request['order_id']);
- $order_log = new OperaHotelLog();
- if ($order_log->load($log_arr, '') && $order_log->validate()) {
- if (!$order_log->save()) {
- throw new \Exception('记录修改日志失败!');
- }
- }
- }
-
- /** 修改主订单信息**/
- // 计算子订单的成本和利润之和
- $sum_orders = OrderMain::find()
- ->select(['SUM(ORDER_PRICE) as sum_order_price', 'SUM(TOTAL_COMMISSION) as sum_total_commission', 'SUM(PROFIT_VALUE) AS sum_profit_value'])
- ->where(['PARENT_ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0])->asArray()->one();
-
- if (empty($sum_orders)) {
- throw new \Exception('修改销售价--未找到子订单信息');
- }
- // 修改主订单
- $update_parent_order = OrderMain::updateAll(['UPDATE_USER_ID' => Yii::$app->user->id, 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'ORDER_PRICE' => $sum_orders['sum_order_price'], 'PROFIT_VALUE' => $sum_orders['sum_profit_value'],
- 'TOTAL_COMMISSION' => $sum_orders['sum_total_commission']], ['ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0]);
- if (!$update_parent_order) {
- throw new \Exception('修改销售价--修改主订单信息失败');
- }
-
- $transa->commit();
- // 渠道预付款处理,修改采购价
- $comm_model = new CommonOrder();
- $update_res = $comm_model->previousBalance(CommonOrder::UPDATE_ORDER_DEDUCTION_TYPE, $request['order_id']);
- if ($update_res['code'] != 0) {
- $this->sendAliMsgToRtx('预付款处理失败', '关联订单:' . "{$request['order_id']}\n" . '修改销售价:' . $update_res['msg'], $this->_developerList);
- }
- } catch (\Exception $e) {
- $transa->rollBack();
- return ['code' => 1, 'info' => $e->getMessage()];
- }
-
- return ['code' => 0, 'info' => '修改成功'];
- }
-
- /**
- * @Author wanglg
- * @Desc修改采购价
- * @return string
- */
- public function actionUpdateBasePrice($order_id, $request)
- {
- $order_main = OrderMain::findOne(['ORDER_ID' => $order_id, 'CANCEL_FLAG' => 0]);
- $data = json_decode($request['data'], true);
- $transa = Yii::$app->db->beginTransaction();
- try {
- if (in_array($order_main['ORDER_STATUS'], array(198, 382))) // 待确认 - 退改中的订单需要生成修改单
- {
- OrderMain::updateAll(['ORDER_LEVEL' => 1], "CANCEL_FLAG=0 and ORDER_VALID_STATUS=1 and
- (ORDER_ID={$request['order_id']} or PARENT_ORDER_ID={$request['order_id']})");
- }
- foreach ($data as $key => $day) {
- // 查询订单入住该天的订单信息
- $sel_old_info = OrderMain::find()
- ->select(['ROUND(SUM(a.BASE_PRICE)/COUNT(a.ORDER_ID), 2) as BASE_PRICE', 'a.ORDER_PRICE', 'a.TOTAL_COMMISSION', 'a.ORDER_STATUS', 'a.OUTSIDE_SALE_ORG_ID', 'b.HOTEL_ID', 'b.PARENT_ROOM_TYPE', 'b.ROOM_TYPE'])
- ->leftJoin('opera_hotel_room b', 'a.PARENT_PROD_ID=b.HOTEL_ID AND b.ROOM_TYPE=a.PROD_ID and b.CANCEL_FLAG=0')
- ->from('order_main a')
- ->where(['a.PARENT_ORDER_ID' => $request['order_id'], 'RUN_DATE' => $day['run_date'], 'a.CANCEL_FLAG' => 0, 'a.ORDER_VALID_STATUS' => 1])
- ->groupBy('RUN_DATE')
- ->asArray()->one();
-
- if ($sel_old_info['BASE_PRICE'] == $day['base_price']) continue; //如果当天价格相等则不进行修改
- if (!$sel_old_info) {
- throw new \Exception('修改采购价 -- 未找到相关信息');
- }
-
- // 只有待发单-待安排-退改中状态的订单允许进行修改
- if (!in_array($sel_old_info['ORDER_STATUS'], array('313', '198', '382'))) {
- throw new \Exception('事务异常-目前只有待发单-待安排-退改中状态的订单允许进行修改');
- }
-
- // 修改子订单采购价
- $update_order = OrderMain::updateAll(['BASE_PRICE' => $day['base_price'], 'PROFIT_VALUE' => $sel_old_info['ORDER_PRICE'] - $sel_old_info['TOTAL_COMMISSION'] - $day['base_price'],
- 'UPDATE_TIME' => date('Y-m-d H:i:s'), 'UPDATE_USER_ID' => Yii::$app->user->id],
- ['ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0, 'PARENT_ORDER_ID' => $request['order_id'], 'RUN_DATE' => $day['run_date']]);
-
- if (!$update_order) {
- throw new \Exception('修改子订单成本价失败');
- }
-
- // 保存操作日志
- $log_desc = "修改采购价:修改【{$day['run_date']}】采购价【{$sel_old_info['BASE_PRICE']}】为【{$day['base_price']}】";
- $log_arr = array('CREATE_USER_ID' => Yii::$app->user->id, 'CREATE_TIME' => date('Y-m-d H:i:s'), 'LOG_TYPE' => OperaHotelLog::LOG_TYPE_ORDER, 'HOTEL_ID' => $sel_old_info['HOTEL_ID'],
- 'PARENT_ROOM_TYPE' => $sel_old_info['PARENT_ROOM_TYPE'], 'ROOM_TYPE' => $sel_old_info['ROOM_TYPE'], 'LOG_DESC' => $log_desc, 'ORDER_ID' => $request['order_id']);
- $order_log = new OperaHotelLog();
- if ($order_log->load($log_arr, '') && $order_log->validate()) {
- if (!$order_log->save()) {
- throw new \Exception('记录修改日志失败!');
- }
- }
- }
-
- /** 修改主订单信息**/
- // 计算子订单的成本和利润之和
- $sum_orders = OrderMain::find()->select(['SUM(BASE_PRICE) as sum_base_price', 'SUM(PROFIT_VALUE) AS sum_profit_value'])
- ->where(['PARENT_ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0])->asArray()->one();
-
- if (empty($sum_orders)) {
- throw new \Exception('修改采购价 -- 未找到子订单信息');
- }
- // 修改主订单
- $update_parent_order = OrderMain::updateAll(['UPDATE_USER_ID' => Yii::$app->user->id, 'UPDATE_TIME' => date('Y-m-d H:i:s'),
- 'BASE_PRICE' => $sum_orders['sum_base_price'], 'PROFIT_VALUE' => $sum_orders['sum_profit_value']],
- ['ORDER_ID' => $request['order_id'], 'ORDER_VALID_STATUS' => 1, 'CANCEL_FLAG' => 0]);
-
- if (!$update_parent_order) {
- throw new \Exception('修改采购价 -- 修改主订单信息失败');
- }
-
- $transa->commit();
- // 渠道预付款处理,修改采购价
- $comm_model = new CommonOrder();
- $update_res = $comm_model->previousBalance(CommonOrder::UPDATE_ORDER_DEDUCTION_TYPE, $request['order_id']);
- if ($update_res['code'] != 0) {
- // 通知处理
- $this->sendAliMsgToRtx('预付款处理失败', '关联订单:' . "{$request['order_id']}\n" . '修改采购价:' . $update_res['msg'], $this->_developerList);
- }
- } catch (\Exception $e) {
- $transa->rollBack();
-
- return json_encode(array('code' => 1, 'info' => $e->getMessage()));
- }
-
- return json_encode(array('code' => 0, 'info' => '修改成功', 'order_id' => $request['order_id']));
- }
-
- /**
- * @Author wanglg
- * @Desc 修改入住需求时获取库存,合并以前的库存数量
- * @return string
- */
- public function actionGetChannelStock()
- {
- $request = Yii::$app->request->post();
- $orderModel = new CommonOrder(['scenario' => 'Product']);
- if ($orderModel->load($request, '') && $orderModel->validate()) {
- $getStockRes = $orderModel->dealStock($request['order_id'], $request);
-
- return json_encode(array('code' => 0, 'info' => '成功', 'data' => $getStockRes));
- } else {
- $error = array_values($orderModel->getFirstErrors());
-
- return json_encode(['code' => 1, 'info' => $error[0]]);
- }
- }
- }
-
- ?>
|