Exemplo n.º 1
0
        public bool OrderPayCallback(Hashtable ht)
        {
            try
            {
                OrdersManager     om             = new OrdersManager();
                VehicleManager    vm             = new VehicleManager();
                SysSettingManager settingManager = new SysSettingManager();

                string  ordernum = ht["OrderNum"].ToString();
                decimal paymoney = 0.00m;
                decimal.TryParse(ht["TotalFee"].ToString(), out paymoney);
                Hashtable orderinfo = GetOrderInfo(ordernum);

                List <StringBuilder> sqls = new List <StringBuilder>();
                List <object>        objs = new List <object>();

                //更改订单状态
                StringBuilder sbUpdateOrder = new StringBuilder();
                sbUpdateOrder.Append(@"UPDATE yr_orders SET PayMoney=@PayMoney,PayTime=@PayTime,FinishedTime=@FinishedTime,PayState=@PayState,OrderState=@OrderState where OrderNum=@OrderNum");
                SqlParam[] updateOrderParam = new SqlParam[] {
                    new SqlParam("@PayMoney", paymoney),
                    new SqlParam("@PayState", OrderPayState.AlreadyPay.GetHashCode()),
                    new SqlParam("@OrderState", OrderState.Finished.GetHashCode()),
                    new SqlParam("@PayTime", SiteHelper.GetWebServerCurrentTime()),
                    new SqlParam("@FinishedTime", SiteHelper.GetWebServerCurrentTime()),
                    new SqlParam("@OrderNum", ordernum)
                };
                sqls.Add(sbUpdateOrder);
                objs.Add(updateOrderParam);

                return(DataFactory.SqlDataBase().BatchExecuteBySqlWithTrans(sqls.ToArray(), objs.ToArray()));
            }
            catch
            {
                return(false);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取订单结算信息
        /// </summary>
        /// <param name="orderid"></param>
        /// <returns></returns>
        public Hashtable GetOrderSettlement(string orderid)
        {
            Hashtable result = new Hashtable();

            UserInfoManager   userManager    = new UserInfoManager();
            OrdersManager     ordersManager  = new OrdersManager();
            VehicleManager    vehicleManager = new VehicleManager();
            SysSettingManager settingManager = new SysSettingManager();
            Hashtable         order_ht       = ordersManager.GetOrderInfoByID(orderid);

            string orderState = SiteHelper.GetHashTableValueByKey(order_ht, "OrderState");
            string userID     = SiteHelper.GetHashTableValueByKey(order_ht, "UserID");

            if (OrderState.Valid.GetHashCode().ToString() == orderState)
            {
                #region 未结算订单

                int     minutes     = 0;
                float   mileage     = 0.00f;
                decimal minutePrice = 0.00m;
                decimal kmPrice     = 0.00m;
                decimal minPrice    = 0.00m;
                decimal maxPrice    = 0.00m;
                decimal totalMoney  = 0.00m;

                int orderFreeMinutes = 0;
                int.TryParse(settingManager.GetValueByKey("OrderFreeMinutes"), out orderFreeMinutes);
                double orderFreeKm = 0;
                double.TryParse(settingManager.GetValueByKey("OrderFreeKm"), out orderFreeKm);

                float.TryParse(SiteHelper.GetHashTableValueByKey(order_ht, "Mileage"), out mileage);

                Hashtable vehicle_ht = vehicleManager.GetVehicleInfoByID(SiteHelper.GetHashTableValueByKey(order_ht, "VehicleID"));
                Hashtable user_ht    = userManager.GetUserInfoByUserID(userID);
                DataTable price_dt   = GetPriceInfo(SiteHelper.GetHashTableValueByKey(order_ht, "CityID"), SiteHelper.GetHashTableValueByKey(vehicle_ht, "Model"));
                if (price_dt != null && price_dt.Rows.Count > 0)
                {
                    decimal.TryParse(price_dt.Rows[0]["MinutePrice"].ToString(), out minutePrice);
                    decimal.TryParse(price_dt.Rows[0]["KmPrice"].ToString(), out kmPrice);
                    decimal.TryParse(price_dt.Rows[0]["MinPrice"].ToString(), out minPrice);
                    decimal.TryParse(price_dt.Rows[0]["MaxPrice"].ToString(), out maxPrice);
                }
                minutes = ordersManager.GetOrderBillingTime(SiteHelper.GetHashTableValueByKey(order_ht, "OrderNum"));
                if (minutes > 0)
                {
                    //totalMoney = minutePrice * minutes + kmPrice * (decimal)mileage;
                    totalMoney = minutePrice * (minutes - (minutes > orderFreeMinutes ? orderFreeMinutes : 0)) + kmPrice * (decimal)(mileage - (mileage > orderFreeKm ? orderFreeKm : 0));
                    if (totalMoney < minPrice)
                    {
                        totalMoney = minPrice;
                    }
                    if (totalMoney > maxPrice)
                    {
                        totalMoney = maxPrice;
                    }
                }

                //用车5分钟以内或骑行100米以内还车都不收费
                if (minutes < orderFreeMinutes || mileage < orderFreeKm)
                {
                    totalMoney = 0.00m;
                }

                result["MinutePrice"] = minutePrice;
                result["KmPrice"]     = kmPrice;
                result["Minutes"]     = minutes;
                result["TotalMoney"]  = totalMoney;

                #endregion
            }
            else
            {
                #region 已结算订单

                result["MinutePrice"] = SiteHelper.GetHashTableValueByKey(order_ht, "MinutePrice");
                result["KmPrice"]     = SiteHelper.GetHashTableValueByKey(order_ht, "KMPrice");
                result["Minutes"]     = SiteHelper.GetHashTableValueByKey(order_ht, "Minutes");
                result["TotalMoney"]  = SiteHelper.GetHashTableValueByKey(order_ht, "TotalMoney");

                #endregion
            }

            return(result);
        }