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; } }