Example #1
0
        private void InitPage()
        {
            Hashtable ht        = new Hashtable();
            string    fieldName = EnumHelper.GetEnumShowName(typeof(BusinessFieldType), FieldType);

            if (Request["type"] == BusinessType.Vehicle.GetHashCode().ToString())
            {
                // 车辆详细(介绍、价格体系、用户须知)
                VehicleManager vehicleManager = new VehicleManager();
                ht = vehicleManager.GetVehicleInfoByID(Request["id"]);
            }
            else if (Request["type"] == BusinessType.ChargingPies.GetHashCode().ToString())
            {
                // 充电桩/停车场
                ServiceAreaManager chargingPiesManager = new ServiceAreaManager();
                ht = chargingPiesManager.GetInfoByID(Request["id"]);
            }
            else if (Request["type"] == BusinessType.Pits.GetHashCode().ToString())
            {
                // 维修站
                PitsManager pitsManager = new PitsManager();
                ht = pitsManager.GetPitsInfoByID(Request["id"]);
            }
            if (ht != null && ht.Count > 0)
            {
                this.divContent.InnerHtml = ht[fieldName].ToString();
            }
        }
        /// <summary>
        /// 根据城市获取停车网点
        /// </summary>
        /// <param name="context"></param>
        private void GetForbidList(HttpContext context)
        {
            ObjectApiResp resp = new ObjectApiResp();

            resp.Code    = "-1";
            resp.Message = "";

            string citycode = "";

            citycode = context.Request["city"].ToString().Trim();

            SysSettingManager settingManager    = new SysSettingManager();
            string            returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");

            if (returnVehicleMode == "1")
            {
                ServiceAreaManager areaManager = new ServiceAreaManager();
                DataTable          dt          = areaManager.GetForbidListByCityCode(citycode);
                if (dt != null)
                {
                    resp.Data = dt;
                    resp.Code = "0";
                }
            }
            context.Response.Write(JsonConvert.SerializeObject(resp));
        }
Example #3
0
        private void BindParkList()
        {
            ServiceAreaManager areaManager = new ServiceAreaManager();
            DataTable          parkingList = areaManager.GetAllParkings(1, 9999);

            ParkingList.DataSource     = parkingList;
            ParkingList.DataTextField  = "ThisName";
            ParkingList.DataValueField = "ID";
            ParkingList.DataBind();
        }
        /// <summary>
        /// 绑定数据源
        /// </summary>
        private void DataBindGrid(bool isQuery = false)
        {
            ServiceAreaManager areaManager = new ServiceAreaManager();
            int count     = 0;
            int pageIndex = isQuery ? 1 : PageControl1.PageIndex;
            KeyValuePair <StringBuilder, IList <SqlParam> > keyValue = InitCondition();
            DataTable dt = areaManager.GetInfoPage(keyValue.Key, keyValue.Value, pageIndex, PageControl1.PageSize, ref count);

            ControlBindHelper.BindRepeaterList(dt, rp_Item);
            this.PageControl1.PageIndex   = pageIndex;
            this.PageControl1.RecordCount = Convert.ToInt32(count);
            this.PageControl1.PageChecking();
        }
Example #5
0
        public string Execute(Hashtable res)
        {
            if (!string.IsNullOrEmpty(SiteHelper.GetAppsetString("NearParkingKM")))
            {
                km = double.Parse(SiteHelper.GetAppsetString("NearParkingKM"));
            }
            if (!string.IsNullOrEmpty(SiteHelper.GetAppsetString("PageNum")))
            {
                pageNum = int.Parse(SiteHelper.GetAppsetString("PageNum"));
            }

            if (res["Longitude"] == null || res["Longitude"].ToString().Trim().Length <= 0 ||
                res["Latitude"] == null || res["Latitude"].ToString().Trim().Length <= 0 ||
                res["PageNum"] == null || res["PageNum"].ToString().Trim().Length <= 0 ||
                res["CurrentPage"] == null || res["CurrentPage"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                //pageNum = int.Parse(res["PageNum"].ToString().Trim());
                currentPage = int.Parse(res["CurrentPage"].ToString().Trim());
                string longitude = res["Longitude"].ToString().Trim();
                string latitude  = res["Latitude"].ToString().Trim();

                ListApiResp resp = new ListApiResp();
                resp.Code    = "-1";
                resp.Message = "";

                int count = 0;
                ServiceAreaManager areaManager = new ServiceAreaManager();
                DataTable          dt          = areaManager.GetNearParking(km, longitude, latitude, currentPage, pageNum, ref count);
                if (dt != null && dt.Rows.Count > 0)
                {
                    List <GetNearParkingResponseDataItem> list = new List <GetNearParkingResponseDataItem>();
                    foreach (DataRow dr in dt.Rows)
                    {
                        GetNearParkingResponseDataItem item = new GetNearParkingResponseDataItem();
                        item.name   = dr["ThisName"].ToString();
                        item.center = dr["Longitude"].ToString() + "," + dr["Latitude"].ToString();
                        item.points = dr["Coordinates"].ToString();
                        list.Add(item);
                    }
                    resp.List  = list;
                    resp.Total = count;
                    resp.Code  = "0";
                }

                return(JsonConvert.SerializeObject(resp));
            }
        }
Example #6
0
        public ApiResp Execute(System.Collections.Hashtable params_ht)
        {
            ApiResp resp = new ApiResp();

            resp.code = "-1";

            string client_id = params_ht["client_id"].ToString();
            long   timestamp = long.Parse(params_ht["timestamp"].ToString());
            string sign      = params_ht["sign"].ToString();

            List <GetStations_Item> data = new List <GetStations_Item>();

            SysSettingManager  settingManager    = new SysSettingManager();
            ServiceAreaManager areaManager       = new ServiceAreaManager();
            string             returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");
            DataTable          dt = areaManager.GetAllParkings(1, 99999);

            if (returnVehicleMode == "1" && dt != null)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    GetStations_Item item = new GetStations_Item();
                    item.stationId        = dr["ID"].ToString();
                    item.stationName      = dr["ThisName"].ToString();
                    item.stationLat       = double.Parse(dr["Latitude"].ToString());
                    item.stationLon       = double.Parse(dr["Longitude"].ToString());
                    item.stationAddress   = dr["Address"].ToString();
                    item.startTime        = 0;
                    item.endTime          = 2400;
                    item.radius           = 0.00;
                    item.parkType         = 2;
                    item.coordinatepoints = dr["Coordinates"].ToString().Replace(";", "|");
                    data.Add(item);
                }
                resp.code = "0";
                resp.msg  = "成功";
                resp.data = data;
            }
            else
            {
                resp.code = "-1";
                resp.msg  = "未找到停车网点";
            }

            return(resp);
        }
        /// <summary>
        /// 根据城市获取运营区域
        /// </summary>
        /// <param name="context"></param>
        private void GetServiceAreaByID(HttpContext context)
        {
            ObjectApiResp resp = new ObjectApiResp();

            resp.Code    = "-1";
            resp.Message = "";

            string vehicleID = context.Request["vehicleID"].ToString().Trim();

            ServiceAreaManager areaManager = new ServiceAreaManager();
            DataTable          dt          = areaManager.GetServiceAreaListByID(vehicleID);

            if (dt != null)
            {
                resp.Data = dt;
                resp.Code = "0";
            }
            context.Response.Write(JsonConvert.SerializeObject(resp));
        }
Example #8
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 ||
                res["VID"] == null || res["VID"].ToString().Trim().Length <= 0 ||
                res["ParkingID"] == null || res["ParkingID"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                uid       = res["UID"].ToString().Trim();
                vid       = res["VID"].ToString().Trim();
                parkingid = res["ParkingID"].ToString().Trim();
                VehicleManager     vm          = new VehicleManager();
                ServiceAreaManager areaManager = new ServiceAreaManager();
                OPUserManager      hum         = new OPUserManager();
                Hashtable          vehicle_ht  = vm.GetVehicleInfoByID(vid);
                if (vehicle_ht == null)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到相关车辆信息"));
                }
                Hashtable parking_ht = areaManager.GetInfoByID(parkingid);
                if (parking_ht == null)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到相关网点信息"));
                }
                Hashtable ht = new Hashtable();
                ht["VehicleID"] = vehicle_ht["ID"];
                ht["ParkingID"] = parking_ht["ID"];
                bool isSuccess = vm.AddOrEditVehicleInfo(ht, vehicle_ht["ID"].ToString());
                if (!isSuccess)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "绑定车辆与网点失败"));
                }
                else
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "success", "绑定车辆与网点成功"));
                }
            }
        }
        /// <summary>
        /// 根据城市获取运营区域
        /// </summary>
        /// <param name="context"></param>
        private void GetServiceArea(HttpContext context)
        {
            ObjectApiResp resp = new ObjectApiResp();

            resp.Code    = "-1";
            resp.Message = "";

            string citycode = "";

            citycode = context.Request["city"].ToString().Trim();

            ServiceAreaManager areaManager = new ServiceAreaManager();
            DataTable          dt          = areaManager.GetServiceAreaList(citycode);// areaManager.GetServiceAreaListByCityCode(citycode);

            if (dt != null)
            {
                resp.Data = dt;
                resp.Code = "0";
            }
            context.Response.Write(JsonConvert.SerializeObject(resp));
        }
Example #10
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 ||
                res["PageNum"] == null || res["PageNum"].ToString().Trim().Length <= 0 ||
                res["CurrentPage"] == null || res["CurrentPage"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                try
                {
                    uid         = res["UID"].ToString().Trim();
                    pageNum     = int.Parse(res["PageNum"].ToString().Trim());
                    currentPage = int.Parse(res["CurrentPage"].ToString().Trim());
                    if (res["Keyword"] != null && res["Keyword"].ToString().Trim().Length > 0)
                    {
                        keyword = res["Keyword"].ToString().Trim();
                    }
                }
                catch
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "数据格式不正确"));
                }

                UserInfoManager    uim         = new UserInfoManager();
                ServiceAreaManager areaManager = new ServiceAreaManager();
                DataTable          parkings    = areaManager.GetParkingList(keyword, currentPage, pageNum);
                if (parkings == null || parkings.Rows.Count <= 0)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "亲,没有数据了"));
                }
                else
                {
                    return(JsonHelper.DataTableToJson("success", "获取数据成功", parkings, "GetParkingList"));
                }
            }
        }
