|
- <?php
- /**
- * 渠道酒店表 用于和本地酒店进行关联的原始数据
- * ============================================================================
- * * 版权所有 蜘蛛出行 * *
- * 网站地址: http://www.zhizhuchuxing.com
- * ----------------------------------------------------------------------------
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
- * 使用;不允许对程序代码以任何形式任何目的的再发布。
- * ============================================================================
- * Author By: 倪宗锋
- * PhpStorm ChannelHotel.php
- * Create By 2017/4/13 10:29 $
- */
-
-
- namespace backend\modules\hotel\models;
-
-
- use backend\modules\api\models\BaseArea;
- use yii\data\ActiveDataProvider;
- use yii\db\ActiveRecord;
- use yii\db\Expression;
-
- class ChannelHotel extends ActiveRecord
- {
- public $hotelId1;
- public $name1;
-
-
- public static function tableName()
- {
- return 'channel_hotel';
- }
-
- public function rules()
- {
- return [
- [['HotelID'], 'string', 'max' => 20],
- [['HotelName'], 'string', 'max' => 150],
- [['CountryName', 'CityName'], 'string', 'max' => 100],
- [['Address', 'Telephone'], 'string', 'max' => 255],
- [['ChannelID'], 'integer'],
- [['name1', 'hotelId1'], 'safe']
- ];
- }
-
- /**
- * Des:请不要随意添加修改次表 以免造成数据更新失败的问题
- * Name: attributeLabels
- * @return array
- * @author 倪宗锋
- */
- public function attributeLabels()
- {
- return [
- 'HotelID' => 'HotelID',
- 'HotelName' => 'HotelName',
- 'Telephone' => 'Telephone',
- 'CountryName' => 'CountryName',
- 'CityName' => 'CityName',
- 'Address' => 'Address',
- 'ChannelID' => 'ChannelID',
- ];
- }
-
- public function getOperaHotel()
- {
- return $this->hasOne(OperaHotel::className(), ['HOTEL_ID' => 'HotelId']);
- }
- public function getBaseArea()
- {
- return $this->hasOne(BaseArea::className(), ['ID' => 'AREA_ID']);
- }
-
- /**
- * Des:更新酒店数据-携程酒店
- * Name: upDateCtrip
- * @param $prodArr
- * @return bool
- * @throws \yii\db\Exception
- * @author 倪宗锋
- */
- public function upDateCtrip($prodArr)
- {
- /**清除当前渠道的所有酒店数据*/
- \Yii::$app->db->createCommand()->delete(static::tableName(), ['=', 'ChannelID', \Yii::$app->params['ctrip']['relation_supplier_id']])->execute();
- //插入数据
- $prodValues = [];
- $prodKeys = array_keys($this->attributes);
- foreach ($prodArr as $key => $val) {
- $prodVal = [];
- $prodVal[] = $val['Hotel'];
- $prodVal[] = $val['HotelName'];
- $prodVal[] = $val['CountryName'];
- $prodVal[] = $val['CityName'];
- $prodVal[] = $val['Address'];
- $prodVal[] = is_array($val['Telephone']) ? json_encode($val['Telephone']) : $val['Telephone'];
- $prodVal[] = \Yii::$app->params['ctrip']['relation_supplier_id'];//1标识携程
- $prodValues[] = $prodVal;
- }
- $count = \Yii::$app->db->createCommand()->batchInsert(static::tableName(), $prodKeys, $prodValues)->execute();
- if ($count == 0) {
- return false;
- }
- return true;
- }
-
- /**
- * Des:获取所有记录
- * Name: getListForSet
- * @return array|\yii\db\ActiveRecord[]
- * @author 倪宗锋
- */
- public function getListForSet()
- {
- $sql = "
- SELECT a.*,ifnull(c.HOTEL_NAME,'') AS 'name1',b.HotelId AS 'hotelId1',if(b.HotelId IS NULL, 1, 0) AS maped
- FROM channel_hotel a
- LEFT JOIN channel_hotel_relation b ON a.HotelID = b.ChannelHotelId AND b.ChannelId=".\Yii::$app->params['ctrip']['relation_supplier_id']."
- LEFT JOIN opera_hotel c ON b.HotelId = c.HOTEL_ID
- WHERE a.ChannelID =".\Yii::$app->params['ctrip']['relation_supplier_id']."
- ORDER BY maped , CONVERT(a.HotelName USING GBK) ASC
- ";
- $db = \Yii::$app->db;
- $result = $db->createCommand($sql)->queryAll();
- return $result;
- }
-
- /**
- * Des:获取酒店信息 根据 渠道酒店ID
- * Name: getHotelInfoChannelHotelId
- * @param $hotelId
- * @return array
- * @author 倪宗锋
- */
- public function getHotelInfoChannelHotelId($hotelId)
- {
- $sql = "SELECT a.HotelID,a.HotelName,c.HOTEL_ID,c.HOTEL_NAME
- from channel_hotel a
- LEFT JOIN channel_hotel_relation b on a.HotelID = b.ChannelHotelId
- LEFT JOIN opera_hotel c on b.HotelId = c.HOTEL_ID
- WHERE a.HotelID = '{$hotelId}'
- ";
- $db = \Yii::$app->db;
- $result = $db->createCommand($sql)->queryOne();
- return $result;
- }
-
- public function search($params, $user)
- {
- $query = ChannelHotel::find();
- $query->from(ChannelHotel::tableName() . ' as a');
- $this->load($params);
-
- $query->addSelect([
- "a.*",
- "ifnull(c.HOTEL_NAME,'') as 'name1'",
- "b.HotelId as hotelId1",
- "if(b.HotelId is null, 0, 1) as mapped"
- ]);
- $query->leftJoin(HotelRelation::tableName() . ' as b',
- [
- 'a.HotelId' => new Expression('b.ChannelHotelId'),
- 'b.ChannelId' => \Yii::$app->params['ctrip']['relation_supplier_id']
- ]);
- $query->leftJoin(OperaHotel::tableName() . ' as c', ['b.HotelId' => new Expression('c.HOTEL_ID')]);
-
- $query->andFilterWhere([
- 'a.ChannelId' => \Yii::$app->params['ctrip']['relation_supplier_id'],
- 'a.HotelId' => $this->HotelID,
- 'if(b.HotelId is null, 0, 1)' => $this->hotelId1 === '' ? null : $this->hotelId1,
- 'c.principal' => $user //只显示运营负责人为自己的酒店
- ]);
-
- $query->andFilterWhere([
- 'and',
- ['like', 'HotelName', $this->HotelName],
- ['like', 'CityName', $this->CityName],
- ['like', 'Address', $this->Address],
- ['like', 'Telephone', $this->Telephone],
- ['like', 'HOTEL_NAME', $this->name1],
- ]);
-
- $query->orderBy('mapped DESC, CONVERT(a.HotelName USING GBK) ASC');
- $dataProvider = new ActiveDataProvider([
- // 'totalCount' => $count,
- 'query' => $query,
- 'sort' => false
- // 'pagination' => false
- ]);
-
- return $dataProvider;
- }
-
- public function getParamsForCtrip($params)
- {
- $sql = "SELECT a.ChannelID,a.RoomId,b.ID,b.HOTEL_ID,b.ROOM_NAME
- from channel_hotel a,opera_hotel b
- WHERE a.ChannelID = ".\Yii::$app->params['ctrip']['relation_supplier_id']." and a.HotelId = {$params['channelRoomId']} and b.ID={$params['HotelId']}";
- $db = \Yii::$app->db;
- $result = $db->createCommand($sql)->queryOne();
- return $result;
- }
- }
|