示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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>();
                }
            });
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }