public static OTA_HotelCacheChangeReturnEntity OTA_HotelCacheChange(int cityID, int? hotelId, DateTime cacheTime)
 {
     OTA_HotelCacheChangeCallEntity callEntity = new OTA_HotelCacheChangeCallEntity();
     callEntity.HotelCityCode = cityID;
     callEntity.HotelCode = hotelId;
     callEntity.CacheFromTimestamp = cacheTime;
     var rep = hotelOTAService.OTA_HotelCacheChange(callEntity);
     return rep;
 }
        /// <summary>
        /// 返回在查询时间戳到现在这个时间段、及要查酒店所在酒店城市ID号下的所有酒店价格缓存变化通知列表
        /// 若请求参数:HotelCode存在,则查询的是该酒店在该时间段内价格缓存变化列表
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public OTA_HotelCacheChangeReturnEntity OTA_HotelCacheChange(OTA_HotelCacheChangeCallEntity req)
        {
            var rep = new OTA_HotelCacheChangeReturnEntity();
            StringBuilder reqXml = new StringBuilder();
            reqXml.Append("<ns:OTA_HotelCacheChangeRQ Version=\"1.0\">");
            reqXml.AppendFormat("<ns:CacheSearchCriteria CacheFromTimestamp=\"{0}\">", req.CacheFromTimestamp.GetDateTimeFormats('s')[0].ToString());
            reqXml.AppendFormat("<ns:CacheSearchCriterion HotelCityCode=\"{0}\"", req.HotelCityCode);
            if (req.HotelCode > 0)
            {
                reqXml.AppendFormat(" HotelCode=\"{0}\"", req.HotelCode);
            }
            reqXml.Append("/>");
            reqXml.Append("</ns:CacheSearchCriteria>");
            reqXml.Append("</ns:OTA_HotelCacheChangeRQ>");
            req.RequestContent = reqXml.ToString();
            string repXml = HotelApiCall(req);
            //LogHelper.Info(repXml);
            //LogHelper
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(repXml);

            GetHeaderResult(xmlDoc,rep);

            var rsNode = xmlDoc.SelectSingleNode("Response/HotelResponse/OTA_HotelCacheChangeRS");
            string timeSpan = ((XmlElement)rsNode).GetAttribute("TimeStamp");
            var changeNodes = rsNode.SelectNodes("CacheChangeInfo");

            var changeItems = new List<HotelCacheChange>();
            HotelCacheChange changeItem = null;
            foreach (XmlNode node in changeNodes)
            {
                changeItem = new HotelCacheChange();
                changeItem.HotelCode = ((XmlElement)node).GetAttribute("HotelCode").Trim();
                var timeSpanElement = (XmlElement)node.SelectSingleNode("TimeSpan");
                changeItem.StartTime = timeSpanElement.GetAttribute("Start").Trim().ToDateTime();
                changeItem.EndTime = timeSpanElement.GetAttribute("End").Trim().ToDateTime();
                var otherInfoNode = (XmlElement)node.SelectSingleNode("OtherInfo");
                changeItem.RatePlanCode = otherInfoNode.GetAttribute("RatePlanCode");
                changeItems.Add(changeItem);
            }
            rep.HotelCacheChangeList = changeItems;
            return rep;
        }