Example #11
0
        public string Execute(Hashtable res)
        {
            if (res["Longitude"] == null || res["Longitude"].ToString().Trim().Length <= 0 ||
                res["Latitude"] == null || res["Latitude"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                string longitude = res["Longitude"].ToString().Trim();
                string latitude  = res["Latitude"].ToString().Trim();

                string citycode = "", cityname = "", districtcode = "", districtname = "";
                string address = SiteHelper.GetAddressInfoByGPS(longitude, latitude, out citycode, out cityname, out districtcode, out districtname);

                ObjectApiResp resp = new ObjectApiResp();
                resp.Code    = "-1";
                resp.Message = "";

                ServiceAreaManager areaManager = new ServiceAreaManager();
                Hashtable          ht          = areaManager.GetServiceAreaByCityCode(districtcode);
                if (ht == null || ht.Keys.Count == 0)
                {
                    ht = areaManager.GetServiceAreaByCityCode(citycode);
                }
                if (ht != null && ht.Keys.Count > 0)
                {
                    GetServiceAreaResponse data = new GetServiceAreaResponse();
                    data.city      = cityname;
                    data.points    = SiteHelper.GetHashTableValueByKey(ht, "Coordinates");
                    data.longitude = SiteHelper.GetHashTableValueByKey(ht, "Longitude");
                    data.latitude  = SiteHelper.GetHashTableValueByKey(ht, "Latitude");
                    resp.Data      = data;
                    resp.Code      = "0";
                }

                return(JsonConvert.SerializeObject(resp));
            }
        }
Example #12
0
        private GetBatchOrderState_Item GetOrderState(string order_no)
        {
            BaoJiaManager mgr = new BaoJiaManager();
            Hashtable     ht  = mgr.GetOrderInfo(order_no);

            if (ht == null)
            {
                return(null);
            }
            else
            {
                GetBatchOrderState_Item data = new GetBatchOrderState_Item();

                decimal             kmprice = 0.80m, minuteprice = 0.40m, mileage = 0, TotalMoney = 0.00m, SettlementMoney = 0.00m, outServiceAreaFee = 0.00m;
                int                 minutes        = 0;
                string              returnLocType  = "";
                ServiceAreaManager  areaManager    = new ServiceAreaManager();
                SysSettingManager   settingManager = new SysSettingManager();
                VehiclePriceManager priceManager   = new VehiclePriceManager();
                Hashtable           billing_ht     = priceManager.GetOrderSettlement(SiteHelper.GetHashTableValueByKey(ht, "id"));
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "MinutePrice"), out minuteprice);
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "KmPrice"), out kmprice);
                int.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "Minutes"), out minutes);
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "TotalMoney"), out TotalMoney);
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(ht, "SettlementMoney"), out SettlementMoney);
                returnLocType = SiteHelper.GetHashTableValueByKey(ht, "ReturnLocType");
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(ht, "OutServiceAreaFee"), out outServiceAreaFee);

                string orderState = SiteHelper.GetHashTableValueByKey(ht, "OrderState");
                if (orderState == "1")
                {
                    SettlementMoney = TotalMoney;
                    VehicleManager vm         = new VehicleManager();
                    Hashtable      vehicle_ht = vm.GetVehicleInfoByIDORNumber(SiteHelper.GetHashTableValueByKey(ht, "VehicleID"));
                    string         lat        = vehicle_ht["LATITUDE"].ToString();
                    string         lng        = vehicle_ht["LONGITUDE"].ToString();

                    #region 判断还车点是否在运营区域内,运营区域外加收费用
                    Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(SiteHelper.GetHashTableValueByKey(ht, "VehicleID"));
                    if (area_ht != null && area_ht.Keys.Count > 0)
                    {
                        returnLocType = "03";
                        List <LatLng> area_pts    = new List <LatLng>();
                        string        coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates");
                        foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                        {
                            string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                            LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                            area_pts.Add(pt);
                        }
                        LatLng vehicle_pt = new LatLng(double.Parse(lat), double.Parse(lng));
                        //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                        vehicle_pt = SiteHelper.GPSToGCJ02(lng, lat);
                        vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                        bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                        if (!isInPoly)
                        {
                            returnLocType = "04";
                            string serviceFee = settingManager.GetValueByKey("OutServiceAreaFee");
                            if (serviceFee.StartsWith("+"))
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney + outServiceAreaFee;
                            }
                            else
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney * outServiceAreaFee;
                            }
                            outServiceAreaFee = TotalMoney - SettlementMoney;
                        }
                    }
                    #endregion

                    #region 判断还车点是否在停车点内,否则加收费用
                    string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");
                    if (outServiceAreaFee == 0 && returnVehicleMode == "1")
                    {
                        returnLocType = "01";
                        LatLng vehicle_pt = new LatLng(double.Parse(lat), double.Parse(lng));
                        //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                        vehicle_pt = SiteHelper.GPSToGCJ02(lng, lat);
                        vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                        Hashtable parking_ht = areaManager.GetNearestParking(vehicle_pt.longitude.ToString(), vehicle_pt.latitude.ToString(), SiteHelper.GetHashTableValueByKey(ht, "VehicleID"));

                        List <LatLng> parking_pts = new List <LatLng>();
                        if (parking_ht != null && parking_ht.Keys.Count > 0)
                        {
                            string coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates");
                            foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                            {
                                string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                                LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                                parking_pts.Add(pt);
                            }
                        }

                        bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts);
                        if (!isInPoly)
                        {
                            returnLocType = "02";
                            string serviceFee = settingManager.GetValueByKey("OutParkingAreaFee");
                            if (serviceFee.StartsWith("+"))
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney + outServiceAreaFee;
                            }
                            else
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney * outServiceAreaFee;
                            }
                            outServiceAreaFee = TotalMoney - SettlementMoney;
                        }
                    }
                    #endregion
                }

                data.order_no = order_no;
                data.amount   = (double)(SettlementMoney + outServiceAreaFee);;

                data.order_status = 10000;
                if (orderState == "1")
                {
                    data.order_status = 10000;
                }
                else if (orderState == "0")
                {
                    data.order_status = 10301;
                }
                else if (orderState == "2" || orderState == "5" || orderState == "3")
                {
                    data.order_status = 80200;
                }

                data.timestamp = (long)(DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()).TotalSeconds;

                return(data);
            }
        }
Example #13
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                uid = res["UID"].ToString().Trim();
                if (res["Longitude"] != null && res["Longitude"].ToString().Trim().Length > 0)
                {
                    userLng = res["Longitude"].ToString().Trim();
                }
                if (res["Latitude"] != null && res["Latitude"].ToString().Trim().Length > 0)
                {
                    userLat = res["Latitude"].ToString().Trim();
                }
                cacheKey += uid;
                ICache cache = null;
                cache = CacheFactory.GetCache();
                if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey)))
                {
                    if (cache != null)
                    {
                        cache.Dispose();
                    }
                    Logger.Error("还车10秒内," + uid);
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "还车处理中,请勿重复点击"));
                }
                else
                {
                    DateTime dt = DateTime.Now.AddSeconds(10);
                    cache.Set(cacheKey, uid, dt - DateTime.Now);
                    //cache.Dispose();
                }

                /*if (cache != null)
                 * {
                 *   cache.Dispose();
                 * }*/
                UserInfoManager    uim            = new UserInfoManager();
                OrdersManager      om             = new OrdersManager();
                VehicleManager     vm             = new VehicleManager();
                ServiceAreaManager areaManager    = new ServiceAreaManager();
                SysSettingManager  settingManager = new SysSettingManager();
                Hashtable          order          = om.GetUserCurrentOrderVehicle(uid);
                //判断是否有车
                if (order == null)
                {
                    if (cache != null)
                    {
                        cache.Dispose();
                    }
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "您没有车辆无法还车"));
                }
                else
                {
                    //车辆坐标
                    string longitude = SiteHelper.GetHashTableValueByKey(order, "Longitude");
                    string latitude  = SiteHelper.GetHashTableValueByKey(order, "Latitude");
                    string orderNum  = SiteHelper.GetHashTableValueByKey(order, "OrderNum");

                    Hashtable userht = uim.GetUserInfoByUserID(uid);
                    decimal   balance = 0.00m, raiseBalance = 0.00m;
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(userht, "Balance"), out balance);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(userht, "RaiseBalance"), out raiseBalance);
                    //处理订单
                    if (order == null)
                    {
                        if (cache != null)
                        {
                            cache.Dispose();
                        }
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "还车操作失败,请联系管理员"));
                    }
                    else
                    {
                        int renttime = 0;
                        int.TryParse(SiteHelper.GetHashTableValueByKey(order, "RentDuration"), out renttime);
                        decimal  hours = 0.00m;
                        decimal  kmprice = 0.80m;
                        decimal  minuteprice = 0.40m;
                        decimal  mileage = 0;
                        int      minutes = 0;
                        decimal  userprivilegeratio = 1;
                        decimal  raisecommisssionratio = 0.10m;
                        decimal  TotalMoney = 0.00m;
                        decimal  SettlementMoney = 0.00m;
                        decimal  occupyMoney = 0.0m;
                        decimal  payMoney = 0.00m;
                        decimal  RaiseCommissionMoney = 0.00m;
                        decimal  outServiceAreaFee = 0.00m;
                        DateTime createtime = DateTime.Now;
                        DateTime startTime = DateTime.Now;
                        String   returnParkingID = null, returnLocType = null;
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "KMPrice"), out kmprice);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "MinutePrice"), out minuteprice);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "Mileage"), out mileage);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "UserPrivilegeRatio"), out userprivilegeratio);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "RaiseCommissionRatio"), out raisecommisssionratio);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "TotalMoney"), out TotalMoney);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "SettlementMoney"), out SettlementMoney);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "OccupyMoney"), out occupyMoney);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "RaiseCommissionMoney"), out RaiseCommissionMoney);
                        DateTime.TryParse(SiteHelper.GetHashTableValueByKey(order, "CreateTime"), out createtime);
                        DateTime.TryParse(SiteHelper.GetHashTableValueByKey(order, "StartTime"), out startTime);
                        int startminutes = 0;
                        int.TryParse(SiteHelper.GetHashTableValueByKey(order, "StartMinutes"), out startminutes);
                        string strStartTime = SiteHelper.GetHashTableValueByKey(order, "StartTime");

                        LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude));
                        //车辆GPS坐标转高德坐标
                        vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude);
                        vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));

                        string cityCacheKey = "Vehicle_City_" + SiteHelper.GetHashTableValueByKey(order, "VID");
                        string cityId       = cache.Get <string>(cityCacheKey);
                        if (string.IsNullOrEmpty(cityId))
                        {
                            Hashtable vehicle_ht = vm.GetVehicleInfoByID(SiteHelper.GetHashTableValueByKey(order, "VID"));
                            cityId = vehicle_ht["CITYID"].ToString();
                            DateTime timeSpan = DateTime.Now.AddHours(2);
                            cache.Set(cityCacheKey, cityId, timeSpan - DateTime.Now);
                        }

                        string serviceAreaKey = "Service_Area_" + cityId;
                        string coordinates    = cache.Get <string>(serviceAreaKey);
                        if (string.IsNullOrEmpty(coordinates))
                        {
                            Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(SiteHelper.GetHashTableValueByKey(order, "VID"));
                            if (area_ht != null && area_ht.Keys.Count > 0)
                            {
                                coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates");
                                if (!string.IsNullOrEmpty(coordinates))
                                {
                                    DateTime timeSpan = DateTime.Now.AddDays(10);
                                    cache.Set(serviceAreaKey, coordinates, timeSpan - DateTime.Now);
                                }
                            }
                        }

                        List <LatLng> area_pts             = new List <LatLng>();
                        bool          isInPoly             = true;
                        string        outServiceAreaReturn = settingManager.GetValueByKey("OutServiceAreaReturn");
                        if (!string.IsNullOrEmpty(coordinates))
                        {
                            foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                            {
                                string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                                LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                                area_pts.Add(pt);
                            }
                            isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                            if (!isInPoly && "0".Equals(outServiceAreaReturn))
                            {
                                if (cache != null)
                                {
                                    cache.Dispose();
                                }
                                Logger.Info("用户:" + uid + ",订单:" + orderNum + ",在运营区域外被禁止还车");
                                return(SiteHelper.GetJsonFromHashTable(null, "faild", "运营区域外禁止还车,请骑回运营区域再还车"));
                            }
                        }

                        string gpsnum = SiteHelper.GetHashTableValueByKey(order, "VehicleGPSNum");
                        //锁车
                        bool isSuccess = vm.CloseVehicle(SiteHelper.GetHashTableValueByKey(order, "VID"));
                        if (!isSuccess)
                        {
                            Logger.Error("用户:" + uid + ",订单:" + orderNum + ",还车锁车失败:" + gpsnum);
                        }
                        VehiclePriceManager priceManager = new VehiclePriceManager();
                        Hashtable           billing_ht   = priceManager.GetOrderSettlement(SiteHelper.GetHashTableValueByKey(order, "OrderID"));
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "MinutePrice"), out minuteprice);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "KmPrice"), out kmprice);
                        int.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "Minutes"), out minutes);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "TotalMoney"), out TotalMoney);

                        SettlementMoney = TotalMoney;

                        #region 判断还车点是否在运营区域内,运营区域外加收费用
                        if (TotalMoney > 0 && !string.IsNullOrEmpty(coordinates))
                        {
                            returnLocType = "03";
                            //bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                            string vehicleInArea = isInPoly ? "在运营区域内还车" : "在运营区域外还车";
                            Logger.Info("用户:" + uid + ",订单:" + SiteHelper.GetHashTableValueByKey(order, "OrderID") + "," + vehicleInArea + "车辆GPS坐标:" + longitude + "," + latitude + ",高德坐标:" + vehicle_pt.longitude + "," + vehicle_pt.latitude);
                            bool isInPoly2 = false;//用户坐标是否在区域内
                            if (!string.IsNullOrEmpty(userLng) && !string.IsNullOrEmpty(userLat))
                            {
                                LatLng user_pt = new LatLng(double.Parse(userLat), double.Parse(userLng));
                                isInPoly2 = SiteHelper.IsPtInPoly(user_pt, area_pts);
                            }
                            //string userInArea = isInPoly2 ? "用户在运营区域内" : "用户在运营区域外";

                            //车辆在运营区域外,不判断用户位置  if (!isInPoly && !isInPoly2)
                            if (!isInPoly)
                            {
                                returnLocType = "04";
                                string serviceFee = settingManager.GetValueByKey("OutServiceAreaFee");
                                if (serviceFee.StartsWith("+"))
                                {
                                    serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                    decimal.TryParse(serviceFee, out outServiceAreaFee);
                                    TotalMoney = TotalMoney + outServiceAreaFee;
                                }
                                else
                                {
                                    serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                    decimal.TryParse(serviceFee, out outServiceAreaFee);
                                    TotalMoney = TotalMoney * outServiceAreaFee;
                                }
                                outServiceAreaFee = TotalMoney - SettlementMoney;
                                Logger.Info("订单: " + orderNum + ",加收调度费值:" + serviceFee + ",加收调度费金额:" + outServiceAreaFee);
                            }
                        }
                        #endregion

                        #region 判断还车点是否在停车点内,否则加收费用
                        string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");
                        if (TotalMoney > 0 && outServiceAreaFee == 0 && returnVehicleMode == "1")
                        {
                            returnLocType = "01";
                            DataTable parking_dt = areaManager.GetNearestParkingsByCity(vehicle_pt.longitude.ToString(), vehicle_pt.latitude.ToString(), cityId);
                            if (parking_dt != null)
                            {
                                //bool isInPoly = false;
                                bool isInPoly2 = false;//用户坐标是否在区域内
                                foreach (DataRow dr in parking_dt.Rows)
                                {
                                    List <LatLng> parking_pts = new List <LatLng>();
                                    returnParkingID = dr["ID"].ToString();
                                    coordinates     = dr["Coordinates"].ToString();
                                    foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                                    {
                                        string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                                        LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                                        parking_pts.Add(pt);
                                    }
                                    isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts);
                                    if (!string.IsNullOrEmpty(userLng) && !string.IsNullOrEmpty(userLat))
                                    {
                                        LatLng user_pt = new LatLng(double.Parse(userLat), double.Parse(userLng));
                                        isInPoly2 = SiteHelper.IsPtInPoly(user_pt, parking_pts);
                                    }

                                    string vehicleInArea = isInPoly ? "在停车点内还车" : "在停车点外还车";
                                    string userInArea    = isInPoly2 ? "用户在停车点内" : "用户在停车点外";
                                    Logger.Info("用户:" + uid + ",订单:" + orderNum + "," + vehicleInArea + ",车辆GPS坐标:" + longitude + "," + latitude + ",高德坐标:" + vehicle_pt.longitude + "," + vehicle_pt.latitude + ",用户高德坐标:" + userLng + "," + userLat + "," + userInArea);
                                    if (isInPoly || isInPoly2)
                                    {
                                        break;
                                    }
                                }
                                if (!isInPoly && !isInPoly2)
                                {
                                    returnLocType   = "02";
                                    returnParkingID = null;
                                    string serviceFee = settingManager.GetValueByKey("OutParkingAreaFee");
                                    if (serviceFee.StartsWith("+"))
                                    {
                                        serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                        decimal.TryParse(serviceFee, out outServiceAreaFee);
                                        TotalMoney = TotalMoney + outServiceAreaFee;
                                    }
                                    else
                                    {
                                        serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                        decimal.TryParse(serviceFee, out outServiceAreaFee);
                                        TotalMoney = TotalMoney * outServiceAreaFee;
                                    }
                                    outServiceAreaFee = TotalMoney - SettlementMoney;
                                    Logger.Info("用户:" + uid + ",订单:" + orderNum + "加收调度费值:" + serviceFee + ",加收调度费金额:" + outServiceAreaFee);
                                }
                            }
                        }
                        #endregion

                        payMoney = TotalMoney;
                        Hashtable userParm = new Hashtable();
                        userParm["VID"]               = SiteHelper.GetHashTableValueByKey(order, "VID");
                        userParm["OrderNum"]          = SiteHelper.GetHashTableValueByKey(order, "OrderNum");
                        userParm["TotalMoney"]        = TotalMoney;
                        userParm["SettlementMoney"]   = SettlementMoney;
                        userParm["PayMoney"]          = payMoney;
                        userParm["PayTime"]           = SiteHelper.GetWebServerCurrentTime().ToString();
                        userParm["EndTime"]           = SiteHelper.GetWebServerCurrentTime().ToString();
                        userParm["FinishedTime"]      = SiteHelper.GetWebServerCurrentTime().ToString();
                        userParm["OID"]               = SiteHelper.GetHashTableValueByKey(order, "orderid");
                        userParm["ChangesAmount"]     = -Math.Abs(TotalMoney);
                        userParm["UserFinancialID"]   = CommonHelper.GetGuid;
                        userParm["UserID"]            = uid;
                        userParm["ChangesTime"]       = SiteHelper.GetWebServerCurrentTime().ToString();
                        userParm["ChangesType"]       = UserFinancialChangesType.Consumption.GetHashCode().ToString();
                        userParm["OrderID"]           = SiteHelper.GetHashTableValueByKey(order, "orderid");
                        userParm["RentDuration"]      = hours;
                        userParm["Remark"]            = "用户还车";
                        userParm["Minutes"]           = minutes;
                        userParm["DiffMoney"]         = TotalMoney;
                        userParm["Operator"]          = "";
                        userParm["OperatorType"]      = UserFinancialOperatorType.Admin.GetHashCode().ToString();
                        userParm["State"]             = UserFinancialState.Effect.GetHashCode().ToString();
                        userParm["MessageID"]         = CommonHelper.GetGuid;
                        userParm["OutServiceAreaFee"] = (int)outServiceAreaFee;
                        userParm["ReturnParkingID"]   = returnParkingID;
                        userParm["ReturnLocType"]     = returnLocType;
                        if (cache != null)
                        {
                            cache.Dispose();
                        }
                        bool isSettlementSuccess = uim.ReturnVehicle(userParm);
                        if (isSettlementSuccess)
                        {
                            om.UpdateOrderGPS(SiteHelper.GetHashTableValueByKey(order, "orderid"), false);
                            Hashtable ht = om.GetOrderByNum(SiteHelper.GetHashTableValueByKey(order, "OrderNum"));
                            return(SiteHelper.GetJsonFromHashTable(ht, "success", "还车成功", "OrderInfo"));
                        }
                        else
                        {
                            return(SiteHelper.GetJsonFromHashTable(null, "faild", "还车失败,请联系管理员"));
                        }
                    }
                }
            }
        }
Example #14
0
        public string Execute(Hashtable params_ht)
        {
            try
            {
                Hashtable res = params_ht;

                if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
                }
                else
                {
                    uid = res["UID"].ToString().Trim();
                    OrdersManager om = new OrdersManager();
                    Hashtable     ht = om.GetUserCurrentOrderVehicle(uid);
                    if (ht == null)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前没有预约车辆"));
                    }
                    else
                    {
                        cacheKey += uid;
                        string orderCacheKey = cacheKey;
                        ICache cache         = CacheFactory.GetCache();

                        /*string result = cache.Get<string>(orderCacheKey);
                         * if (!string.IsNullOrEmpty(result))
                         * {
                         *  if (cache != null)
                         *  {
                         *      cache.Dispose();
                         *  }
                         *  Logger.Error("获取订单信息120秒内," + uid);
                         *  return result;
                         * }
                         * else
                         * {*/
                        string lat = ht["LATITUDE"].ToString();
                        string lng = ht["LONGITUDE"].ToString();
                        if (!string.IsNullOrEmpty(lng) && !string.IsNullOrEmpty(lat))
                        {
                            if (res["Client"] != null && "iOS" == res["Client"].ToString())
                            {
                                LatLng ll = new LatLng(double.Parse(lat), double.Parse(lng));
                                ll = SiteHelper.TransformFromWGSToGCJ(ll);
                                ht["LONGITUDE"] = ll.longitude;
                                ht["LATITUDE"]  = ll.latitude;
                            }
                            else
                            {
                                /*LatLng latlng = SiteHelper.GetBaiduByGPS(lat, lng);
                                 * if (latlng != null)
                                 * {
                                 *  ht["LATITUDE"] = latlng.latitude;
                                 *  ht["LONGITUDE"] = latlng.longitude;
                                 *  if (ht["ADDRESS"].ToString().Length <= 0)
                                 *  {
                                 *      ht["ADDRESS"] = SiteHelper.GetLocationByGPS(ht["LATITUDE"].ToString(), ht["LONGITUDE"].ToString());
                                 *  }
                                 * }*/
                                LatLng ll = new LatLng(double.Parse(lat), double.Parse(lng));
                                ll = SiteHelper.TransformFromWGSToGCJ(ll);
                                ht["LONGITUDE"] = ll.longitude;
                                ht["LATITUDE"]  = ll.latitude;
                                ht["ADDRESS"]   = SiteHelper.GetLocationByGPS(ht["LATITUDE"].ToString(), ht["LONGITUDE"].ToString(), "wgs84ll");
                            }
                        }

                        decimal             kmprice = 0.80m, minuteprice = 0.40m, mileage = 0, TotalMoney = 0.00m, SettlementMoney = 0.00m, outServiceAreaFee = 0.00m;
                        int                 minutes        = 0;
                        ServiceAreaManager  areaManager    = new ServiceAreaManager();
                        SysSettingManager   settingManager = new SysSettingManager();
                        VehiclePriceManager priceManager   = new VehiclePriceManager();
                        Hashtable           billing_ht     = priceManager.GetOrderSettlement(SiteHelper.GetHashTableValueByKey(ht, "orderid"));
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "MinutePrice"), out minuteprice);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "KmPrice"), out kmprice);
                        int.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "Minutes"), out minutes);
                        decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "TotalMoney"), out TotalMoney);

                        SettlementMoney = TotalMoney;

                        #region 判断还车点是否在运营区域内,运营区域外加收费用
                        string cityId         = ht["CITYID"].ToString();
                        string serviceAreaKey = "Service_Area_" + cityId;
                        string coordinates    = cache.Get <string>(serviceAreaKey);
                        if (string.IsNullOrEmpty(coordinates))
                        {
                            Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(SiteHelper.GetHashTableValueByKey(ht, "VID"));
                            if (area_ht != null && area_ht.Keys.Count > 0)
                            {
                                coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates");
                                if (!string.IsNullOrEmpty(coordinates))
                                {
                                    DateTime timeSpan = DateTime.Now.AddDays(10);
                                    cache.Set(serviceAreaKey, coordinates, timeSpan - DateTime.Now);
                                }
                            }
                        }
                        if (!string.IsNullOrEmpty(coordinates))
                        {
                            List <LatLng> area_pts = new List <LatLng>();
                            foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                            {
                                string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                                LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                                area_pts.Add(pt);
                            }
                            LatLng vehicle_pt = new LatLng(double.Parse(lat), double.Parse(lng));
                            //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                            vehicle_pt = SiteHelper.GPSToGCJ02(lng, lat);
                            vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                            bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                            if (!isInPoly)
                            {
                                string serviceFee = settingManager.GetValueByKey("OutServiceAreaFee");
                                if (serviceFee.StartsWith("+"))
                                {
                                    serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                    decimal.TryParse(serviceFee, out outServiceAreaFee);
                                    TotalMoney = TotalMoney + outServiceAreaFee;
                                }
                                else
                                {
                                    serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                    decimal.TryParse(serviceFee, out outServiceAreaFee);
                                    TotalMoney = TotalMoney * outServiceAreaFee;
                                }
                                outServiceAreaFee = TotalMoney - SettlementMoney;
                            }
                        }
                        #endregion

                        #region 判断还车点是否在停车点内,否则加收费用
                        string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");
                        if (TotalMoney > 0 && outServiceAreaFee == 0 && returnVehicleMode == "1")
                        {
                            LatLng vehicle_pt = new LatLng(double.Parse(lat), double.Parse(lng));
                            //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                            vehicle_pt = SiteHelper.GPSToGCJ02(lng, lat);
                            vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));

                            /*Hashtable parking_ht = areaManager.GetNearestParking(vehicle_pt.longitude.ToString(), vehicle_pt.latitude.ToString(), SiteHelper.GetHashTableValueByKey(ht, "VID"));
                             * List<LatLng> parking_pts = new List<LatLng>();
                             * if (parking_ht != null && parking_ht.Keys.Count > 0)
                             * {
                             *  returnParkingID = SiteHelper.GetHashTableValueByKey(parking_ht, "ID");
                             *  string coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates");
                             *  foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                             *  {
                             *      string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                             *      LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                             *      parking_pts.Add(pt);
                             *  }
                             * }
                             * bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts);
                             * if (!isInPoly)
                             * {
                             *  string serviceFee = settingManager.GetValueByKey("OutParkingAreaFee");
                             *  if (serviceFee.StartsWith("+"))
                             *  {
                             *      serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                             *      decimal.TryParse(serviceFee, out outServiceAreaFee);
                             *      TotalMoney = TotalMoney + outServiceAreaFee;
                             *  }
                             *  else
                             *  {
                             *      serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                             *      decimal.TryParse(serviceFee, out outServiceAreaFee);
                             *      TotalMoney = TotalMoney * outServiceAreaFee;
                             *  }
                             *  outServiceAreaFee = TotalMoney - SettlementMoney;
                             * }*/
                            DataTable parking_dt = areaManager.GetNearestParkingsByCity(vehicle_pt.longitude.ToString(), vehicle_pt.latitude.ToString(), cityId);
                            if (parking_dt != null)
                            {
                                bool isInPoly = false;
                                foreach (DataRow dr in parking_dt.Rows)
                                {
                                    List <LatLng> parking_pts = new List <LatLng>();
                                    coordinates = dr["Coordinates"].ToString();
                                    foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                                    {
                                        string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                                        LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                                        parking_pts.Add(pt);
                                    }
                                    isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts);
                                    if (isInPoly)
                                    {
                                        break;
                                    }
                                }
                                if (!isInPoly)
                                {
                                    string serviceFee = settingManager.GetValueByKey("OutParkingAreaFee");
                                    if (serviceFee.StartsWith("+"))
                                    {
                                        serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                        decimal.TryParse(serviceFee, out outServiceAreaFee);
                                        TotalMoney = TotalMoney + outServiceAreaFee;
                                    }
                                    else
                                    {
                                        serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                        decimal.TryParse(serviceFee, out outServiceAreaFee);
                                        TotalMoney = TotalMoney * outServiceAreaFee;
                                    }
                                    outServiceAreaFee = TotalMoney - SettlementMoney;
                                }
                            }
                        }
                        #endregion
                        ht["MINUTES"]           = minutes;
                        ht["OUTSERVICEAREAFEE"] = (int)outServiceAreaFee;
                        ht["TOTALMONEY"]        = TotalMoney;
                        //DateTime dt = DateTime.Now.AddSeconds(120);
                        //cache.Set(orderCacheKey, SiteHelper.GetJsonFromHashTable(ht, "success", "获取数据成功", "OrderVehicle"), dt - DateTime.Now);
                        if (cache != null)
                        {
                            cache.Dispose();
                        }
                        return(SiteHelper.GetJsonFromHashTable(ht, "success", "获取数据成功", "OrderVehicle"));
                        //}
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e.StackTrace + e.Message);
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "查询失败"));
            }
        }
