Example #1
0
        /// <summary>
        /// 获取酒店基础信息
        /// </summary>
        /// <returns></returns>
        public DataResult GetHotelList()
        {
            var result   = new DataResult();
            var url      = AtourAuth_URL + "hotel/getHotelList";
            var citylist = AreaBll.GetCityList();

            if (citylist != null && citylist.Any())
            {
                foreach (var item in citylist)
                {
                    Dictionary <string, string> dic = new Dictionary <string, string>();
                    dic.Add("appid", AtourAuth_APPID);
                    dic.Add("cityId", item.AA_CityId.ToString());
                    var sign     = AtourSignUtil.GetSignUtil(dic);
                    var hotellst = ApiHelper.HttpGet(url + "?appId=" + AtourAuth_APPID + "&cityId=" + item.AA_CityId.ToString() + "&sign=" + sign);
                    if (!string.IsNullOrWhiteSpace(hotellst))
                    {
                        var data = JsonConvert.DeserializeObject <AtourHotelResponse>(hotellst);
                        if (data != null && data.msg == "success" && data.result.Any())
                        {
                            foreach (var hotel in data.result)
                            {
                            }
                        }
                    }
                }
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// 获取Url参数
        /// </summary>
        /// <param name="dic"></param>
        /// <returns></returns>
        private static string GetUrlPara(Dictionary <string, string> dic)
        {
            var rtn  = string.Empty;
            var sign = AtourSignUtil.GetSignUtil(dic);

            dic.Add("sign", sign);
            foreach (var d in dic)
            {
                if (!string.IsNullOrEmpty(d.Value))
                {
                    rtn += $"&{d.Key}={d.Value}";
                }
            }
            rtn = $"?{rtn.TrimStart('&')}";
            return(rtn);
        }
Example #3
0
        //库存 baoku/hotel/getRoomInventoryList、

        #region 城市匹配


        /// <summary>
        /// 获取城市列表
        /// </summary>
        /// <returns></returns>

        public static DataResult GetCityList()
        {
            var result = new DataResult();
            var url    = AtourSignUtil.AtourAuth_URL + "city/getCityList";
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("appId", AtourSignUtil.AtourAuth_APPID);
            var sign     = AtourSignUtil.GetSignUtil(dic);
            var citylist = ApiHelper.HttpGet(url + "?appId=" + AtourSignUtil.AtourAuth_APPID + "&sign=" + sign);

            if (string.IsNullOrWhiteSpace(citylist))
            {
                result = new DataResult {
                    Code = DataResultType.Fail, Message = "系统异常"
                };
            }

            var oldList   = new Sys_AreaInfoAccess2().Query().Where(x => x.type == 3).ToList();
            var modellist = new List <Sys_AreaMatchModel>();
            var data      = citylist.ToObject <AtourCityResponse>();

            data?.result?.ForEach(n =>
            {
                var old   = oldList.FirstOrDefault(x => x.name == n.cityName.Replace("市", ""));
                var model = new Sys_AreaMatchModel
                {
                    OutProvId   = 0,
                    OutProvName = n.provinceName,
                    OutCityId   = n.cityId,
                    OutCityName = n.cityName,
                    HbId        = old?.id ?? 0,
                    OutType     = 1
                };
                var db = new Sys_AreaMatchAccess();
                var m  = db.Query().Where(x => x.OutType == 1 && x.OutCityId == n.cityId).FirstOrDefault();
                if (m == null || m.Id <= 0)
                {
                    db.Add(model);
                    result.Data += $"{old?.id}:{n.cityName};";
                }
                else
                {
                }
            });

            return(result);
        }
Example #4
0
        /// <summary>
        /// 酒店详情
        /// </summary>
        /// <param name="maxId"></param>
        /// <param name="top"></param>
        /// <returns></returns>
        public static DataResult GetHotelDetail(int maxId, int top)
        {
            var result = new DataResult();

            var hDb       = new H_HotelInfoAccess();
            var hotelList = hDb.Query().Where(h => h.Id >= maxId && h.HIOutType == 1).Top(top)?.ToList();

            if (hotelList == null || hotelList.Count == 0)
            {
                return(result);
            }

            hotelList.ForEach(x =>
            {
                var dic = new Dictionary <string, string>();
                dic.Add("appId", AtourSignUtil.AtourAuth_APPID);
                dic.Add("hotelId", x.HIOutId.ToString());
                var sign  = AtourSignUtil.GetSignUtil(dic);
                var url   = AtourSignUtil.AtourAuth_URL + "baoku/hotel/getHotel";
                url      += "?appId=" + AtourSignUtil.AtourAuth_APPID + "&hotelId=" + x.HIOutId + "&sign=" + sign;
                var rtn   = ApiHelper.HttpGet(url)?.ToObject <AtourHotelDetailResponse>();
                var hotel = rtn?.result;
                if (hotel?.hotelId > 0)
                {
                    hDb.Update().Set(h =>
                                     h.HIName == hotel.name &&
                                     h.HIUpdateName == "亚朵数据更新" &&
                                     h.HIUpdateTime == DateTime.Now
                                     ).Where(h => h.Id == x.Id).Execute();
                    logDb.AddLog(x.Id, $"亚朵更新酒店:{hotel.hotelId}:{hotel.name}", ResourceLogType.HotelUpdate);

                    //更新图片
                    PidInit(hotel, x.Id);

                    //会员 暂时未开发
                }
                else
                {
                    result.Message = rtn?.msg ?? "系统异常";
                }
            });

            return(result);
        }
Example #5
0
        /// <summary>
        /// 获取城市列表
        /// </summary>
        /// <returns></returns>

        public DataResult GetCityList()
        {
            var result = new DataResult();
            var url    = AtourAuth_URL + "city/getCityList";
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("appid", AtourAuth_APPID);
            var sign     = AtourSignUtil.GetSignUtil(dic);
            var citylist = ApiHelper.HttpGet(url + "?appId=" + AtourAuth_APPID + "&sign=" + sign);

            if (!string.IsNullOrWhiteSpace(citylist))
            {
                var data = JsonConvert.DeserializeObject <AtourCityResponse>(citylist);
                if (data != null && data.msg == "success" && data.result.Any())
                {
                    var modellist = new List <H_DistributorAreaInfoModel>();
                    foreach (var item in data.result)
                    {
                        var cityid = AreaBll.IsInTable(item.cityId);
                        if (cityid == 0)
                        {
                            var model = new H_DistributorAreaInfoModel
                            {
                                AA_ProvinceId   = 0,
                                AA_ProvinceName = item.provinceName,
                                AA_CityId       = item.cityId,
                                AA_CityName     = item.cityName,
                                AA_Type         = 1
                            };
                            modellist.Add(model);
                        }
                    }
                    var issuccess = AreaBll.Insert(modellist);
                    result.Code = issuccess ? DataResultType.Sucess : DataResultType.Fail;
                }
            }
            return(result);
        }
Example #6
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);
        }
Example #7
0
        //房型 baoku/hotel/getRoomTypeList
        /// <summary>
        /// 酒店房型
        /// </summary>
        /// <param name="maxId"></param>
        /// <param name="top"></param>
        /// <returns></returns>
        public static DataResult GetRoomType(int id, int top)
        {
            var result = new DataResult();

            result.Data = string.Empty;
            var hDb       = new H_HotelInfoAccess();
            var hotelList = hDb.Query().Where(h => h.Id >= id && h.HIOutType == 1).Top(top)?.ToList();

            if (hotelList == null || hotelList.Count == 0)
            {
                result.Message = "未查询到酒店";
                return(result);
            }
            var indexCount = 0;

            hotelList.ForEach(x =>
            {
                var dic = new Dictionary <string, string>();
                dic.Add("appId", AtourSignUtil.AtourAuth_APPID);
                dic.Add("hotelId", x.HIOutId.ToString());

                var sign = AtourSignUtil.GetSignUtil(dic);
                var url  = AtourSignUtil.AtourAuth_URL + "baoku/hotel/getRoomTypeList";
                url     += "?appId=" + AtourSignUtil.AtourAuth_APPID + "&hotelId=" + x.HIOutId + "&sign=" + sign;
                var rtn  = ApiHelper.HttpGet(url)?.ToObject <YdRoomTypeResponse>();
                var list = rtn?.result;
                if (list?.Count > 0)
                {
                    if (x.HIIsValid == 0)
                    {
                        hDb.Update().Where(h => h.Id == x.Id)
                        .Set(h => h.HIIsValid == 1 && h.HIUpdateName == "亚朵更新有效" && h.HIUpdateTime == DateTime.Now)
                        .Execute();
                        OpenApi.HotelOffline(x.Id, 1);
                        logDb.AddLog(x.Id, $"亚朵更新有效:{x.HIOutId}:{x.HIName}", ResourceLogType.HotelUpdate);
                    }

                    var listId     = list.Select(l => l.roomTypeId).ToList();
                    var db         = new H_HotelRoomAccess();
                    var room       = db.Query().Where(r => r.HIId == x.Id).ToList();
                    var updateList = room?.Where(r => listId.Contains(r.HROutId) && r.HROutType == 1)?.ToList();
                    result.Data   += $"[{indexCount++}]{x.HIName}新增房型{list.Count()}个;";
                    list.ForEach(l =>
                    {
                        var baseRoom = room?.Where(r => r.HROutId == l.roomTypeId && r.HIId == x.Id && r.HROutType == 1)?.FirstOrDefault();
                        if (baseRoom == null || baseRoom.Id <= 0)
                        {
                            var roomId = db.Add(new H_HotelRoomModel
                            {
                                Id            = 0,
                                HIId          = x.Id,
                                HROutType     = 1,
                                HROutId       = l.roomTypeId,
                                HRName        = l.roomTypeName ?? string.Empty,
                                HRRoomSIze    = string.Empty,
                                HRAddName     = "亚朵新增",
                                HRAddTime     = DateTime.Now,
                                HRBedType     = GetBedType(l.bedRemark, l.roomTypeName ?? string.Empty),
                                HRBedSize     = GetBedSize(l.bedRemark, l.roomTypeName ?? string.Empty),
                                HRFloor       = string.Empty,
                                HRIsValid     = 1,
                                HRPersonCount = 0,
                                HRUpdateName  = string.Empty,
                                HRUpdateTime  = DateTime.Now,
                                HRWindowsType = 0
                            });
                            logDb.AddLog(x.Id, $"亚朵新增房型:{x.HIOutId}:{x.HIName};{l.roomTypeId}", ResourceLogType.RoomAdd);
                        }
                        else
                        {
                            if (baseRoom.HRBedType == 0)
                            {
                                db.Update().Set(rr => rr.HRBedType == GetBedType(l.bedRemark, l.roomTypeName ?? string.Empty))
                                .Set(rr => rr.HRBedSize == GetBedSize(l.bedRemark, l.roomTypeName ?? string.Empty))
                                .Set(rr => rr.HRUpdateTime == DateTime.Now)
                                .Where(rr => rr.Id == baseRoom.Id).Execute();
                                logDb.AddLog(x.Id, $"亚朵更新房型床型:{x.HIOutId}:{x.HIName};{l.roomTypeId}", ResourceLogType.RoomUpdate);
                            }
                        }
                        //是否要修改
                    });
                    OpenApi.AddRoomInfo(x.Id);
                }
                else
                {
                    //房型数量为0  酒店无效
                    hDb.Update().Where(h => h.Id == x.Id)
                    .Set(h => h.HIIsValid == 0 && h.HIUpdateName == "亚朵无房型更新" && h.HIUpdateTime == DateTime.Now)
                    .Execute();
                    OpenApi.HotelOffline(x.Id, 0);
                    result.Message = rtn?.msg ?? "系统异常";
                    logDb.AddLog(x.Id, $"亚朵无房型更新:{x.HIOutId}:{x.HIName}", ResourceLogType.HotelDelete);
                }
                //查询最近三天的价格和库存
                var rrRtn    = GetRoomRate(x.HIOutId, DateTime.Now, 7);
                result.Data += rrRtn.Message?.ToString() ?? string.Empty;
            });

            return(result);
        }
Example #8
0
        /// <summary>
        /// 亚朵查询订单
        /// </summary>
        /// <returns></returns>
        public DataResult AtourSearchOrder(string orderid)
        {
            var result     = new DataResult();
            var ordermodel = OrderBll.GetModel(orderid);
            //日志
            var logmodel = new HO_HotelOrderLogModel
            {
                HOLOrderId       = orderid,
                HOLLogType       = 1,//订单日志
                HOLAddId         = 0,
                HOLAddName       = "系统",
                HOLAddDepartId   = 0,
                HOLAddDepartName = "系统",
                HOLAddTime       = DateTime.Now
            };

            if (ordermodel.Id > 0 && !string.IsNullOrWhiteSpace(ordermodel.HOSupplierSerialId))
            {
                Dictionary <string, string> dic = new Dictionary <string, string>();
                dic.Add("orderNo", orderid);
                dic.Add("atourOrderNo", ordermodel.HOSupplierSerialId);
                dic.Add("appId", AtourAuth_APPID);
                var sign         = AtourSignUtil.GetSignUtil(dic);
                var url          = AtourAuth_URL + "baoku/order/queryOrder";
                var orderrequest = new
                {
                    orderNo      = orderid,
                    atourOrderNo = ordermodel.HOSupplierSerialId,
                    appId        = AtourAuth_APPID,
                    sign         = sign
                };
                StringBuilder  parm    = new StringBuilder();
                PropertyInfo[] request = orderrequest.GetType().GetProperties();
                int            j       = 0;
                foreach (var t in request)
                {
                    if (j > 0)
                    {
                        parm.Append("&");
                    }
                    parm.AppendFormat("{0}={1}", t.Name, t.GetValue(orderrequest, null));
                    j++;
                }
                var orderresponse = ApiHelper.HttpPost(url, parm.ToString(), "application/x-www-form-urlencoded");
                if (!string.IsNullOrWhiteSpace(orderresponse))
                {
                    var searchstatus = "";
                    var data         = JsonConvert.DeserializeObject <JObject>(orderresponse);
                    if (data["msg"].ToString().ToLower() == "success")
                    {
                        result.Code = DataResultType.Sucess;
                        var oldstatus = GetStatus(ordermodel.HOStatus);
                        if (data["result"] != null && data["result"].Any())
                        {
                            var updatestatus = data["result"].FirstOrDefault();
                            if (updatestatus != null)
                            {
                                searchstatus = updatestatus["status"].ToString();
                            }
                        }
                        var up        = OrderBll.UpdateAutorSataus(orderid, searchstatus);
                        var neworder  = OrderBll.GetModel(orderid);
                        var newstatus = GetStatus(neworder.HOStatus);
                        if (oldstatus != newstatus)
                        {
                            logmodel.HOLRemark = "亚朵查询订单接口返回:" + JsonConvert.SerializeObject(orderresponse);
                            OrderLogBll.AddOrderModel(logmodel);
                            logmodel.HOLRemark = "亚朵订单更新:亚朵返回订单状态" + searchstatus + "(1-预定 2-取消 3-夜审取消(即noshow) 4-入住 5-离店)" + "我方订单状态:" + oldstatus;
                            OrderLogBll.AddOrderModel(logmodel);
                            logmodel.HOLRemark = "我方订单更新:更新结果=" + (up > 0 ? "更新成功" : "更新失败") + "当前订单状态:" + newstatus;
                            OrderLogBll.AddOrderModel(logmodel);
                            //状态通知
                            int status = 0;
                            switch (data["result"]["status"].ToString())
                            {
                            case "1":
                                status = 2;
                                break;

                            case "2":
                                status = 1;
                                break;

                            case "3":
                                status = 5;
                                break;

                            case "4":
                                status = 3;
                                break;

                            case "5":
                                status = 4;
                                break;
                            }
                            if (status > 0)
                            {
                                var api = OpenApi.HotelOrderStatus(orderid, status);
                                logmodel.HOLRemark = "状态更改通知飞猪:请求参数{id=" + orderid + ",状态:" + status + "};返回结果:" + api;
                                OrderLogBll.AddOrderModel(logmodel);
                            }
                        }
                    }
                    else
                    {
                        result.Code        = DataResultType.Fail;
                        result.Message     = data["msg"].ToString();
                        logmodel.HOLRemark = "亚朵订单更新:接口返回失败,失败原因:" + data["msg"].ToString();
                        OrderLogBll.AddOrderModel(logmodel);
                    }
                }
            }

            return(result);
        }
Example #9
0
        /// <summary>
        /// 亚朵操作订单
        /// </summary>
        /// <returns></returns>
        public DataResult AtourCancelOrder(string orderid)
        {
            var result = new DataResult();

            result.Code = DataResultType.Fail;
            //日志
            var logmodel = new HO_HotelOrderLogModel
            {
                HOLOrderId       = orderid,
                HOLLogType       = 1,//订单日志
                HOLAddId         = 0,
                HOLAddName       = "系统",
                HOLAddDepartId   = 0,
                HOLAddDepartName = "系统",
                HOLAddTime       = DateTime.Now,
            };
            var ordermodel = OrderBll.GetModel(orderid);

            if (ordermodel.Id > 0 && !string.IsNullOrWhiteSpace(ordermodel.HOSupplierSerialId))
            {
                Dictionary <string, string> dic = new Dictionary <string, string>();
                dic.Add("atourOrderNo", ordermodel.HOSupplierSerialId);
                dic.Add("appId", AtourAuth_APPID);
                var sign         = AtourSignUtil.GetSignUtil(dic);
                var url          = AtourAuth_URL + "baoku/order/cancelOrder";
                var orderrequest = new
                {
                    atourOrderNo = ordermodel.HOSupplierSerialId,
                    appId        = AtourAuth_APPID,
                    sign         = sign
                };
                StringBuilder  parm    = new StringBuilder();
                PropertyInfo[] request = orderrequest.GetType().GetProperties();
                int            j       = 0;
                foreach (var t in request)
                {
                    if (j > 0)
                    {
                        parm.Append("&");
                    }
                    parm.AppendFormat("{0}={1}", t.Name, t.GetValue(orderrequest, null));
                    j++;
                }
                var orderresponse = ApiHelper.HttpPost(url, parm.ToString(), "application/x-www-form-urlencoded");
                logmodel.HOLRemark = "亚朵取消请求:" + parm.ToString() + "||亚朵取消接口返回:" + JsonConvert.SerializeObject(orderresponse);
                OrderLogBll.AddOrderModel(logmodel);
                if (!string.IsNullOrWhiteSpace(orderresponse))
                {
                    var data = JsonConvert.DeserializeObject <JObject>(orderresponse);
                    if (data["msg"].ToString().ToLower() == "success")
                    {
                        result.Code = DataResultType.Sucess;
                        OrderBll.UpdateAutorSataus(orderid, "2");
                        OpenApi.HotelOrderStatus(orderid, 5);//noshow
                    }
                    else
                    {
                        result.Code = DataResultType.Fail;
                    }
                }
            }

            return(result);
        }
Example #10
0
        /// <summary>
        /// 亚朵订单
        /// </summary>
        /// <param name="createrequset"></param>
        /// <param name="orderseridid"></param>
        /// <param name="ruleid"></param>
        /// <param name="qlhotelid"></param>
        /// <returns></returns>
        public DataResult AtourOrder(CreateRequset createrequset, string orderseridid, int ruleid, int qlhotelid)
        {
            var result       = new DataResult();
            var item         = createrequset.orderModel;
            var orderrequest = new OrderRequest
            {
                appId = AtourAuth_APPID,
                //sign = sign,
                hotelId        = item.hotelId,
                mebId          = Convert.ToInt32(AtourAuth_MebId),
                roomTypeId     = item.roomTypeId,
                roomNum        = item.roomNum,
                roomRateList   = JsonConvert.SerializeObject(item.roomRateList),
                arrival        = item.arrival,
                assureTime     = item.assureTime,
                departure      = item.departure,
                mobile         = "18962529773",
                contactName    = item.contactName,
                guestName      = item.guestName,
                source         = 10,
                subSource      = 85,
                roomRateTypeId = item.roomRateTypeId,
                thirdOrderNo   = item.thirdOrderNo,
                couponsList    = item.couponsList,
                remark         = item.remark,
            };
            Dictionary <string, string> dic = new Dictionary <string, string>();
            //dic.Add("appId", AtourAuth_APPID);
            Type entityType = orderrequest.GetType();

            PropertyInfo[] properties = entityType.GetProperties();
            for (int i = 0; i < properties.Length; i++)
            {
                if (properties[i].GetValue(orderrequest, null) != null)
                {
                    dic.Add(properties[i].Name, properties[i].GetValue(orderrequest, null).ToString());
                }
            }
            var sign = AtourSignUtil.GetSignUtil(dic);

            orderrequest.sign = sign;

            var           url  = AtourAuth_URL + "baoku/order/createOrder";
            StringBuilder parm = new StringBuilder();

            PropertyInfo[] request = orderrequest.GetType().GetProperties();
            int            j       = 0;

            foreach (var t in request)
            {
                if (j > 0)
                {
                    parm.Append("&");
                }
                parm.AppendFormat("{0}={1}", t.Name, t.GetValue(orderrequest, null));
                j++;
            }
            var orderresponse = ApiHelper.HttpPost(url, parm.ToString(), "application/x-www-form-urlencoded");
            //日志
            var logmodel = new HO_HotelOrderLogModel
            {
                HOLOrderId       = orderseridid,
                HOLLogType       = 1,//订单日志
                HOLAddId         = 0,
                HOLAddName       = "系统",
                HOLAddDepartId   = 0,
                HOLAddDepartName = "系统",
                HOLAddTime       = DateTime.Now
            };

            logmodel.HOLRemark = "亚朵下单请求:" + url + "||parm:" + parm.ToString() + "|| 接口返回:" + orderresponse;
            OrderLogBll.AddOrderModel(logmodel);
            if (!string.IsNullOrWhiteSpace(orderresponse))
            {
                var data  = JsonConvert.DeserializeObject <JObject>(orderresponse);
                var price = OrderBll.GetHotelPriceList(ruleid, Convert.ToDateTime(item.arrival), Convert.ToDateTime(item.departure));
                if (data["msg"].ToString().ToLower() == "success")
                {
                    var serialid = data["result"]["atourOrderNo"].ToString();

                    result.Code        = DataResultType.Sucess;
                    result.Data        = orderseridid;
                    logmodel.HOLRemark = "亚朵更新供应商订单流水号:流水号=" + serialid;
                    var upserialid = OrderBll.UpdatesSupplier(orderseridid, serialid, 0);
                    logmodel.HOLRemark = "更新结果:" + (upserialid > 0 ? "更新成功" : "更新失败");
                    OrderLogBll.AddOrderModel(logmodel);
                    if (price != null && price.Any())
                    {
                        foreach (var i in price)
                        {
                            logmodel.HOLRemark = "亚朵更新库存:原有库存=" + i.HRPCount;
                            i.HRPCount         = i.HRPCount - 1 >= 0 ? i.HRPCount - 1 : 0;
                            var up = HotelRoomRuleBll.UpdateCount(i);
                            logmodel.HOLRemark += ",更新后库存=" + i.HRPCount + ",更新结果:" + up.Msg;
                            OrderLogBll.AddOrderModel(logmodel);
                        }
                    }
                    //下单成功通知
                    //OpenApi.HotelOrderStatus(orderseridid, 2);
                }
                else
                {
                    if (data["level"].ToString() == "80034")//满房
                    {
                        var upstock = YaDuoApiService.GetRoomRate(item.hotelId, Convert.ToDateTime(item.arrival), 100000);
                        logmodel.HOLRemark = "满房更新酒店库存和价格:酒店id:" + qlhotelid + ",更新结果:" + upstock.Code;
                        OrderLogBll.AddOrderModel(logmodel);
                        if (price != null && price.Any())
                        {
                            var i = price.OrderBy(s => s.HRPDate).FirstOrDefault();
                            i.HRPCount = 0;
                            var up = HotelRoomRuleBll.UpdateCount(i);
                            logmodel.HOLRemark = "满房更新库存:待更新信息:" + JsonConvert.SerializeObject(i) + ",更新结果:" + up.IsSuccess;
                            OrderLogBll.AddOrderModel(logmodel);
                        }
                        //满房通知
                        //OpenApi.HotelOrderStatus(orderseridid, 1);
                    }
                    //if (data["level"].ToString() == "1006")//报价不存在或者不可订
                    //{
                    //    if (data["msg"].ToString().Contains("报价不可订"))
                    //    {
                    //        var neworder = OrderBll.GetModel(orderseridid);
                    //        var newprice = OrderBll.GetHotelPriceList(neworder.HRRId, neworder.HOCheckInDate, neworder.HOCheckOutDate);
                    //        if (price != null && price.Any())
                    //        {
                    //            var total = price.Sum(s => s.HRPContractPrice) * neworder.HORoomCount;
                    //            createrequset.orderModel.roomPrice = total.ToString();
                    //            if (createrequset.supplierSourceId == 1)
                    //            {
                    //                total = total * 0.97M;
                    //            }
                    //            if (neworder.HOSellPrice >= total)
                    //            {
                    //                AtourOrder(createrequset, orderseridid, ruleid, qlhotelid);
                    //            }
                    //        }
                    //    }
                    //}
                    result.Code    = DataResultType.Fail;
                    result.Message = data["msg"].ToString();
                    OrderBll.UpdatesSupplier(orderseridid, "", 2);
                }
            }
            return(result);
        }