/// <summary> /// 新增供酒店详情 /// </summary> /// <param name="model"></param> /// <returns></returns> public static BaseResponse Insert(H_HotelInfoModel model) { var res = new BaseResponse(); if (string.IsNullOrEmpty(model.HIName)) { res.Msg = "酒店名称不能为空"; return(res); } var id = new H_HotelInfoAccess().Add(model); if (id <= 0) { res.Msg = "新增失败"; return(res); } else { res = new BaseResponse { AddId = (int)id, IsSuccess = 1 }; } return(res); }
/// <summary> /// 修改酒店详情 /// </summary> /// <param name="model"></param> /// <returns></returns> public static BaseResponse Update(H_HotelInfoModel model) { var res = new BaseResponse(); if (model.Id <= 0) { res.Msg = "无效的酒店"; return(res); } if (string.IsNullOrEmpty(model.HIName)) { res.Msg = "酒店名称不能为空"; return(res); } model = CommonHelper.CheckPropertiesNull(model); var i = new H_HotelInfoAccess().Update(model); res = new BaseResponse { IsSuccess = i ? 1 : 0, Msg = i ? string.Empty : "更新失败", }; return(res); }
/// <summary> /// 酒店新增 /// </summary> private static void HotelInsert(List <XiWanHotelInfo> list) { var xwList = new List <XiWanHotelInfo>(); list?.ForEach(x => { xwList.Add(x); if (xwList.Count == 10) { var wxIds = xwList.Select(a => a.HotelId).ToList(); var hDb = new H_HotelInfoAccess(); var dbList = hDb.Query().Where(h => h.HIOutId.In(wxIds) && h.HIOutType == 2)?.ToList()?.Select(h => h.HIOutId)?.ToList(); wxIds = wxIds.Where(a => !dbList.Contains(a))?.ToList(); var addList = new List <H_HotelInfoModel>(); wxIds?.ForEach(a => { var hotel = xwList.FirstOrDefault(xx => xx.HotelId == a); var model = new H_HotelInfoModel() { HIIsValid = 1, HIOutId = hotel.HotelId, HIOutType = 2, HIName = hotel.HotelName, HIAddName = "喜玩新增", }; var id = (int)hDb.Add(model); //增量同步 //OpenApi.SysInfo(id); OpenApi.HotelOffline(id, 1); logDb.AddLog(id, $"喜玩新增酒店:{hotel.HotelId}:{hotel.HotelName}", ResourceLogType.HotelAdd); }); //if (addList != null && addList.Count > 0) //{ // hDb.AddBatch(addList); //} xwList = new List <XiWanHotelInfo>(); } }); }
/// <summary> /// 单酒店处理房型价格 /// </summary> /// <param name="hotel"></param> private static DataResult SetRoomRate(H_HotelInfoModel hotel, DateTime start, int top) { var result = new DataResult(); result.Data = string.Empty; result.Message = $"{hotel.Id}-{hotel.HIName}-"; start = start.Year <= 2000 ? DateTime.Now : start; var roomdb = new H_HotelRoomAccess(); var roomType = roomdb.Query().Where(x => x.HIId == hotel.Id && x.HROutType == 1).ToList(); roomType?.ForEach(x => { try { var priceRtn = GetYdPrice(hotel.HIOutId, start, top, x); //价格 var storeRtn = GetYdStore(hotel.HIOutId, start, top, x); //库存 if (priceRtn != null && priceRtn.result != null) { var rrDb = new H_HotelRoomRuleAccess(); var pDb = new H_HoteRulePriceAccess(); priceRtn.result.ForEach(p => { var oldRule = rrDb.Query().Where(rr => rr.HRROutId == p.roomTypeId && rr.HRROutType == 1 && rr.HIId == hotel.Id && rr.HRRName == p.roomRateTypeName ).FirstOrDefault(); var newStore = storeRtn?.result?.FirstOrDefault(ns => ns.roomTypeId == p.roomTypeId && ns.accDate == p.accDate); if (oldRule == null) { oldRule = new H_HotelRoomRuleModel { HRRName = p.roomRateTypeName ?? string.Empty, HRROutId = p.roomTypeId, HRRIsValid = 1, HRROutType = 1, HIId = hotel.Id, Id = 0, HRId = x.Id, HRRAddName = "亚朵新增", HRRAddTime = DateTime.Now, HRRBreakfastRule = 0, HRRBreakfastRuleName = string.Empty, HRRCancelRule = 0, HRRCancelRuleName = string.Empty, HRRSourceId = 10104, HRRSourceName = "集团直连", HRRSupplierId = 1, HRRSupplierName = "亚朵集团", HRRUpdateName = string.Empty, HRRUpdateTime = DateTime.Now }; oldRule.Id = (int)rrDb.Add(oldRule); logDb.AddLog(hotel.Id, $"亚朵新增策略:{hotel.HIOutId}:{hotel.HIName}:{ p.roomTypeId}", ResourceLogType.RuleAdd); } //else //{ // rrDb.Update().Set(rr => rr.HRRSupplierName == "亚朵集团" && rr.HRRSupplierId == 1).Execute(); //} if (oldRule != null && oldRule.Id > 0) { var date = DateTime.MinValue; DateTime.TryParse(p.accDate, out date); var dateInit = ConvertHelper.ToInt32(date.ToString("yyyyMMdd"), 0); var price = pDb.Query().Where(pr => pr.HRRId == oldRule.Id && pr.HRPDateInt == dateInit).FirstOrDefault(); if (price == null || price.Id <= 0) {//新增价格和库存 price = new H_HoteRulePriceModel { Id = 0, HIId = hotel.Id, HRId = x.Id, HRPAddName = "亚朵新增", HRPAddTime = DateTime.Now, HRPContractPrice = p.roomRate, HRPDate = date, HRPCount = newStore?.inventoryNum ?? 0, HRPDateInt = dateInit, HRPIsValid = 1, HRPRetainCount = 0, HRPSellPrice = p.roomRate, HRPStatus = 1, HRPUpdateName = string.Empty, HRPUpdateTime = DateTime.Now, HRRId = oldRule.Id }; price.Id = (int)pDb.Add(price); logDb.AddLog(hotel.Id, $"亚朵新增价格:{hotel.HIOutId}:{hotel.HIName}:{ p.roomTypeId}:{p.roomRate }:{newStore?.inventoryNum ?? 0}:{price.HRPDateInt}", ResourceLogType.PriceAdd); } else { var sql = pDb.Update().Where(pr => pr.Id == price.Id); if (newStore != null) { sql.Set(pr => pr.HRPCount == newStore.inventoryNum); } sql.Set(pr => pr.HRPContractPrice == p.roomRate && pr.HRPSellPrice == p.roomRate && pr.HRPUpdateName == "亚朵更新" && pr.HRPUpdateTime == DateTime.Now ).Execute(); logDb.AddLog(hotel.Id, $"亚朵更新价格:{hotel.HIOutId}:{hotel.HIName}:{ p.roomTypeId}:{p.roomRate }:{newStore?.inventoryNum ?? 0}:{price.HRPDateInt}", ResourceLogType.PriceUpdate); } OpenApi.AddRuleInfo(hotel.Id, x.Id, 0, price.Id, 1); OpenApi.SysInfo(x.Id); } }); } else { result.Message += $"{x.Id}-{x.HRName}没有价格数据;"; } } catch (Exception ex) { LogHelper.Error($"{hotel.Id}-{hotel.HIName}-{x.Id}-{x.HRName}", ex); } }); return(result); }
/// <summary> /// 获取酒店列表 /// </summary> /// <returns></returns> public static DataResult GetHotelList(int maxId, int top) { var result = new DataResult() { Data = $"{maxId + top};" }; var citylist = new Sys_AreaMatchAccess().Query().Where(x => x.OutType == 1 && x.HbId > maxId).ToList(); if (citylist == null || !citylist.Any()) { result.Message = $"{maxId}未查询到数据"; result.Data = $"{maxId + top}"; return(result); } var log = string.Empty; foreach (var item in citylist) { result.Data += $"[{item.OutCityId}]:"; Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("appId", AtourSignUtil.AtourAuth_APPID); dic.Add("cityId", item.OutCityId.ToString()); var sign = AtourSignUtil.GetSignUtil(dic); var url = AtourSignUtil.AtourAuth_URL + "baoku/hotel/getHotelList"; url += "?appId=" + AtourSignUtil.AtourAuth_APPID + "&cityId=" + item.OutCityId.ToString() + "&sign=" + sign; var hotellst = ApiHelper.HttpGet(url); if (!string.IsNullOrWhiteSpace(hotellst)) { var baseCity = new Sys_AreaInfoAccess2().Query().FirstOrDefault(x => x.id == item.HbId); var baseProv = new Sys_AreaInfoAccess2().Query().FirstOrDefault(x => x.id == baseCity.pid); var data = hotellst.ToObject <AtourHotelResponse>(); result.Data += $"{baseCity.name}酒店数量:{data?.result?.Count};"; data?.result?.ForEach(x => { var hDb = new H_HotelInfoAccess(); var model = hDb.Query().Where(h => h.HIOutId == x.hotelId && h.HIOutType == 1).FirstOrDefault(); int id = model?.Id ?? 0; if (model == null || id <= 0) { model = new H_HotelInfoModel() { HIOutId = x.hotelId, HIOutType = 1, HIName = x.name ?? String.Empty, HIAddress = x.address ?? String.Empty, HILinkPhone = x.tel ?? string.Empty, HICity = baseCity.name, HICityId = baseCity.id, HIProvince = baseProv.name, HIProvinceId = baseCity.pid, HIAddName = "", HIAddTime = DateTime.Now, HICheckIn = string.Empty, HICheckOut = string.Empty, HIChildRemark = string.Empty, HICounty = string.Empty, HICountyId = 0, HIFacilities = string.Empty, HIHotelIntroduction = string.Empty, HIIsValid = 1, HIPetRemark = string.Empty, HIShoppingArea = string.Empty, HIShoppingAreaId = 0, HIUpdateName = string.Empty, HIUpdateTime = DateTime.Now, HIGdLonLat = $"{x.longitude},{x.latitude}" }; id = (int)(hDb.Add(model)); //OpenApi.SysInfo(id); OpenApi.HotelOffline(id, 1); logDb.AddLog(id, $"亚朵新增酒店:{x.hotelId}:{x.name}", ResourceLogType.HotelAdd); } else { //更新 //hDb.Update().Where(h=>h.Id==id) //.Set(h=>h.); } if (id > 0) { PidInit(x, id); } }); } else { result.Data += $"无数据;"; } } return(result); }