Example #15
0
        public ApiResp Execute(Hashtable params_ht)
        {
            int     start = DateTime.Now.Millisecond;
            ApiResp resp  = new ApiResp();
            ICache  cache = null;

            try
            {
                cache = CacheFactory.GetCache();
                string  jsonData = params_ht["json"].ToString();
                dynamic jsonObj  = DynamicJson.Parse(jsonData);

                string carId = "";
                if (jsonObj.IsDefined("carId"))
                {
                    carId = jsonObj.carId;
                }
                double distance = 0.00;
                if (jsonObj.IsDefined("distance"))
                {
                    distance = jsonObj.distance;
                }

                if (jsonObj.IsDefined("data"))
                {
                    foreach (var item in jsonObj.data)
                    {
                        string acc = "";
                        if (item.IsDefined("acc"))
                        {
                            acc = item.acc;
                        }
                        double longitude = 0.00;
                        if (item.IsDefined("longitude"))
                        {
                            longitude = item.longitude;
                        }
                        double latitude = 0.00;
                        if (item.IsDefined("latitude"))
                        {
                            latitude = item.latitude;
                        }
                        double speed = 0.00;
                        if (item.IsDefined("speed"))
                        {
                            speed = item.speed;
                        }
                        string defend = "";
                        if (item.IsDefined("defend"))
                        {
                            defend = item.defend;
                        }
                        VehicleManager vm         = new VehicleManager();
                        Hashtable      vehicle_ht = vm.GetVehicleInfoByGPSNum(carId);
                        if (vehicle_ht != null && vehicle_ht.Keys.Count > 0)
                        {
                            string vid = vehicle_ht["ID"].ToString();
                            //车辆使用状态 1空闲,2预约中,3客户使用中,4运维操作中
                            string useState          = SiteHelper.GetHashTableValueByKey(vehicle_ht, "UseState");
                            string strLastUpdateTime = SiteHelper.GetHashTableValueByKey(vehicle_ht, "LastUpdateTime");
                            int    diffSecond        = 5;
                            if (!string.IsNullOrEmpty(strLastUpdateTime))
                            {
                                DateTime lastUpdateTime = DateTime.Parse(strLastUpdateTime);
                                diffSecond = SiteHelper.ExecDateDiffSecond(lastUpdateTime, DateTime.Now);
                            }
                            if (diffSecond > 3)
                            {
                                Hashtable ht = new Hashtable();
                                //车辆开关状态 LockState ,开:unlock,关:lock
                                //acc =1 &&  defend =0  启动 unlock
                                if (acc.Equals("1") && defend.Equals("0"))
                                {
                                    ht["LockState"] = "unlock";
                                }
                                //defend =1  设防  lock
                                if (defend.Equals("1"))
                                {
                                    ht["LockState"] = "lock";
                                }
                                if (longitude > 0)
                                {
                                    ht["Longitude"] = longitude;
                                }
                                if (latitude > 0)
                                {
                                    ht["Latitude"] = latitude;
                                }
                                ht["CurrentSpeed"]   = speed;
                                ht["Mileage"]        = distance / 1000.00;
                                ht["GPSTime"]        = DateTime.Now;
                                ht["LastUpdateTime"] = DateTime.Now;
                                bool result = false;
                                if (ht.Keys.Count > 0)
                                {
                                    result = vm.AddOrEditVehicleInfo(ht, vid);
                                }
                                Hashtable htAlarm = new Hashtable();
                                //超速
                                if (speed > 30)
                                {
                                    string overSpeedKey   = "over_speed_" + carId;
                                    string overSpeedValue = cache.Get <string>(overSpeedKey);
                                    if (string.IsNullOrEmpty(overSpeedValue))
                                    {
                                        Logger.Warn("超速报警," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc);
                                        VehicleAlarmManager alarmManager = new VehicleAlarmManager();
                                        htAlarm["ID"]          = Guid.NewGuid().ToString();
                                        htAlarm["VehicleID"]   = vid;
                                        htAlarm["IMEI"]        = carId;
                                        htAlarm["AlarmType"]   = 6;
                                        htAlarm["Speed"]       = speed;
                                        htAlarm["AlarmTime"]   = DateTime.Now;
                                        htAlarm["AlarmStatus"] = 0;
                                        htAlarm["CreateTime"]  = DateTime.Now;
                                        if (alarmManager.AddOrEdit(htAlarm, null))
                                        {
                                            DateTime timeSpan = DateTime.Now.AddMinutes(1);
                                            cache.Set(overSpeedKey, 1, timeSpan - DateTime.Now);
                                            Logger.Warn("超速报警记录添加成功," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc);
                                        }
                                        else
                                        {
                                            Logger.Warn("超速报警记录添加失败," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc);
                                        }
                                    }
                                }
                                else
                                {
                                    if (speed >= 5 && "1".Equals(useState))
                                    {
                                        string moveKey   = "move_" + carId;
                                        string moveValue = cache.Get <string>(moveKey);
                                        if (string.IsNullOrEmpty(moveValue))
                                        {
                                            Logger.Warn("无单移动报警," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc + ",useState=" + useState);
                                            VehicleAlarmManager alarmManager = new VehicleAlarmManager();
                                            htAlarm["ID"]          = Guid.NewGuid().ToString();
                                            htAlarm["VehicleID"]   = vid;
                                            htAlarm["IMEI"]        = carId;
                                            htAlarm["AlarmType"]   = 1;
                                            htAlarm["Speed"]       = speed;
                                            htAlarm["AlarmTime"]   = DateTime.Now;
                                            htAlarm["AlarmStatus"] = 0;
                                            htAlarm["CreateTime"]  = DateTime.Now;
                                            if (alarmManager.AddOrEdit(htAlarm, null))
                                            {
                                                DateTime timeSpan = DateTime.Now.AddMinutes(10);
                                                cache.Set(moveKey, 1, timeSpan - DateTime.Now);
                                                Logger.Warn("无单移动报警记录添加成功," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc);
                                            }
                                            else
                                            {
                                                Logger.Warn("无单移动报警记录添加失败," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc);
                                            }
                                        }
                                    }
                                }
                                string outAreaKey   = "out_area_" + carId;
                                string outAreaValue = cache.Get <string>(outAreaKey);
                                if (string.IsNullOrEmpty(outAreaValue) && latitude > 0 && longitude > 0)
                                {
                                    string serviceAreaKey = "Service_Area_" + vehicle_ht["CITYID"].ToString();
                                    string coordinates    = cache.Get <string>(serviceAreaKey);
                                    if (string.IsNullOrEmpty(coordinates))
                                    {
                                        ServiceAreaManager areaManager = new ServiceAreaManager();
                                        Hashtable          area_ht     = areaManager.GetServiceAreaByVehicleID(vid);
                                        if (area_ht != null && area_ht.Keys.Count > 0)
                                        {
                                            coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates");
                                            if (!string.IsNullOrEmpty(coordinates))
                                            {
                                                DateTime timeSpan = DateTime.Now.AddDays(10);
                                                cache.Set(serviceAreaKey, coordinates, timeSpan - DateTime.Now);
                                            }
                                        }
                                    }
                                    List <LatLng> area_pts = new List <LatLng>();
                                    if (!string.IsNullOrEmpty(coordinates))
                                    {
                                        foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                                        {
                                            string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                                            LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                                            area_pts.Add(pt);
                                        }
                                        LatLng vehicle_pt = new LatLng(latitude, longitude);
                                        //车辆GPS坐标转高德坐标
                                        vehicle_pt = SiteHelper.GPSToGCJ02(longitude.ToString(), latitude.ToString());
                                        vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                                        bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                                        if (!isInPoly)
                                        {
                                            Logger.Warn("越界报警," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc);
                                            VehicleAlarmManager alarmManager = new VehicleAlarmManager();
                                            htAlarm["ID"]          = Guid.NewGuid().ToString();
                                            htAlarm["VehicleID"]   = vid;
                                            htAlarm["IMEI"]        = carId;
                                            htAlarm["AlarmType"]   = 4;
                                            htAlarm["Speed"]       = speed;
                                            htAlarm["AlarmTime"]   = DateTime.Now;
                                            htAlarm["AlarmStatus"] = 0;
                                            htAlarm["CreateTime"]  = DateTime.Now;
                                            bool alarmResult = alarmManager.AddOrEdit(htAlarm, null);
                                            if (alarmResult)
                                            {
                                                //越界20分钟内有效
                                                DateTime dt = DateTime.Now.AddMinutes(20);
                                                cache.Set(outAreaKey, carId, dt - DateTime.Now);
                                                Logger.Warn("越界报警记录添加成功," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc);
                                            }
                                            else
                                            {
                                                Logger.Warn("越界报警记录添加失败," + vid + "," + carId + ",speed=" + speed + ",defend =" + defend + ",acc=" + acc);
                                            }
                                        }
                                    }
                                }
                                int end = DateTime.Now.Millisecond;
                                Logger.Warn("小安盒子接口网关上报状态信息数据,耗时" + (end - start) + "ms," + vid + "," + carId + ",defend = " + defend + ",acc=" + acc + ",LockState=" + ht["LockState"]);
                                resp.Code    = result ? "0" : "1";
                                resp.Message = result ? "success" : "fail";
                            }
                            else
                            {
                                resp.Code = "3";
                            }
                        }
                    }
                }
                if (cache != null)
                {
                    cache.Dispose();
                }
                return(resp);
            }
            catch (Exception e)
            {
                Logger.Error("盒子上报状态信息报错:" + e);
                string message = e.Message;
                if (cache != null)
                {
                    cache.Dispose();
                }
                resp.Code    = "1";
                resp.Message = "fail";
                return(resp);
            }
        }
Example #16
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null || res["UseState"] == null || res["VehicleState"] == null ||
                res["PageNum"] == null || res["PageNum"].ToString().Trim().Length <= 0 ||
                res["CurrentPage"] == null || res["CurrentPage"].ToString().Trim().Length <= 0 ||
                res["UID"].ToString().Trim().Length <= 0 || res["UseState"].ToString().Trim().Length <= 0 || res["VehicleState"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                try
                {
                    uid          = res["UID"].ToString().Trim();
                    useState     = int.Parse(res["UseState"].ToString().Trim());
                    vehicleState = int.Parse(res["VehicleState"].ToString().Trim());
                    currentPage  = int.Parse(res["CurrentPage"].ToString().Trim());
                    pageNum      = int.Parse(res["PageNum"].ToString().Trim());
                    if (res["LowBattery"] != null)
                    {
                        lowBattery = int.Parse(res["LowBattery"].ToString().Trim());
                    }
                    if (res["ChargeState"] != null)
                    {
                        chargeState = int.Parse(res["ChargeState"].ToString().Trim());
                    }
                    if (res["ParkingID"] != null)
                    {
                        parkingID = res["ParkingID"].ToString().Trim();
                    }
                    if (res["AbnormalState"] != null)
                    {
                        abnormalState = int.Parse(res["AbnormalState"].ToString().Trim());
                    }
                }
                catch
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "数据格式不正确"));
                }

                VehicleManager     vm          = new VehicleManager();
                OrdersManager      om          = new OrdersManager();
                ServiceAreaManager areaManager = new ServiceAreaManager();
                DataTable          vehicles    = areaManager.GetVehiclesByParkingID(uid, parkingID, useState, vehicleState, lowBattery, chargeState, abnormalState, currentPage, pageNum, out sumCount);
                if (vehicles == null || vehicles.Rows.Count <= 0)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "亲,没有数据了"));
                }
                else
                {
                    vehicles.Columns.Add("OrderUserName");
                    vehicles.Columns.Add("OrderUserTel");
                    vehicles.Columns.Add("HeadPortrait");
                    vehicles.Columns.Add("OrderState");
                    vehicles.Columns.Add("OrderTime");
                    vehicles.Columns.Add("UserType");
                    vehicles.Columns.Add("AbnormalState");
                    vehicles.Columns.Add("AlarmType");
                    vehicles.Columns.Add("AlarmTime");
                    foreach (DataRow dr in vehicles.Rows)
                    {
                        LatLng latlng = new LatLng(double.Parse(dr["Latitude"].ToString()), double.Parse(dr["Longitude"].ToString()));
                        latlng          = SiteHelper.TransformFromWGSToGCJ(latlng);
                        dr["Longitude"] = latlng.longitude;
                        dr["Latitude"]  = latlng.latitude;

                        dr["ThumbImageUrl"] = SiteHelper.GetFileServer() + dr["ThumbImageUrl"].ToString();
                        decimal electricity = 0;
                        decimal.TryParse(dr["Electricity"].ToString(), out electricity);
                        int dianliang = Decimal.ToInt32(electricity);
                        dr["Electricity"] = dianliang + "%";

                        dr["AbnormalState"] = 0;
                        Hashtable abht = null;// vm.GetAbnormalVehicle(dr["ID"].ToString());
                        if (abht != null && abht.Keys.Count > 0)
                        {
                            dr["AbnormalState"] = 1;
                            dr["AlarmType"]     = SiteHelper.GetHashTableValueByKey(abht, "AlarmType");
                            dr["AlarmTime"]     = SiteHelper.GetHashTableValueByKey(abht, "AlarmTime");
                        }
                        Hashtable order_ht = om.GetLatestUserByVehicleID(dr["ID"].ToString());
                        if (order_ht != null && order_ht.Keys.Count > 0)
                        {
                            dr["OrderUserName"] = order_ht["REALNAME"];
                            dr["OrderUserTel"]  = order_ht["BINDPHONE"];
                            //dr["HeadPortrait"] = SiteHelper.GetFileServer() + order_ht["HEADPORTRAIT"];
                            dr["HeadPortrait"] = "";
                            dr["OrderState"]   = order_ht["ORDERSTATE"];
                            dr["UserType"]     = order_ht["USERTYPE"];
                            dr["OrderTime"]    = order_ht["CREATETIME"];
                        }
                        else
                        {
                            dr["OrderUserName"] = "";
                            dr["OrderUserTel"]  = "";
                            dr["HeadPortrait"]  = "";
                            dr["OrderState"]    = "";
                            dr["UserType"]      = "";
                            dr["OrderTime"]     = "";
                        }
                    }

                    return(SiteHelper.GetJsonFromDataTable2(vehicles, "success", "获取数据成功", "GetVehicleList", sumCount));
                }
            }
        }
