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); } }
/// <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); }