Example #17
0
        public ApiResp Execute(System.Collections.Hashtable params_ht)
        {
            ApiResp resp = new ApiResp();

            resp.code = "-1";

            string client_id = params_ht["client_id"].ToString();
            long   timestamp = long.Parse(params_ht["timestamp"].ToString());
            string sign      = params_ht["sign"].ToString();

            string plate_no = null;

            if (params_ht["plate_no"] != null)
            {
                plate_no = params_ht["plate_no"].ToString();
                if (plate_no != null && (plate_no.StartsWith("http://") || plate_no.StartsWith("https://")))
                {
                    //http://api.qingniaokeji.cn/download/app.aspx?no=xxxxxxxxxxxxx
                    Uri uri = new Uri(plate_no);
                    System.Collections.Specialized.NameValueCollection coll = System.Web.HttpUtility.ParseQueryString(uri.Query);
                    plate_no = coll.Get("no");
                }
            }

            List <GetNowCars_Item> data = new List <GetNowCars_Item>();

            VehicleManager     vm          = new VehicleManager();
            ServiceAreaManager areaManager = new ServiceAreaManager();

            if (string.IsNullOrEmpty(plate_no))
            {
                DataTable dt = areaManager.GetVehiclesByCity(null, 1, 9999);
                if (dt != null)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        GetNowCars_Item item = new GetNowCars_Item();
                        item.id       = dr["ID"].ToString();
                        item.plate_no = dr["LicenseNumber"].ToString();
                        item.lng      = double.Parse(dr["Longitude"].ToString());
                        item.lat      = double.Parse(dr["Latitude"].ToString());
                        if (dr["LastUpdateTime"].ToString().Trim().Length > 0)
                        {
                            item.datetime = (long)(DateTime.Parse(dr["LastUpdateTime"].ToString()) - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()).TotalSeconds;
                        }
                        item.mileage = dr["ExpectRange"].ToString();
                        item.power   = (int)double.Parse(dr["Electricity"].ToString());
                        if (item.power > 100)
                        {
                            item.power = 100;
                        }
                        if (item.power < 0)
                        {
                            item.power = 0;
                        }
                        item.minute_price = double.Parse(dr["MinutePrice"].ToString());
                        item.mile_price   = double.Parse(dr["KmPrice"].ToString());
                        item.start_price  = double.Parse(dr["MinPrice"].ToString());
                        item.other_price  = "每日封顶价格:" + dr["MaxPrice"].ToString() + "元";

                        string use_state     = dr["UseState"].ToString();
                        string vehicle_state = dr["VehicleState"].ToString();
                        double electricity   = 0.00;
                        double.TryParse(dr["Electricity"].ToString(), out electricity);
                        DateTime last_update_time = DateTime.Now;
                        if (dr["LastUpdateTime"].ToString().Trim().Length > 0)
                        {
                            DateTime.TryParse(dr["LastUpdateTime"].ToString(), out last_update_time);
                        }

                        item.is_rent = 0;
                        if (vehicle_state == VehicleState.Use.GetHashCode().ToString() && use_state == VehicleUseState.Free.GetHashCode().ToString() && electricity > 20 && (DateTime.Now - last_update_time).TotalMinutes < 5)
                        {
                            item.is_rent = 1;
                        }
                        data.Add(item);
                    }
                    resp.code = "0";
                    resp.msg  = "成功";
                    resp.data = data;
                }
                else
                {
                    resp.code = "-1";
                    resp.msg  = "未找到车辆";
                }
            }
            else
            {
                Hashtable ht = vm.GetVehicleInfoByIDORNumber(plate_no);
                if (ht != null && ht.Keys.Count > 0)
                {
                    GetNowCars_Item item = new GetNowCars_Item();
                    item.id       = SiteHelper.GetHashTableValueByKey(ht, "ID");
                    item.plate_no = SiteHelper.GetHashTableValueByKey(ht, "LicenseNumber");
                    item.lng      = double.Parse(SiteHelper.GetHashTableValueByKey(ht, "Longitude"));
                    item.lat      = double.Parse(SiteHelper.GetHashTableValueByKey(ht, "Latitude"));
                    if (SiteHelper.GetHashTableValueByKey(ht, "LastUpdateTime").Length > 0)
                    {
                        item.datetime = (long)(DateTime.Parse(SiteHelper.GetHashTableValueByKey(ht, "LastUpdateTime")) - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()).TotalSeconds;
                    }
                    item.mileage = SiteHelper.GetHashTableValueByKey(ht, "ExpectRange");
                    item.power   = (int)double.Parse(SiteHelper.GetHashTableValueByKey(ht, "Electricity"));
                    if (item.power > 100)
                    {
                        item.power = 100;
                    }
                    if (item.power < 0)
                    {
                        item.power = 0;
                    }
                    item.minute_price = double.Parse(SiteHelper.GetHashTableValueByKey(ht, "MinutePrice"));
                    item.mile_price   = double.Parse(SiteHelper.GetHashTableValueByKey(ht, "KmPrice"));
                    item.start_price  = double.Parse(SiteHelper.GetHashTableValueByKey(ht, "MinPrice"));
                    item.other_price  = "每日封顶价格:" + SiteHelper.GetHashTableValueByKey(ht, "MaxPrice") + "元";

                    string use_state     = SiteHelper.GetHashTableValueByKey(ht, "UseState");
                    string vehicle_state = SiteHelper.GetHashTableValueByKey(ht, "VehicleState");
                    double electricity   = 0.00;
                    double.TryParse(SiteHelper.GetHashTableValueByKey(ht, "Electricity"), out electricity);
                    DateTime last_update_time = DateTime.Now;
                    if (SiteHelper.GetHashTableValueByKey(ht, "LastUpdateTime").Length > 0)
                    {
                        DateTime.TryParse(SiteHelper.GetHashTableValueByKey(ht, "LastUpdateTime"), out last_update_time);
                    }
                    item.is_rent = 0;
                    if (vehicle_state == VehicleState.Use.GetHashCode().ToString() && use_state == VehicleUseState.Free.GetHashCode().ToString() && electricity > 20 && (DateTime.Now - last_update_time).Minutes < 5)
                    {
                        item.is_rent = 1;
                    }

                    data.Add(item);

                    resp.code = "0";
                    resp.msg  = "成功";
                    resp.data = data;
                }
                else
                {
                    resp.code = "-1";
                    resp.msg  = "未找到车辆";
                }
            }

            return(resp);
        }
Example #18
0
        public string Execute(Hashtable params_ht)
        {
            Hashtable res = params_ht;

            if (res["UID"] == null ||
                res["VehicleID"] == null ||
                res["UID"].ToString().Trim().Length <= 0 ||
                res["VehicleID"].ToString().Trim().Length <= 0)
            {
                return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整"));
            }
            else
            {
                uid       = res["UID"].ToString().Trim();
                vehicleid = res["VehicleID"].ToString().Trim();
                VehicleManager    vm             = new VehicleManager();
                OrdersManager     om             = new OrdersManager();
                UserInfoManager   uim            = new UserInfoManager();
                SysSettingManager settingManager = new SysSettingManager();
                Hashtable         vehicle        = vm.GetVehicleInfoByID(vehicleid);
                if (vehicle == null || vehicle.Keys.Count == 0)
                {
                    //根据车牌号码查询车辆信息
                    vehicle = vm.GetVehicleInfoByLicenseNumber(vehicleid);
                }
                //判断车辆是否存在
                if (vehicle == null || vehicle.Keys.Count == 0)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,未找到车辆相关信息"));
                }

                vehicleid = SiteHelper.GetHashTableValueByKey(vehicle, "ID");
                //判断预约车辆是否离线
                DateTime lastUpdateTime;
                if (string.IsNullOrEmpty(SiteHelper.GetHashTableValueByKey(vehicle, "LastUpdateTime")))
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "当前车辆已离线无法约车"));
                }
                else
                {
                    lastUpdateTime = DateTime.Parse(SiteHelper.GetHashTableValueByKey(vehicle, "LastUpdateTime"));
                    if (SiteHelper.ExecDateDiff(lastUpdateTime, DateTime.Now) > 10)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "当前车辆已离线无法约车"));
                    }
                }

                //判断预约车辆电量值
                double electricity = 0.00;
                double.TryParse(SiteHelper.GetHashTableValueByKey(vehicle, "Electricity"), out electricity);
                if (electricity < 30)
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "当前车辆电量过低无法约车"));
                }

                #region 判断车辆是否在运营区域内
                ServiceAreaManager areaManager = new ServiceAreaManager();
                Hashtable          area_ht     = areaManager.GetServiceAreaByVehicleID(vehicleid);
                if (area_ht != null && area_ht.Keys.Count > 0)
                {
                    List <LatLng> area_pts    = new List <LatLng>();
                    string        coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates");
                    foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                    {
                        string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                        LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                        area_pts.Add(pt);
                    }
                    string longitude  = SiteHelper.GetHashTableValueByKey(vehicle, "longitude");
                    string latitude   = SiteHelper.GetHashTableValueByKey(vehicle, "latitude");
                    LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude));
                    //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                    vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude);
                    vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                    bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                    if (!isInPoly)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,车辆处于运营区域外"));
                    }
                }
                #endregion

                #region 判断车辆是否在停车点内

                /*string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");
                 * Hashtable parking_ht = areaManager.GetNearestParking(SiteHelper.GetHashTableValueByKey(vehicle, "longitude"), SiteHelper.GetHashTableValueByKey(vehicle, "latitude"), vehicleid);
                 * if (returnVehicleMode == "1" && parking_ht != null && parking_ht.Keys.Count > 0)
                 * {
                 *  List<LatLng> parking_pts = new List<LatLng>();
                 *  string coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates");
                 *  foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                 *  {
                 *      string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                 *      LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                 *      parking_pts.Add(pt);
                 *  }
                 *  string longitude = SiteHelper.GetHashTableValueByKey(vehicle, "longitude");
                 *  string latitude = SiteHelper.GetHashTableValueByKey(vehicle, "latitude");
                 *  LatLng vehicle_pt = new LatLng(double.Parse(latitude),double.Parse(longitude));
                 *  //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                 *  vehicle_pt = SiteHelper.GPSToGCJ02(longitude,latitude);
                 *  vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6),Math.Round(vehicle_pt.longitude, 6));
                 *  bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts);
                 *  if (!isInPoly)
                 *  {
                 *      return SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,车辆处于停车网点外");
                 *  }
                 * }*/
                #endregion

                //判断车辆是否可用
                if (SiteHelper.GetHashTableValueByKey(vehicle, "UseState").Trim() == VehicleUseState.Free.GetHashCode().ToString() && SiteHelper.GetHashTableValueByKey(vehicle, "VehicleState").Trim() == VehicleState.Use.GetHashCode().ToString())
                {
                    //判断用户余额是否充足
                    Hashtable user = uim.GetUserInfoByUserID(uid);
                    if (user == null || user.Keys.Count <= 0)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "您不是有效会员"));
                    }
                    else
                    {
                        if ("2".CompareTo(user["REALNAMECERTIFICATION"].ToString()) == 0)
                        {
                            return(SiteHelper.GetJsonFromHashTable(null, "faild", "当前认证正在审核中,请耐心等待"));
                        }
                        //验证用户是否经过身份认证
                        if ("4".CompareTo(user["REALNAMECERTIFICATION"].ToString()) != 0)
                        {
                            return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前未完成实名认证,请完成实名认证后重试"));
                        }
                        //验证用户状态是否有效
                        if ("0".CompareTo(user["USERSTATE"].ToString()) == 0)
                        {
                            return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已被禁用无法预约车辆,如有问题请与客服联系"));
                        }

                        //判断用户是否缴纳押金
                        decimal deposit = 0.00m;
                        decimal.TryParse(user["DEPOSIT"].ToString(), out deposit);
                        if (user["USERTYPE"].ToString() != UserType.OffDepositUser.GetHashCode().ToString() && deposit <= 0.00m)
                        {
                            return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前未缴纳用车押金,请完成押金缴纳后重试"));
                        }
                    }

                    //判断用户是否存在未支付订单
                    if (om.IsExistUnPayOrderByUser(uid))
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前有未支付订单,请完成支付后重试"));
                    }

                    //判断会员是否有条件预约
                    bool isExist = om.IsExistVehicleOrderByUser(uid);
                    if (isExist)
                    {
                        return(SiteHelper.GetJsonFromHashTable(null, "faild", "您已经预约过车辆了"));
                    }
                    else
                    {
                        //如果是扫码用车
                        if (res["isopen"] != null && res["isopen"].ToString() == "1")
                        {
                            string gpsnum = SiteHelper.GetHashTableValueByKey(vehicle, "VehicleGPSNum");
                            //开车
                            bool isOpen = vm.OpenVehicle(vehicleid);
                            if (!isOpen)//开车失败
                            {
                                return(SiteHelper.GetJsonFromHashTable(null, "faild", "非常抱歉,由于车辆启动失败本次扫码用车失败,请选择其他车辆或稍后重试"));
                            }
                            else//开车成功
                            {
                                string orderID  = string.Empty;
                                string orderNum = string.Empty;
                                //提交订单
                                bool isSuccess = OrderVehicle(res, vehicle, user, out orderID, out orderNum);
                                if (!isSuccess)
                                {
                                    isOpen = vm.CloseVehicle(vehicleid);
                                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,请联系管理员"));
                                }
                                else
                                {
                                    return(SiteHelper.GetJsonFromHashTable(null, "success", "车辆预约成功并已开启,欢迎驾驶电斑马"));
                                }
                            }
                        }
                        else //不是扫码用车
                        {
                            string orderID  = string.Empty;
                            string orderNum = string.Empty;
                            //提交订单
                            bool isSuccess = OrderVehicle(res, vehicle, user, out orderID, out orderNum);
                            if (isSuccess)
                            {
                                return(SiteHelper.GetJsonFromHashTable(null, "success", "车辆预约成功"));
                            }
                            else
                            {
                                return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,请联系管理员"));
                            }
                        }
                    }
                }
                else
                {
                    return(SiteHelper.GetJsonFromHashTable(null, "faild", "预约失败,车辆不允许预约"));
                }
            }
        }
Example #19
0
        public ApiResp Execute(System.Collections.Hashtable params_ht)
        {
            ApiResp resp = new ApiResp();

            resp.code = "-1";

            string client_id = params_ht["client_id"].ToString();
            long   timestamp = long.Parse(params_ht["timestamp"].ToString());
            string sign      = params_ht["sign"].ToString();
            string plate_no  = params_ht["plate_no"].ToString();
            string order_no  = params_ht["order_no"].ToString();

            GetFeeData data = new GetFeeData();

            BaoJiaManager mgr = new BaoJiaManager();
            Hashtable     ht  = mgr.GetOrderInfo(order_no);

            if (ht == null)
            {
                resp.msg  = "未找到相关订单";
                resp.code = "-1";
            }
            else
            {
                decimal             kmprice = 0.80m, minuteprice = 0.40m, mileage = 0, TotalMoney = 0.00m, SettlementMoney = 0.00m, outServiceAreaFee = 0.00m;
                int                 minutes = 0;
                string              returnLocType = "", lng = "0", lat = "0";
                ServiceAreaManager  areaManager    = new ServiceAreaManager();
                SysSettingManager   settingManager = new SysSettingManager();
                VehiclePriceManager priceManager   = new VehiclePriceManager();
                Hashtable           billing_ht     = priceManager.GetOrderSettlement(SiteHelper.GetHashTableValueByKey(ht, "id"));
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "MinutePrice"), out minuteprice);
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "KmPrice"), out kmprice);
                int.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "Minutes"), out minutes);
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "TotalMoney"), out TotalMoney);
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(ht, "SettlementMoney"), out SettlementMoney);
                returnLocType = SiteHelper.GetHashTableValueByKey(ht, "ReturnLocType");
                decimal.TryParse(SiteHelper.GetHashTableValueByKey(ht, "OutServiceAreaFee"), out outServiceAreaFee);

                string         orderState = SiteHelper.GetHashTableValueByKey(ht, "OrderState");
                VehicleManager vm         = new VehicleManager();
                Hashtable      vehicle_ht = vm.GetVehicleInfoByIDORNumber(SiteHelper.GetHashTableValueByKey(ht, "VehicleID"));
                lat = vehicle_ht["LATITUDE"].ToString();
                lng = vehicle_ht["LONGITUDE"].ToString();
                if (orderState == "1")
                {
                    SettlementMoney = TotalMoney;
                    #region 判断还车点是否在运营区域内,运营区域外加收费用
                    Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(SiteHelper.GetHashTableValueByKey(ht, "VehicleID"));
                    if (area_ht != null && area_ht.Keys.Count > 0)
                    {
                        returnLocType = "03";
                        List <LatLng> area_pts    = new List <LatLng>();
                        string        coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates");
                        foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                        {
                            string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                            LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                            area_pts.Add(pt);
                        }
                        LatLng vehicle_pt = new LatLng(double.Parse(lat), double.Parse(lng));
                        //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                        vehicle_pt = SiteHelper.GPSToGCJ02(lng, lat);
                        vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                        bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                        if (!isInPoly)
                        {
                            returnLocType = "04";
                            string serviceFee = settingManager.GetValueByKey("OutServiceAreaFee");
                            if (serviceFee.StartsWith("+"))
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney + outServiceAreaFee;
                            }
                            else
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney * outServiceAreaFee;
                            }
                            outServiceAreaFee = TotalMoney - SettlementMoney;
                        }
                    }
                    #endregion

                    #region 判断还车点是否在停车点内,否则加收费用
                    string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");
                    if (outServiceAreaFee == 0 && returnVehicleMode == "1")
                    {
                        returnLocType = "01";
                        LatLng vehicle_pt = new LatLng(double.Parse(lat), double.Parse(lng));
                        //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                        vehicle_pt = SiteHelper.GPSToGCJ02(lng, lat);
                        vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                        Hashtable parking_ht = areaManager.GetNearestParking(vehicle_pt.longitude.ToString(), vehicle_pt.latitude.ToString(), SiteHelper.GetHashTableValueByKey(ht, "VehicleID"));

                        List <LatLng> parking_pts = new List <LatLng>();
                        if (parking_ht != null && parking_ht.Keys.Count > 0)
                        {
                            string coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates");
                            foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                            {
                                string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                                LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                                parking_pts.Add(pt);
                            }
                        }

                        bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts);
                        if (!isInPoly)
                        {
                            returnLocType = "02";
                            string serviceFee = settingManager.GetValueByKey("OutParkingAreaFee");
                            if (serviceFee.StartsWith("+"))
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney + outServiceAreaFee;
                            }
                            else
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney * outServiceAreaFee;
                            }
                            outServiceAreaFee = TotalMoney - SettlementMoney;
                        }
                    }
                    #endregion
                }
                SettlementMoney            = Math.Round(SettlementMoney, 2);
                data.order_no              = order_no;
                data.all_mile              = double.Parse(SiteHelper.GetHashTableValueByKey(ht, "Mileage"));
                data.location_address_type = "3";
                if (returnLocType == "01")
                {
                    data.location_address_type = "3";
                }
                if (returnLocType == "02" || returnLocType == "03")
                {
                    data.location_address_type = "1";
                }
                if (returnLocType == "04")
                {
                    data.location_address_type = "2";
                }

                data.location_address_msg = "";
                data.order_status         = 10000;
                if (orderState == "1")
                {
                    data.order_status = 10000;
                }
                else if (orderState == "0")
                {
                    data.order_status = 10301;
                }
                else if (orderState == "2" || orderState == "5" || orderState == "3")
                {
                    data.order_status = 80200;
                }
                data.total_fee = (double)(SettlementMoney + outServiceAreaFee);
                data.timestamp = (long)(DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()).TotalSeconds;
                data.lng       = double.Parse(lng);
                data.lat       = double.Parse(lat);

                data.details = new List <GetFeeData_Fee>();
                GetFeeData_Fee item1 = new GetFeeData_Fee();
                item1.name   = "用车费用";
                item1.amount = (double)SettlementMoney;
                data.details.Add(item1);
                if (returnLocType == "04")
                {
                    GetFeeData_Fee item2 = new GetFeeData_Fee();
                    item2.name   = "行驶区域外还车调度费";
                    item2.amount = (double)(outServiceAreaFee);
                    data.details.Add(item2);
                }
                if (returnLocType == "02")
                {
                    GetFeeData_Fee item3 = new GetFeeData_Fee();
                    item3.name   = "停车点外还车调度费";
                    item3.amount = (double)(outServiceAreaFee);
                    data.details.Add(item3);
                }

                data.isLock = "1";
                int       cnt        = -1;
                DataTable parking_dt = areaManager.GetNearParking(9999, lng.ToString(), lat.ToString(), 1, 9999, ref cnt);
                if (parking_dt != null && parking_dt.Rows.Count > 0)
                {
                    List <GetFeeData_StationItem> station_list = new List <GetFeeData_StationItem>();
                    foreach (DataRow dr in parking_dt.Rows)
                    {
                        GetFeeData_StationItem station = new GetFeeData_StationItem();
                        station.parkType          = "2";
                        station.coordinatePoints  = dr["Coordinates"].ToString().Replace(";", "|");
                        station.coordinate_center = dr["Longitude"].ToString() + "," + dr["Latitude"].ToString();
                        station_list.Add(station);
                    }
                    data.stationList = station_list;
                }

                resp.data = data;
                resp.code = "0";
            }

            return(resp);
        }
Example #20
0
        public ApiResp Execute(System.Collections.Hashtable params_ht)
        {
            ApiResp resp = new ApiResp();

            resp.code = "-1";

            string client_id = params_ht["client_id"].ToString();
            long   timestamp = long.Parse(params_ht["timestamp"].ToString());
            string sign      = params_ht["sign"].ToString();
            string order_no  = params_ht["order_no"].ToString();

            BaoJiaManager mgr      = new BaoJiaManager();
            Hashtable     order_ht = mgr.GetOrderInfo(order_no);

            if (order_ht != null && order_ht.Keys.Count > 0)
            {
                ServiceAreaManager areaManager = new ServiceAreaManager();

                string vehicleid = SiteHelper.GetHashTableValueByKey(order_ht, "VehicleID");
                string orderid   = SiteHelper.GetHashTableValueByKey(order_ht, "ID");

                GetOrderTracks_Data data = new GetOrderTracks_Data();

                string returnLocType = SiteHelper.GetHashTableValueByKey(order_ht, "ReturnLocType");
                if (returnLocType == "01")
                {
                    data.return_location_address_type = "3";
                    data.return_location_address_msg  = "网点还车";

                    string toParking = SiteHelper.GetHashTableValueByKey(order_ht, "ToParking");
                    if (!string.IsNullOrEmpty(toParking))
                    {
                        Hashtable parking_ht = areaManager.GetInfoByID(toParking);
                        if (parking_ht != null && parking_ht.Keys.Count > 0)
                        {
                            data.return_station_points = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates").Replace(";", "|");
                            data.return_station_center = SiteHelper.GetHashTableValueByKey(parking_ht, "Longitude") + "," + SiteHelper.GetHashTableValueByKey(parking_ht, "Latitude");
                        }
                    }
                }
                else if (returnLocType == "02" || returnLocType == "03")
                {
                    data.return_location_address_type = "1";
                    data.return_location_address_msg  = "行驶区域内网点外还车";
                }
                else if (returnLocType == "04")
                {
                    data.return_location_address_type = "2";
                    data.return_location_address_msg  = "行驶区域外还车";

                    Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(vehicleid);
                    if (area_ht != null && area_ht.Keys.Count > 0)
                    {
                        data.return_xianzhi_points = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates").Replace(";", "|");
                    }
                }

                VehicleManager vm = new VehicleManager();
                DataTable      dt = vm.GetVehicleTrace(vehicleid, orderid, null, null);
                if (dt != null)
                {
                    GetOrderTracks_Data Data = new GetOrderTracks_Data();

                    data.return_location_address_msg = "";
                    data.line_points = "";
                    List <LatLng> pts = new List <LatLng>();
                    foreach (DataRow dr in dt.Rows)
                    {
                        double lng = double.Parse(dr["AMAP_longitude"].ToString());
                        double lat = double.Parse(dr["AMAP_latitude"].ToString());
                        pts.Add(new LatLng(lat, lng));

                        if (data.line_points.Length > 0 && !data.line_points.EndsWith("|"))
                        {
                            data.line_points += "|";
                        }
                        data.line_points += lng + "," + lat;
                    }
                    if (pts.Count > 0)
                    {
                        data.start_lng = pts[0].longitude;
                        data.star_lat  = pts[0].latitude;

                        data.end_lng = pts[pts.Count - 1].longitude;
                        data.end_lat = pts[pts.Count - 1].latitude;
                    }
                    else
                    {
                        LatLng latlng = new LatLng(double.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "EndLatitude")), double.Parse(SiteHelper.GetHashTableValueByKey(order_ht, "EndLongitude")));
                        latlng         = SiteHelper.TransformFromWGSToGCJ(latlng);
                        data.start_lng = latlng.longitude;
                        data.star_lat  = latlng.latitude;
                        data.end_lng   = data.start_lng;
                        data.end_lat   = data.star_lat;
                    }

                    resp.code = "0";
                    resp.msg  = "成功";
                    resp.data = data;
                }
                else
                {
                    resp.code = "-1";
                    resp.msg  = "未找到停车网点";
                }
            }
            else
            {
                resp.code = "-1";
                resp.msg  = "未找到相关订单";
            }

            return(resp);
        }
Example #21
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.CacheControl = "no-cache";
            context.Response.AddHeader("Pragma", "no-cache");
            context.Response.ContentType = "text/plain";
            string Action = context.Request["action"];

            switch (Action)
            {
            case "GetDistrict":
                ServiceAreaManager areaManager = new ServiceAreaManager();
                DataTable          dtArea      = areaManager.GetAreaList(int.Parse(context.Request["levelType"]), int.Parse(context.Request["parentId"]));
                context.Response.Write(JsonHelper.DataTableToJson("success", "获取数据成功", dtArea, "ServiceArea"));
                context.Response.End();
                break;

            case "GetServiceAreaByID":
                ServiceAreaManager manager = new ServiceAreaManager();
                DataTable          dt      = manager.GetServiceAreaByID(context.Request["key"]);
                context.Response.Write(JsonHelper.DataTableToJson("success", "获取数据成功", dt, "ServiceArea"));
                context.Response.End();
                break;

            case "UpdateServiceAreaCoordinates":
                ServiceAreaManager sam = new ServiceAreaManager();
                string             key = context.Request["key"];
                Hashtable          ht  = sam.GetInfoByID(key);
                ht["COORDINATES"] = context.Request["Coordinates"];
                ht["LONGITUDE"]   = context.Request["Longitude"];
                ht["LATITUDE"]    = context.Request["Latitude"];
                string areaType   = ht["AREATYPE"].ToString();
                string status     = ht["STATUS"].ToString();
                string deleteMark = ht["DELETEMARK"].ToString();
                //AreaType 区域类型 1服务范围 2停车网点
                //Status 启动状态:0禁用,1启用
                //DeleteMark 0
                if ("1".Equals(areaType) && "1".Equals(status) && "True".Equals(deleteMark))
                {
                    ICache cache = null;
                    try
                    {
                        cache = CacheFactory.GetCache();
                        string   cacheKey = "Service_Area_" + ht["CITYID"].ToString();
                        DateTime timeSpan = DateTime.Now.AddDays(10);
                        cache.Set(cacheKey, context.Request["Coordinates"], timeSpan - DateTime.Now);
                        cache.Dispose();

                        /*List<LatLng> area_pts = new List<LatLng>();
                         * string coordinates = cache.Get<string>(cacheKey);
                         * if(coordinates!=null&& coordinates.Length>0)
                         * foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                         * {
                         *  string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                         *  LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                         *  area_pts.Add(pt);
                         * }*/
                    }
                    catch (Exception e)
                    {
                        if (cache != null)
                        {
                            cache.Dispose();
                        }
                        Logger.Error("更新区域:" + ht["THISNAME"].ToString() + ",报错:" + e);
                    }
                    if (cache != null)
                    {
                        cache.Dispose();
                    }
                }
                if (sam.AddOrEditInfo(ht, key))
                {
                    context.Response.Write(JsonHelper.DataTableToJson("success", "更新成功", null, "UpdateServiceAreaCoordinates"));
                }
                else
                {
                    context.Response.Write(JsonHelper.DataTableToJson("faild", "更新失败", null, "UpdateServiceAreaCoordinates"));
                }
                context.Response.End();
                break;

            case "GetInviteCouponInfo":
                SysSettingManager settingManager = new SysSettingManager();
                int couponNum = 0;
                int.TryParse(settingManager.GetValueByKey("InviteCouponNum"), out couponNum);
                decimal couponMoney = 0.00m;
                decimal.TryParse(settingManager.GetValueByKey("InviteCouponMoney"), out couponMoney);
                double CouponPeriod = 0;
                double.TryParse(settingManager.GetValueByKey("CouponPeriod"), out CouponPeriod);
                Hashtable result_ht = new Hashtable();
                result_ht["CouponNum"]    = couponNum;
                result_ht["CouponMoney"]  = couponMoney;
                result_ht["CouponPeriod"] = DateTime.Now.Date.AddDays(CouponPeriod).ToString("yyyy-MM-dd");
                //响应数据到客户端
                context.Response.Write(SiteHelper.GetJsonFromHashTable2(result_ht, "success", "获取数据成功", "GetInviteCouponInfo"));
                break;

            case "SendVerificationCode":
                string mobie = context.Request["Mobile"].ToString().Trim();
                string code  = "";
                if (context.Request["Code"] != null)
                {
                    code = context.Request["Code"].ToString().Trim();
                }
                else
                {
                    context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "faild", "参数错误", "SendVerificationCode"));
                    context.Response.End();
                    break;
                }
                string session_code = context.Session["dt_session_code"].ToString();
                if (code.ToLower() != session_code.ToLower())
                {
                    context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "faild", "图形验证码错误", "SendVerificationCode"));
                    context.Response.End();
                    break;
                }
                SmsInfoManager  sim  = new SmsInfoManager();
                UserInfoManager uim  = new UserInfoManager();
                DataTable       user = uim.GetUserInfoByBindPhone(mobie);
                if (user != null && user.Rows.Count > 0)
                {
                    context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "faild", "手机号已注册", "SendVerificationCode"));
                    context.Response.End();
                    break;
                }
                bool sendResult = sim.SendVerificationCode(mobie);
                if (sendResult)
                {
                    context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "success", "发送验证码成功", "SendVerificationCode"));
                    context.Response.End();
                    break;
                }
                else
                {
                    context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "faild", "发送验证码失败", "SendVerificationCode"));
                    context.Response.End();
                    break;
                }

            case "NewUserRegister":
                sim = new SmsInfoManager();
                UserLoginLogManager ullm = new UserLoginLogManager();
                uim            = new UserInfoManager();
                settingManager = new SysSettingManager();
                string mobile           = context.Request["Mobile"].ToString().Trim();
                string verificationCode = context.Request["VerificationCode"].ToString().Trim();
                string invite_userid    = context.Request["InviteUserID"].ToString().Trim();

                string vcode = sim.GetVerCodeByMobile(mobile);
                if (verificationCode != vcode)
                {
                    context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "faild", "手机验证码错误", "NewUserRegister"));
                    context.Response.End();
                    return;
                }

                user = uim.GetUserInfoByBindPhone(mobile);
                if (user != null && user.Rows.Count > 0)
                {
                    context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "faild", "用户已注册", "NewUserRegister"));
                    context.Response.End();
                    return;
                }
                else
                {
                    Hashtable newuser = new Hashtable();
                    newuser["BindPhone"]             = mobile;
                    newuser["RealNameCertification"] = (int)UserRealNameCertification.Unauthorized;
                    newuser["UserState"]             = (int)UserState.Enable;
                    newuser["Balance"]      = 0;
                    newuser["RaiseBalance"] = 0;
                    newuser["IsRaiseUser"]  = (int)UserIsRaise.NO;
                    newuser["InviteCode"]   = mobile;
                    newuser["InviteUserID"] = invite_userid;
                    int num = uim.AddUserInfo(newuser);
                    if (num > -1)
                    {
                        user = uim.GetUserInfoByBindPhone(mobile);

                        //新注册用户赠送优惠券
                        couponNum = 0;
                        int.TryParse(settingManager.GetValueByKey("RegCouponNum"), out couponNum);
                        couponMoney = 0.00m;
                        decimal.TryParse(settingManager.GetValueByKey("RegCouponMoney"), out couponMoney);
                        UserCouponManager couponManager = new UserCouponManager();
                        if (couponNum > 0 && couponMoney > 0)
                        {
                            couponManager.NewUserGiveCoupons(user.Rows[0]["ID"].ToString());
                        }

                        context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "success", "新用户注册成功", "NewUserRegister"));
                        context.Response.End();
                        return;
                    }
                    else
                    {
                        context.Response.Write(SiteHelper.GetJsonFromHashTable2(null, "faild", "手机号错误", "NewUserRegister"));
                        context.Response.End();
                        return;
                    }
                }
                break;

            default:
                break;
            }
        }
Example #22
0
        /// <summary>
        /// 车辆下单
        /// </summary>
        /// <param name="out_order_no"></param>
        /// <param name="plate_no"></param>
        /// <param name="username"></param>
        /// <param name="mobile"></param>
        /// <param name="cardno"></param>
        /// <param name="errmsg"></param>
        /// <returns></returns>
        private bool CreateOrder(string out_order_no, string plate_no, string username, string mobile, string cardno, out string errmsg)
        {
            VehicleManager    vm             = new VehicleManager();
            BaoJiaManager     mgr            = new BaoJiaManager();
            SysSettingManager settingManager = new SysSettingManager();
            Hashtable         vehicle        = vm.GetVehicleInfoByID(plate_no);

            if (vehicle == null || vehicle.Keys.Count == 0)
            {
                //根据车牌号码查询车辆信息
                vehicle = vm.GetVehicleInfoByLicenseNumber(plate_no);
            }
            //判断车辆是否存在
            if (vehicle == null || vehicle.Keys.Count == 0)
            {
                errmsg = "车辆预约失败,未找到车辆相关信息";
                return(false);
            }

            string vehicleid = SiteHelper.GetHashTableValueByKey(vehicle, "ID");
            //判断预约车辆是否离线
            DateTime lastUpdateTime;

            if (string.IsNullOrEmpty(SiteHelper.GetHashTableValueByKey(vehicle, "LastUpdateTime")))
            {
                errmsg = "当前车辆已离线无法约车";
                return(false);
            }
            else
            {
                lastUpdateTime = DateTime.Parse(SiteHelper.GetHashTableValueByKey(vehicle, "LastUpdateTime"));
                if (SiteHelper.ExecDateDiff(lastUpdateTime, DateTime.Now) > 10)
                {
                    errmsg = "当前车辆已离线无法约车";
                    return(false);
                }
            }

            //判断预约车辆电量值
            double electricity = 0.00;

            double.TryParse(SiteHelper.GetHashTableValueByKey(vehicle, "Electricity"), out electricity);
            if (electricity < 20)
            {
                errmsg = "当前车辆电量过低无法约车";
                return(false);
            }

            #region 判断车辆是否在运营区域内
            ServiceAreaManager areaManager = new ServiceAreaManager();
            Hashtable          area_ht     = areaManager.GetServiceAreaByVehicleID(vehicleid);
            if (area_ht != null && area_ht.Keys.Count > 0)
            {
                List <LatLng> area_pts    = new List <LatLng>();
                string        coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates");
                foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                {
                    string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                    area_pts.Add(pt);
                }
                string longitude  = SiteHelper.GetHashTableValueByKey(vehicle, "longitude");
                string latitude   = SiteHelper.GetHashTableValueByKey(vehicle, "latitude");
                LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude));
                //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude);
                vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                if (!isInPoly)
                {
                    errmsg = "车辆预约失败,车辆处于运营区域外";
                    return(false);
                }
            }
            #endregion

            #region 判断车辆是否在停车点内
            string    returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");
            Hashtable parking_ht        = areaManager.GetNearestParking(SiteHelper.GetHashTableValueByKey(vehicle, "longitude"), SiteHelper.GetHashTableValueByKey(vehicle, "latitude"), vehicleid);
            if (returnVehicleMode == "1" && parking_ht != null && parking_ht.Keys.Count > 0)
            {
                List <LatLng> parking_pts = new List <LatLng>();
                string        coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates");
                foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                {
                    string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                    parking_pts.Add(pt);
                }
                string longitude  = SiteHelper.GetHashTableValueByKey(vehicle, "longitude");
                string latitude   = SiteHelper.GetHashTableValueByKey(vehicle, "latitude");
                LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude));
                //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude);
                vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts);
                if (!isInPoly)
                {
                    errmsg = "车辆预约失败,车辆处于停车网点外";
                    return(false);
                }
            }
            #endregion

            //判断车辆是否可用
            if (SiteHelper.GetHashTableValueByKey(vehicle, "UseState").Trim() == VehicleUseState.Free.GetHashCode().ToString() && SiteHelper.GetHashTableValueByKey(vehicle, "VehicleState").Trim() == VehicleState.Use.GetHashCode().ToString())
            {
                //判断用户是否存在未支付订单
                if (mgr.IsExistUnPayOrderByUser(mobile))
                {
                    errmsg = "您当前有未支付订单,请完成支付后重试";
                    return(false);
                }

                //判断会员是否有条件预约
                bool isExist = mgr.IsExistVehicleOrderByUser(mobile);
                if (isExist)
                {
                    errmsg = "您已经预约过车辆了";
                    return(false);
                }
                else
                {
                    string orderID  = string.Empty;
                    string orderNum = string.Empty;
                    //提交订单
                    bool isSuccess = OrderVehicle(out_order_no, username, mobile, cardno, vehicleid, out orderID, out orderNum);
                    if (isSuccess)
                    {
                        //vm.OpenVehicle(vehicleid);
                        errmsg = "";
                        return(true);
                    }
                    else
                    {
                        errmsg = "车辆预约失败,请联系管理员";
                        return(false);
                    }
                }
            }
            else
            {
                errmsg = "预约失败,车辆不允许预约";
                return(false);
            }
        }
Example #23
0
        /// <summary>
        /// 还车
        /// </summary>
        /// <param name="order_no"></param>
        /// <param name="errmsg"></param>
        /// <returns></returns>
        private bool ReturnVehicle(string order_no, out string errmsg)
        {
            BaoJiaManager mgr = new BaoJiaManager();

            VehicleManager     vm             = new VehicleManager();
            ServiceAreaManager areaManager    = new ServiceAreaManager();
            SysSettingManager  settingManager = new SysSettingManager();
            Hashtable          order          = mgr.GetOrderInfo(order_no);

            //判断是否有车
            if (order == null)
            {
                errmsg = "未找到相关订单";
                return(false);
            }
            else
            {
                string    vid        = SiteHelper.GetHashTableValueByKey(order, "VehicleID");
                Hashtable vehicle_ht = vm.GetVehicleInfoByID(vid);
                string    longitude  = SiteHelper.GetHashTableValueByKey(vehicle_ht, "Longitude");
                string    latitude   = SiteHelper.GetHashTableValueByKey(vehicle_ht, "Latitude");

                //处理订单
                string order_state = SiteHelper.GetHashTableValueByKey(order, "OrderState");
                if (order_state != "1")
                {
                    errmsg = "订单当前所在状态无法还车";
                    return(false);
                }
                else
                {
                    int renttime = 0;
                    int.TryParse(SiteHelper.GetHashTableValueByKey(order, "RentDuration"), out renttime);
                    decimal  hours = 0.00m;
                    decimal  kmprice = 0.80m;
                    decimal  minuteprice = 0.40m;
                    decimal  mileage = 0;
                    int      minutes = 0;
                    decimal  userprivilegeratio = 1;
                    decimal  raisecommisssionratio = 0.10m;
                    decimal  TotalMoney = 0.00m;
                    decimal  SettlementMoney = 0.00m;
                    decimal  occupyMoney = 0.0m;
                    decimal  payMoney = 0.00m;
                    decimal  RaiseCommissionMoney = 0.00m;
                    decimal  outServiceAreaFee = 0.00m;
                    DateTime createtime = DateTime.Now;
                    DateTime startTime = DateTime.Now;
                    String   returnParkingID = null, returnLocType = null;
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "KMPrice"), out kmprice);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "MinutePrice"), out minuteprice);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "Mileage"), out mileage);
                    //decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "Minutes"), out minutes);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "UserPrivilegeRatio"), out userprivilegeratio);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "RaiseCommissionRatio"), out raisecommisssionratio);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "TotalMoney"), out TotalMoney);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "SettlementMoney"), out SettlementMoney);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "OccupyMoney"), out occupyMoney);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "RaiseCommissionMoney"), out RaiseCommissionMoney);
                    DateTime.TryParse(SiteHelper.GetHashTableValueByKey(order, "CreateTime"), out createtime);
                    DateTime.TryParse(SiteHelper.GetHashTableValueByKey(order, "StartTime"), out startTime);
                    int startminutes = 0;
                    int.TryParse(SiteHelper.GetHashTableValueByKey(order, "StartMinutes"), out startminutes);
                    string strStartTime = SiteHelper.GetHashTableValueByKey(order, "StartTime");

                    string gpsnum = SiteHelper.GetHashTableValueByKey(order, "VehicleGPSNum");
                    //锁车
                    bool isSuccess = vm.CloseVehicle(SiteHelper.GetHashTableValueByKey(order, "VehicleID"));
                    if (!isSuccess)
                    {
                        errmsg = "锁车失败,还车操作失败";
                        return(false);
                    }
                    VehiclePriceManager priceManager = new VehiclePriceManager();
                    Hashtable           billing_ht   = priceManager.GetOrderSettlement(SiteHelper.GetHashTableValueByKey(order, "ID"));
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "MinutePrice"), out minuteprice);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "KmPrice"), out kmprice);
                    int.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "Minutes"), out minutes);
                    decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "TotalMoney"), out TotalMoney);

                    SettlementMoney = TotalMoney;

                    #region 判断还车点是否在运营区域内,运营区域外加收费用
                    Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(SiteHelper.GetHashTableValueByKey(order, "VehicleID"));
                    if (area_ht != null && area_ht.Keys.Count > 0)
                    {
                        returnLocType = "03";
                        List <LatLng> area_pts    = new List <LatLng>();
                        string        coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates");
                        foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                        {
                            string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                            LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                            area_pts.Add(pt);
                        }
                        LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude));
                        //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                        vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude);
                        vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                        bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts);
                        if (!isInPoly)
                        {
                            returnLocType = "04";
                            string serviceFee = settingManager.GetValueByKey("OutServiceAreaFee");
                            if (serviceFee.StartsWith("+"))
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney + outServiceAreaFee;
                            }
                            else
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney * outServiceAreaFee;
                            }
                            outServiceAreaFee = TotalMoney - SettlementMoney;
                        }
                    }
                    #endregion

                    #region 判断还车点是否在停车点内,否则加收费用
                    string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode");
                    if (outServiceAreaFee == 0 && returnVehicleMode == "1")
                    {
                        returnLocType = "01";
                        LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude));
                        //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt);
                        vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude);
                        vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6));
                        Hashtable parking_ht = areaManager.GetNearestParking(vehicle_pt.longitude.ToString(), vehicle_pt.latitude.ToString(), SiteHelper.GetHashTableValueByKey(order, "VehicleID"));

                        List <LatLng> parking_pts = new List <LatLng>();
                        if (parking_ht != null && parking_ht.Keys.Count > 0)
                        {
                            returnParkingID = SiteHelper.GetHashTableValueByKey(parking_ht, "ID");
                            string coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates");
                            foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries))
                            {
                                string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                                LatLng   pt     = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0]));
                                parking_pts.Add(pt);
                            }
                        }

                        bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts);
                        if (!isInPoly)
                        {
                            returnLocType   = "02";
                            returnParkingID = null;
                            string serviceFee = settingManager.GetValueByKey("OutParkingAreaFee");
                            if (serviceFee.StartsWith("+"))
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney + outServiceAreaFee;
                            }
                            else
                            {
                                serviceFee = serviceFee.Substring(1, serviceFee.Length - 1);
                                decimal.TryParse(serviceFee, out outServiceAreaFee);
                                TotalMoney = TotalMoney * outServiceAreaFee;
                            }
                            outServiceAreaFee = TotalMoney - SettlementMoney;
                        }
                    }
                    #endregion

                    payMoney = TotalMoney;

                    Hashtable userParm = new Hashtable();
                    userParm["VID"]               = SiteHelper.GetHashTableValueByKey(order, "VehicleID");
                    userParm["OrderNum"]          = SiteHelper.GetHashTableValueByKey(order, "OrderNum");
                    userParm["TotalMoney"]        = TotalMoney;
                    userParm["SettlementMoney"]   = SettlementMoney;
                    userParm["PayMoney"]          = payMoney;
                    userParm["PayTime"]           = SiteHelper.GetWebServerCurrentTime().ToString();
                    userParm["EndTime"]           = SiteHelper.GetWebServerCurrentTime().ToString();
                    userParm["FinishedTime"]      = SiteHelper.GetWebServerCurrentTime().ToString();
                    userParm["OID"]               = SiteHelper.GetHashTableValueByKey(order, "id");
                    userParm["ChangesAmount"]     = -Math.Abs(TotalMoney);
                    userParm["UserFinancialID"]   = CommonHelper.GetGuid;
                    userParm["UserID"]            = null;
                    userParm["ChangesTime"]       = SiteHelper.GetWebServerCurrentTime().ToString();
                    userParm["ChangesType"]       = UserFinancialChangesType.Consumption.GetHashCode().ToString();
                    userParm["OrderID"]           = SiteHelper.GetHashTableValueByKey(order, "id");
                    userParm["RentDuration"]      = hours;
                    userParm["Remark"]            = "用户还车";
                    userParm["Minutes"]           = minutes;
                    userParm["DiffMoney"]         = TotalMoney;
                    userParm["Operator"]          = "";
                    userParm["OperatorType"]      = UserFinancialOperatorType.Admin.GetHashCode().ToString();
                    userParm["State"]             = UserFinancialState.Effect.GetHashCode().ToString();
                    userParm["MessageID"]         = CommonHelper.GetGuid;
                    userParm["OutServiceAreaFee"] = (int)outServiceAreaFee;
                    userParm["ReturnParkingID"]   = returnParkingID;
                    userParm["ReturnLocType"]     = returnLocType;

                    bool isSettlementSuccess = mgr.ReturnVehicle(userParm);
                    if (isSettlementSuccess)
                    {
                        OrdersManager om = new OrdersManager();
                        om.UpdateOrderGPS(SiteHelper.GetHashTableValueByKey(order, "id"), false);
                        errmsg = "还车成功";
                        return(true);
                    }
                    else
                    {
                        errmsg = "锁车操作失败";
                        return(false);
                    }
                }
            }
        }
Example #24
0
        public ApiResp Execute(System.Collections.Hashtable params_ht)
        {
            ApiResp resp = new ApiResp();

            resp.code = "-1";

            string client_id = params_ht["client_id"].ToString();
            long   timestamp = long.Parse(params_ht["timestamp"].ToString());
            string sign      = params_ht["sign"].ToString();

            List <GetCars_Item> data = new List <GetCars_Item>();

            SysSettingManager  settingManager = new SysSettingManager();
            DictManager        dictManager    = new DictManager();
            ServiceAreaManager areaManager    = new ServiceAreaManager();
            string             depositMoney   = settingManager.GetValueByKey("GoldDepositAmount");

            DataTable city_dt = dictManager.GetDictList("03");

            if (city_dt != null && city_dt.Rows.Count > 0)
            {
                foreach (DataRow city_dr in city_dt.Rows)
                {
                    GetCars_Item item    = new GetCars_Item();
                    Hashtable    area_ht = areaManager.GetServiceAreaByCityCode(city_dr["remark"].ToString());
                    if (area_ht != null && area_ht.Keys.Count > 0)
                    {
                        item.coordinatePoints  = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates").Replace(";", "|");
                        item.coordinate_center = SiteHelper.GetHashTableValueByKey(area_ht, "Longitude") + "," + SiteHelper.GetHashTableValueByKey(area_ht, "Latitude");
                    }
                    item.city_name = city_dr["name"].ToString();

                    DataTable car_dt = areaManager.GetVehiclesByCity(item.city_name, 1, 9999);
                    if (car_dt != null && car_dt.Rows.Count > 0)
                    {
                        List <GetCars_Car> car_list = new List <GetCars_Car>();
                        foreach (DataRow dr in car_dt.Rows)
                        {
                            GetCars_Car car = new GetCars_Car();
                            car.id            = dr["ID"].ToString();
                            car.plate_no      = dr["LicenseNumber"].ToString();
                            car.carname       = dr["Brand"].ToString();
                            car.start_price   = double.Parse(dr["MinPrice"].ToString());
                            car.minute_price  = double.Parse(dr["MinutePrice"].ToString());
                            car.mile_price    = double.Parse(dr["KmPrice"].ToString());
                            car.deposit_money = double.Parse(depositMoney);

                            car_list.Add(car);
                        }
                        item.cars = car_list;
                    }
                    if (item.cars != null && item.cars.Count > 0)
                    {
                        data.Add(item);
                    }
                }
            }

            if (data.Count > 0)
            {
                resp.code = "0";
                resp.msg  = "成功";
                resp.data = data;
            }
            else
            {
                resp.code = "-1";
                resp.msg  = "未找到车辆信息";
            }

            return(resp);
        }