public static ParkOrder AddMonthlyRentOrderCS(string parkingId, string carTypeId, string grantId, DateTime originalStartDate, DateTime originalEndDate, DateTime newStartDate, DateTime newEndDate, int renewalMonth, int pkLotQuantit, string operatorId, decimal Amount, DbOperator dbOperator) { ParkOrder order = GenerateMonthCardOrderModelCS(parkingId, carTypeId, grantId, originalEndDate, originalEndDate, newStartDate, newEndDate, renewalMonth, pkLotQuantit, Amount, operatorId); IParkOrder factory = ParkOrderFactory.GetFactory(); return(factory.Add(order, dbOperator)); }
private static ParkOrder GenerateMonthCardOrderModelCS(string parkingId, string carTypeId, string grantId, DateTime originalStartDate, DateTime originalEndDate, DateTime newStartDate, DateTime newEndDate, int renewalMonth, int pkLotQuantit, decimal Amount, string operatorId) { ParkCarType carType = ParkCarTypeServices.QueryParkCarTypeByRecordId(carTypeId); if (carType == null) { throw new MyException("获取卡类失败"); } ParkOrder order = new ParkOrder(); order.OrderNo = IdGenerator.Instance.GetId().ToString(); order.Status = 1; order.Amount = Amount; order.PayAmount = order.Amount; order.Remark = "月卡续费"; order.OrderTime = DateTime.Now; order.OrderType = OrderType.MonthCardPayment; order.PKID = parkingId; order.TagID = grantId; order.PayWay = OrderPayWay.Cash; order.OrderSource = OrderSource.ManageOffice; order.UserID = operatorId; order.OldUserBegin = originalStartDate; order.OldUserulDate = originalEndDate; order.NewUserBegin = newStartDate; order.NewUsefulDate = newEndDate; order.OldMoney = 0; order.NewMoney = 0; order.PayTime = DateTime.Now; return(order); }
public ParkOrder Add(ParkOrder model) { using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { return(Add(model, dbOperator)); } }
/// <summary> /// 构建中央缴费订单 /// </summary> /// <param name="parkingId">车场编号</param> /// <param name="ioRecordId">记录编号</param> /// <param name="amount">订单金额</param> /// <param name="payAmount">已付金额</param> /// <param name="discountAmount">优惠金额</param> /// <param name="carderateIds">优免券编号</param> /// <param name="feeRuleId">收费规则编号</param> /// <param name="cashTime">结余时间</param> /// <param name="cashMoney">结余金额</param> /// <param name="operatorId">操作员编号</param> /// <returns></returns> private static ParkOrder GenerateCentralFeeOrderModel(string parkingId, string ioRecordId, decimal amount, decimal payAmount, decimal discountAmount, List <string> carderateIds, string feeRuleId, DateTime cashTime, decimal cashMoney, string operatorId) { ParkOrder order = new ParkOrder(); order.OrderNo = IdGenerator.Instance.GetId().ToString(); order.TagID = ioRecordId; order.OrderType = OrderType.TempCardPayment; order.PayWay = OrderPayWay.Cash; order.Amount = amount; order.UnPayAmount = 0; order.PayAmount = payAmount; order.DiscountAmount = discountAmount; if (carderateIds != null && carderateIds.Count > 0) { order.CarderateID = string.Join(",", carderateIds); } order.Status = 1; order.OrderSource = OrderSource.CenterCharge; DateTime now = DateTime.Now; order.OrderTime = now; order.PayTime = now; order.PKID = parkingId; order.UserID = operatorId; order.Remark = "中央收费"; order.CashMoney = cashMoney; order.CashTime = cashTime; order.FeeRuleID = feeRuleId; return(order); }
/// <summary> /// 构建VIP卡续期订单 /// </summary> /// <param name="grantId"></param> /// <param name="originalLimitEnd"></param> /// <param name="newLimitEnd"></param> /// <param name="renewalMonth"></param> /// <param name="operatorId"></param> /// <returns></returns> private static ParkOrder GenerateVipCardOrderModel(string parkingId, string grantId, DateTime originalStartDate, DateTime originalEndDate, DateTime newStartDate, DateTime newEndDate, int renewalMonth, string operatorId) { ParkOrder order = new ParkOrder(); order.OrderNo = IdGenerator.Instance.GetId().ToString(); order.Status = 1; order.Amount = 0; order.PayAmount = 0; order.PKID = parkingId; order.Remark = "VIP卡续期"; order.OrderTime = DateTime.Now; order.OrderType = OrderType.VIPCardRenewal; order.TagID = grantId; order.PayWay = OrderPayWay.Cash; order.OrderSource = OrderSource.ManageOffice; order.UserID = operatorId; order.OldUserBegin = originalStartDate; order.OldUserulDate = originalEndDate; order.NewUserBegin = newStartDate; order.NewUsefulDate = newEndDate; order.OldMoney = 0; order.NewMoney = 0; order.PayTime = DateTime.Now; return(order); }
/// <summary> /// 生存商家充值订单 /// </summary> /// <param name="seller">商家信息</param> /// <param name="chargeBalance">充值金额</param> /// <param name="operatorId">操作者编号</param> /// <param name="dbOperator"></param> /// <returns></returns> public static ParkOrder MarkSellerChargeOrder(ParkSeller seller, decimal chargeBalance, string operatorId, OrderSource orderSource, OrderPayWay payWay, DbOperator dbOperator) { ParkOrder order = GetSellerChargeOrder(seller, chargeBalance, operatorId, orderSource, payWay); IParkOrder factory = ParkOrderFactory.GetFactory(); return(factory.Add(order, dbOperator)); }
/// <summary> /// 生存VIP卡续期订单 /// </summary> /// <param name="grantId"></param> /// <param name="originalStartDate"></param> /// <param name="originalEndDate"></param> /// <param name="newStartDate"></param> /// <param name="newEndDate"></param> /// <param name="renewalMonth"></param> /// <param name="operatorId"></param> /// <param name="dbOperator"></param> /// <returns></returns> public static ParkOrder AddVipCardOrder(string parkingId, string grantId, DateTime originalStartDate, DateTime originalEndDate, DateTime newStartDate, DateTime newEndDate, int renewalMonth, string operatorId, DbOperator dbOperator) { ParkOrder order = GenerateVipCardOrderModel(parkingId, grantId, originalStartDate, originalEndDate, newEndDate, newEndDate, renewalMonth, operatorId); IParkOrder factory = ParkOrderFactory.GetFactory(); return(factory.Add(order, dbOperator)); }
/// <summary> /// 生存储值卡续费订单 /// </summary> /// <param name="rechargeMoney"></param> /// <param name="card"></param> /// <param name="operatorId"></param> /// <param name="dbOperator"></param> /// <returns></returns> public static ParkOrder AddStoredValueCarOrder(string parkingId, decimal rechargeMoney, BaseCard card, string operatorId, DbOperator dbOperator) { ParkOrder order = GenerateStoredValueCarOrderModel(parkingId, rechargeMoney, card, operatorId); IParkOrder factory = ParkOrderFactory.GetFactory(); return(factory.Add(order, dbOperator)); }
private static bool SyncSellerRecharge(OnlineOrder order, OrderPayWay payWay) { using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { IParkSeller factory = ParkSellerFactory.GetFactory(); ParkSeller model = factory.QueryBySellerId(order.InOutID); if (model == null) { throw new MyException("商家不存在"); } dbOperator.BeginTransaction(); try { ParkOrder pkOrder = ParkOrderServices.MarkSellerChargeOrder(model, order.Amount, model.SellerID, OrderSource.WeiXin, payWay, dbOperator); if (order == null) { throw new MyException("创建充值订单失败"); } bool result = factory.SellerRecharge(model.SellerID, order.Amount, dbOperator); if (!result) { throw new MyException("商家充值失败"); } dbOperator.CommitTransaction(); return(result); } catch (Exception ex) { dbOperator.RollbackTransaction(); ExceptionsServices.AddExceptions(ex, "商家微信充值通知失败,订单编号:" + order.OrderID); return(false); } } }
/// <summary> /// 生存返还卡片押金订单 /// </summary> /// <param name="card"></param> /// <param name="operatorId"></param> /// <returns></returns> public static ParkOrder MarkUserCardDepositRefundOrder(BaseCard card, string operatorId, DbOperator dbOperator) { ParkOrder order = GetUserCardDepositRefundOrder(card, operatorId); IParkOrder factory = ParkOrderFactory.GetFactory(); return(factory.Add(order, dbOperator)); }
/// <summary> /// 退款 /// </summary> /// <param name="grantlist"></param> /// <param name="Amout"></param> /// <param name="EndTime"></param> /// <param name="model"></param> /// <returns></returns> public static bool RefundCardAmout(ParkGrant grantmodel, DateTime EndTime, ParkOrder model) { if (grantmodel == null || model == null) { throw new ArgumentNullException("models"); } model.RecordID = GuidGenerator.GetGuidString(); IParkGrant factory = ParkGrantFactory.GetFactory(); List <ParkGrant> list = new List <ParkGrant>(); if (grantmodel.PKLot == null || grantmodel.PKLot.Trim() == "") { list.Add(grantmodel); } else { string mesg = ""; list = factory.GetCardgrantsByLot(grantmodel.PKID, grantmodel.PKLot, out mesg); } bool result = factory.RefundCardAmout(list, EndTime, model); if (result) { foreach (var item in list) { OperateLogServices.AddOperateLog <ParkGrant>(item, OperateType.Update); } OperateLogServices.AddOperateLog <ParkOrder>(model, OperateType.Add); } return(result); }
/// <summary> /// 生存中央缴费订单 /// </summary> /// <param name="parkingId">车场编号</param> /// <param name="ioRecordId">记录编号</param> /// <param name="amount">订单金额</param> /// <param name="payAmount">已付金额</param> /// <param name="discountAmount">优惠金额</param> /// <param name="carderateIds">优免券编号</param> /// <param name="feeRuleId">收费规则编号</param> /// <param name="cashTime">结余时间</param> /// <param name="cashMoney">结余金额</param> /// <param name="operatorId">操作员编号</param> /// <returns></returns> public static ParkOrder AddCentralFeeOrder(string parkingId, string ioRecordId, decimal amount, decimal payAmount, decimal discountAmount, List <string> carderateIds, string feeRuleId, DateTime cashTime, decimal cashMoney, string operatorId, DbOperator dbOperator) { ParkOrder order = GenerateCentralFeeOrderModel(parkingId, ioRecordId, amount, payAmount, discountAmount, carderateIds, feeRuleId, cashTime, cashMoney, operatorId); IParkOrder factory = ParkOrderFactory.GetFactory(); return(factory.Add(order, dbOperator)); }
public static bool SellerCharge(string sellerId, decimal balance, string operatorId) { if (sellerId.IsEmpty()) { throw new ArgumentNullException("sellerId"); } if (operatorId.IsEmpty()) { throw new ArgumentNullException("operatorId"); } if (balance <= 0) { throw new ArgumentNullException("balance"); } IParkSeller factory = ParkSellerFactory.GetFactory(); ParkSeller model = factory.QueryBySellerId(sellerId); if (model == null) { throw new MyException("商家不存在"); } using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); ParkOrder order = ParkOrderServices.MarkSellerChargeOrder(model, balance, operatorId, OrderSource.ManageOffice, OrderPayWay.Cash, dbOperator); if (order == null) { throw new MyException("创建充值订单失败"); } bool result = factory.SellerRecharge(sellerId, balance, dbOperator); if (!result) { throw new MyException("取消暂停计划失败"); } dbOperator.CommitTransaction(); ParkSeller newSeller = factory.QueryBySellerId(sellerId); if (newSeller != null) { OperateLogServices.AddOperateLog(OperateType.Update, string.Format("sellerId:{0},充值:{1},余额为:{2}", sellerId, balance, newSeller.Balance)); } return(result); } catch (Exception ex) { dbOperator.RollbackTransaction(); throw ex; } } }
public static ParkOrder AddOrder(ParkOrder mode, out string errorMsg) { if (mode == null) { throw new ArgumentNullException("mode"); } IParkOrder factory = ParkOrderFactory.GetFactory(); return(factory.AddOrder(mode, out errorMsg)); }
/// <summary> /// 过期转临停订单处理 /// </summary> /// <param name="ioRecordIds"></param> /// <param name="operatorId"></param> /// <param name="dbOperator"></param> /// <returns></returns> public static bool AddExpiredToProStopOrder(List <string> ioRecordIds, string operatorId, DbOperator dbOperator) { if (ioRecordIds.Count == 0) { return(false); } IParkOrder factory = ParkOrderFactory.GetFactory(); List <ParkOrder> orders = factory.QueryByIORecordIds(ioRecordIds); if (orders.Count == 0) { return(true); } bool result = factory.UpdateOrderStatusByIORecordIds(ioRecordIds, -1, dbOperator); if (!result) { return(false); } foreach (var item in orders) { item.OrderNo = IdGenerator.Instance.GetId().ToString(); item.TagID = item.RecordID; item.Status = 1; item.OrderSource = OrderSource.ManageOffice; item.OrderTime = DateTime.Now; item.UserID = operatorId; item.Amount = item.Amount; item.PayAmount = item.PayAmount; item.OldMoney = item.OldMoney; item.NewMoney = item.NewMoney; item.PayWay = OrderPayWay.Cash; item.Remark = "过期转临停关联订单记录:" + item.RecordID; item.PayTime = DateTime.Now; item.CashTime = item.PayTime; item.CashMoney = item.CashMoney; item.PayTime = DateTime.Now; ParkOrder order = factory.Add(item, dbOperator); if (order == null) { return(false); } } return(true); }
public static bool AuditingDiffOrder(ParkOrder model, decimal Amount, decimal PayAmount, out string ErrorMessage) { if (model.RecordID.IsEmpty()) { throw new ArgumentNullException("recordID"); } IParkOrder factory = ParkOrderFactory.GetFactory(); bool result = factory.AuditingDiffOrder(model.RecordID, Amount, PayAmount, out ErrorMessage); if (result) { OperateLogServices.AddOperateLog <ParkOrder>(model, OperateType.Update); } return(result); }
public ParkOrder AddOrder(ParkOrder model, out string ErrorMessage) { ErrorMessage = ""; try { using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { return(Add(model, dbOperator)); } } catch (Exception e) { ErrorMessage = e.Message; } return(null); }
/// <summary> /// 构建商家充值充值订单 /// </summary> /// <param name="seller">商家信息</param> /// <param name="chargeBalance">充值金额</param> /// <param name="systemId">系统编号</param> /// <param name="loginUserRecordId">登录用户编号</param> /// <returns></returns> private static ParkOrder GetSellerChargeOrder(ParkSeller seller, decimal chargeBalance, string operatorId, OrderSource orderSource, OrderPayWay payWay) { ParkOrder order = new ParkOrder(); order.OrderNo = IdGenerator.Instance.GetId().ToString(); order.Status = 1; order.OrderSource = orderSource; order.Amount = chargeBalance; order.PayAmount = chargeBalance; order.Remark = "商家充值"; order.OrderTime = DateTime.Now; order.OrderType = OrderType.BusinessRecharge; order.TagID = seller.SellerID; order.PayWay = payWay; order.UserID = operatorId; order.OldMoney = seller.Balance; order.NewMoney = chargeBalance + seller.Balance; order.PayTime = DateTime.Now; return(order); }
/// <summary> /// 构建储值卡续费订单 /// </summary> /// <param name="rechargeMoney">充值金额(分)</param> /// <param name="parkingId">车场编号</param> /// <param name="card">用户卡信息</param> /// <param name="operatorId">登录用户编号</param> /// <returns></returns> private static ParkOrder GenerateStoredValueCarOrderModel(string parkingId, decimal rechargeMoney, BaseCard card, string operatorId) { ParkOrder order = new ParkOrder(); order.OrderNo = IdGenerator.Instance.GetId().ToString(); order.Status = 1; order.PKID = parkingId; order.OrderSource = OrderSource.ManageOffice; order.Amount = rechargeMoney; order.PayAmount = rechargeMoney; order.Remark = "储值卡续费"; order.OrderTime = DateTime.Now; order.OrderType = OrderType.ValueCardRecharge; order.TagID = card.CardID; order.PayWay = OrderPayWay.Cash; order.UserID = operatorId; order.OldMoney = card.Balance; order.NewMoney = card.Balance + rechargeMoney; order.PayTime = DateTime.Now; return(order); }
/// <summary> /// 构建返还卡片押金订单 /// </summary> /// <param name="usercard"></param> /// <param name="systemId"></param> /// <param name="userId"></param> /// <returns></returns> private static ParkOrder GetUserCardDepositRefundOrder(BaseCard usercard, string operatorId) { ParkOrder order = new ParkOrder(); order.OrderNo = IdGenerator.Instance.GetId().ToString(); order.Status = 1; order.PayWay = OrderPayWay.Cash; order.OrderSource = OrderSource.ManageOffice; order.Amount = -usercard.Deposit; order.PayAmount = -usercard.Deposit; order.Remark = "卡片押金-退还"; order.OrderTime = DateTime.Now; order.OrderType = OrderType.CardDeposit; order.TagID = usercard.CardID; order.Amount = order.Amount; order.UserID = operatorId; order.OldMoney = 0; order.NewMoney = 0; order.PayTime = DateTime.Now; return(order); }
/// <summary> /// 续期或续费 /// </summary> /// <param name="grantId"></param> /// <param name="renewalMonth"></param> /// <param name="payTotalMoney"></param> /// <param name="operatorId"></param> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <returns></returns> public static bool RenewalsOrRecharge(string grantId, int renewalMonth, decimal payTotalMoney, string operatorId, DateTime startDate, DateTime endDate) { lock (parkGrant_lock) { ParkGrant grant = ParkGrantServices.QueryByGrantId(grantId); if (grant == null) { throw new MyException("获取授权信息失败"); } if (endDate != null && endDate != DateTime.MinValue) { endDate = endDate.Date.AddDays(1).AddSeconds(-1); } string errorMsg = string.Empty; BaseCard card = BaseCardServices.GetBaseCard(grant.CardID, out errorMsg); if (card == null || !string.IsNullOrWhiteSpace(errorMsg)) { throw new MyException("获取卡失败"); } ParkCarType carType = ParkCarTypeServices.QueryParkCarTypeByRecordId(grant.CarTypeID); if (carType == null) { throw new MyException("获取卡类失败"); } List <ParkGrant> operateTargets = new List <ParkGrant>(); List <string> ioRecords = new List <string>(); using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { bool renewalsResult = false; dbOperator.BeginTransaction(); switch (carType.BaseTypeID) { case BaseCarType.StoredValueCar: { IBaseCard factory = BaseCardFactory.GetFactory(); if (payTotalMoney > 0) { ParkOrder order = ParkOrderServices.AddStoredValueCarOrder(grant.PKID, payTotalMoney, card, operatorId, dbOperator); if (order == null) { throw new MyException("创建充值订单失败"); } decimal cardtotalmoney = card.Balance + payTotalMoney; if (order.NewMoney != cardtotalmoney) { throw new MyException("充值金额计算错误"); } renewalsResult = factory.Recharge(card.CardID, payTotalMoney, dbOperator); if (!renewalsResult) { throw new MyException("卡充值失败【更改卡余额失败】"); } } renewalsResult = factory.SetEndDate(card.CardID, endDate, dbOperator); if (!renewalsResult) { throw new MyException("卡充值失败【更改有效期失败】"); } break; } case BaseCarType.VIPCar: { ParkOrder order = ParkOrderServices.AddVipCardOrder(grant.PKID, grantId, grant.BeginDate, grant.EndDate, startDate, endDate, renewalMonth, operatorId, dbOperator); if (order == null) { throw new MyException("充值失败【创建充值订单失败】"); } IParkGrant factory = ParkGrantFactory.GetFactory(); renewalsResult = factory.Renewals(grant.GID, startDate, endDate, dbOperator); if (!renewalsResult) { throw new MyException("修改车辆有效期失败"); } break; } case BaseCarType.MonthlyRent: { int pkLotQuantity = 1; if (!string.IsNullOrWhiteSpace(grant.PKLot)) { pkLotQuantity = grant.PKLot.TrimEnd(',').Split(',').Length; } decimal amount = ParkOrderServices.CalculateMonthlyRentExpiredWaitPayAmount(startDate, grantId); //if (payTotalMoney != ((carType.Amount * renewalMonth * pkLotQuantity) + amount)) // throw new MyException("凭证续期金额计算有误"); List <ParkGrant> shareCardGrants = new List <ParkGrant>(); if (!string.IsNullOrWhiteSpace(grant.PKLot)) { shareCardGrants = ParkGrantServices.QueryByParkingAndLotAndCarType(grant.PKID, grant.PKLot, BaseCarType.MonthlyRent, grant.GID); } IParkGrant factory = ParkGrantFactory.GetFactory(); renewalsResult = factory.Renewals(grant.GID, startDate, endDate, dbOperator); if (!renewalsResult) { throw new MyException("修改车辆有效期失败"); } //修改多车多位的有效期 foreach (var item in shareCardGrants) { if (string.IsNullOrWhiteSpace(item.PKLot)) { continue; } int len1 = item.PKLot.TrimEnd(',').Split(',').Length; int len2 = grant.PKLot.TrimEnd(',').Split(',').Length; if (len1 != len2) { continue; } item.BeginDate = startDate; item.EndDate = endDate; factory.Update(item, dbOperator); operateTargets.Add(item); } //过期转临停订单处理 if (grant.EndDate.Date < DateTime.Now.Date) { List <string> plateNos = new List <string>(); EmployeePlate plate = EmployeePlateServices.Query(grant.PlateID); if (plate == null) { throw new MyException("授权车牌信息不存在"); } plateNos.Add(plate.PlateNo); foreach (var item in shareCardGrants) { if (string.IsNullOrWhiteSpace(item.PKLot)) { continue; } int len1 = item.PKLot.TrimEnd(',').Split(',').Length; int len2 = grant.PKLot.TrimEnd(',').Split(',').Length; if (len1 != len2) { continue; } EmployeePlate otherplate = EmployeePlateServices.Query(item.PlateID); if (otherplate == null) { throw new MyException("多车多位存在无效的车牌"); } plateNos.Add(otherplate.PlateNo); } if (plateNos.Count > 0 && grant.EndDate != DateTime.MinValue) { IParkIORecord ioRecord = ParkIORecordFactory.GetFactory(); ioRecords = ioRecord.QueryMonthExpiredNotPayAmountIORecordIds(grant.EndDate.AddDays(1).Date, startDate, grant.PKID, plateNos); if (ioRecords.Count > 0) { bool result = ioRecord.UpdateIORecordEnterType(ioRecords, 0, dbOperator); if (!result) { throw new MyException("修改进出记录类型失败"); } result = ParkOrderServices.AddExpiredToProStopOrder(ioRecords, operatorId, dbOperator); if (!result) { throw new MyException("创建月卡转临停订单失败"); } } } } ParkOrder order = ParkOrderServices.AddMonthlyRentOrderCS(grant.PKID, carType.CarTypeID, grant.GID, grant.BeginDate, grant.EndDate, startDate, endDate, renewalMonth, pkLotQuantity, operatorId, payTotalMoney, dbOperator); if (order == null) { throw new MyException("续期失败【创建续期订单失败】"); } break; } //case BaseCarType.WorkCar: // { // IParkGrant factory = ParkGrantFactory.GetFactory(); // renewalsResult = factory.Renewals(grant.GID, startDate, endDate, dbOperator); // if (!renewalsResult) throw new MyException("修改卡结束时间错误"); // break; // } default: throw new MyException("选择的车辆不能续期和充值"); } dbOperator.CommitTransaction(); string remark = string.Format("grantId:{0};renewalMonth:{1};payTotalMoney:{2};operatorId:{3};startDate:{4};endDate:{5}", grantId, renewalMonth, payTotalMoney, operatorId, startDate.ToString("yyyy-MM-dd"), endDate.ToString("yyyy-MM-dd")); OperateLogServices.AddOperateLog(OperateType.Update, remark); if (ioRecords.Count > 0) { string updateIORecord = string.Format("修改IORecord表,RecordIDs:{0},EnterType:0", string.Join(",", ioRecords)); OperateLogServices.AddOperateLog(OperateType.Update, updateIORecord); } return(renewalsResult); } catch (Exception ex) { dbOperator.RollbackTransaction(); throw ex; } } } }
public static bool Payment(string ioRecordId, string parkingId, ResultAgs billResult, string operatorId) { if (billResult == null) { throw new MyException("获取缴费信息失败"); } if (billResult.FeeRule == null) { throw new MyException("获取收费规则失败"); } if (billResult.Rate == null) { throw new MyException("获取缴费金额失败"); } using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); List <string> carderateIds = new List <string>(); Dictionary <string, decimal> sellers = new Dictionary <string, decimal>(); if (billResult.Carderates != null && billResult.Carderates.Count > 0) { carderateIds = billResult.Carderates.Select(p => p.CarDerateID).ToList(); foreach (var item in billResult.Carderates) { if (sellers.ContainsKey(item.Derate.SellerID)) { sellers[item.Derate.SellerID] = sellers[item.Derate.SellerID] + item.FreeMoney; continue; } sellers.Add(item.Derate.SellerID, item.FreeMoney); } } RateInfo rate = billResult.Rate; ParkOrder order = ParkOrderServices.AddCentralFeeOrder(parkingId, ioRecordId, rate.Amount, rate.UnPayAmount, rate.DiscountAmount, carderateIds, billResult.FeeRule.FeeRuleID, rate.CashTime, rate.CashMoney, operatorId, dbOperator); if (order == null) { throw new MyException("创建缴费订单失败"); } if (carderateIds.Count > 0) { IParkSeller factory = ParkSellerFactory.GetFactory(); factory.UpdateParkCarDerateStatus(carderateIds, 2, dbOperator); foreach (var item in sellers) { bool result = factory.SellerDebit(item.Key, item.Value, dbOperator); if (!result) { throw new MyException("商家扣款失败"); } } } dbOperator.CommitTransaction(); OperateLogServices.AddOperateLog(OperateType.Other, string.Format("中央收费,ioRecordId:{0},parkingId:{1},operatorId:{2},收费金额:{3},优惠金额:{4}", ioRecordId, parkingId, operatorId, rate.UnPayAmount, rate.DiscountAmount)); } catch { dbOperator.RollbackTransaction(); throw; } } return(true); }
private static TempParkingFeeResult BWYTransforTempParkingFeeResult(TempParkingFeeResult model, BWYOrderQueryResult bwyResult, string plateNumber) { if (bwyResult.Result != 0 || bwyResult.Reference == null || bwyResult.Reference.Count == 0) { return(model); } OrderQueryResultReference reference = bwyResult.Reference.First(); TempParkingFeeResult result = new TempParkingFeeResult(); result.OrderSource = PayOrderSource.BWY; result.PlateNumber = plateNumber; result.CardNo = plateNumber; OrderResultReferenceParkingLot parking = reference.ParkingLot; if (parking == null) { TxtLogServices.WriteTxtLogEx("BWYInterfaceProcess", string.Format("TransforTempParkingFeeResult方法,OrderResultReferenceParkingLot is null")); return(model); } result.ParkingID = BWPKID; result.ParkName = parking.Name; result.ExternalPKID = parking.Index.ToString(); OrderResultBill bill = reference.Bill; if (bill == null) { TxtLogServices.WriteTxtLogEx("BWYInterfaceProcess", string.Format("TransforTempParkingFeeResult方法,OrderResultBill is null")); return(model); } if (bill.PayState == 3) { result.Result = APPResult.NoNeedPay; } //if (bill.PayState == 10) //{ // result.Result = APPResult.NotFindIn; //} if (bill.PayState == 1 || bill.PayState == 2 || bill.PayState == 10) { result.Result = APPResult.Normal; } result.EntranceDate = bill.StartDate; result.OutTime = 10; result.isAdd = true; result.PayDate = DateTime.Now; ParkOrder order = new ParkOrder(); order.ID = bill.Index; order.RecordID = bill.Index.ToString(); order.OrderNo = bill.Index.ToString(); order.TagID = bill.Index.ToString(); order.OrderType = OrderType.TempCardPayment; order.PayWay = OrderPayWay.WeiXin; OrderResultCostDetail detail = reference.CostDetail; if (detail == null) { TxtLogServices.WriteTxtLogEx("BWYInterfaceProcess", string.Format("TransforTempParkingFeeResult方法,OrderResultCostDetail is null")); return(model); } if (detail != null && detail.Discount != null) { order.DiscountAmount = detail.Discount.Sums / 100; } if (detail.Sums == 0) { result.Result = APPResult.NoNeedPay; } order.Amount = (detail.Sums - order.DiscountAmount) / 100; order.UnPayAmount = 0; order.PayAmount = (detail.Sums - order.DiscountAmount) / 100; order.CarderateID = ""; order.Status = 0; order.OrderSource = OrderSource.WeiXin; order.OrderTime = DateTime.Now; order.PayTime = DateTime.Now; //order.OldUserulDate = DateTime.MinValue; //order.NewUsefulDate = DateTime.MinValue; //order.OldMoney = null; //order.NewMoney = null; order.PKID = parking.Index.ToString(); order.UserID = ""; order.OnlineUserID = ""; order.OnlineOrderNo = ""; order.Remark = ""; //order.LastUpdateTime = ""; //order.HaveUpdate = ""; //order.DataStatus = ""; result.Pkorder = order; result.OrderSource = PayOrderSource.BWY; return(result); }
private static TempParkingFeeResult SFMTransforTempParkingFeeResult(TempParkingFeeResult model, OutCarInfoResult sfmResult) { if (!sfmResult.Success || sfmResult.Data == null) { return(model); } if (sfmResult.Code == "400") { model.Result = APPResult.AmountIsNot; return(model); } if (sfmResult.Code != "0000") { model.Result = APPResult.OtherException; return(model); } SMFOutCarInfo payInfo = sfmResult.Data; if (!payInfo.payAmount.HasValue || payInfo.payAmount <= 0) { model.Result = APPResult.NoNeedPay; return(model); } TempParkingFeeResult result = new TempParkingFeeResult(); result.OrderSource = PayOrderSource.SFM; result.PlateNumber = payInfo.carNo; result.CardNo = payInfo.carNo; result.ParkingID = SFMPKID; result.ExternalPKID = payInfo.Parking_Key; BaseParkinfo parking = ParkingServices.QueryParkingByParkingID(SystemDefaultConfig.SFMPKID); if (parking != null) { result.ParkName = parking.PKName; } result.EntranceDate = DateTime.Parse(payInfo.enterTime); result.OutTime = payInfo.freeTimeout.HasValue ? payInfo.freeTimeout.Value : 10; result.isAdd = true; result.PayDate = DateTime.Now; ParkOrder order = new ParkOrder(); order.RecordID = payInfo.ParkOrder_OrderNo; order.OrderNo = payInfo.ParkOrder_OrderNo; order.TagID = "1"; order.OrderType = OrderType.TempCardPayment; order.PayWay = OrderPayWay.WeiXin; order.DiscountAmount = payInfo.couponAmount.HasValue ? payInfo.couponAmount.Value : 0; order.Amount = payInfo.totalAmount.HasValue ? payInfo.totalAmount.Value : 0; order.UnPayAmount = 0; order.PayAmount = payInfo.payAmount.HasValue ? payInfo.payAmount.Value : 0; order.CarderateID = ""; order.Status = 0; order.OrderSource = OrderSource.WeiXin; order.OrderTime = DateTime.Now; order.PayTime = DateTime.Now; order.PKID = SFMPKID; order.UserID = ""; order.OnlineUserID = ""; order.OnlineOrderNo = ""; order.Remark = ""; result.Pkorder = order; result.OrderSource = PayOrderSource.SFM; return(result); }
public ParkOrder Add(ParkOrder model, DbOperator dbOperator) { model.DataStatus = DataStatus.Normal; model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; model.RecordID = GuidGenerator.GetGuidString(); StringBuilder strSql = new StringBuilder(); strSql.Append(@"insert into ParkOrder(RecordID,Amount,CarderateID,CashMoney,CashTime,DataStatus,DiscountAmount,HaveUpdate,LastUpdateTime,NewMoney,NewUsefulDate, NewUserBegin,OldMoney,OldUserBegin,OldUserulDate,OnlineOrderNo,OnlineUserID,OrderNo,OrderSource,OrderTime,OrderType,PayAmount, PayTime,PayWay,PKID,Remark,Status,TagID,UnPayAmount,UserID,FeeRuleID) "); strSql.Append(@" values(@RecordID,@Amount,@CarderateID,@CashMoney,@CashTime,@DataStatus,@DiscountAmount,@HaveUpdate,@LastUpdateTime,@NewMoney,@NewUsefulDate, @NewUserBegin,@OldMoney,@OldUserBegin,@OldUserulDate,@OnlineOrderNo,@OnlineUserID,@OrderNo,@OrderSource,@OrderTime,@OrderType,@PayAmount, @PayTime,@PayWay,@PKID,@Remark,@Status,@TagID,@UnPayAmount,@UserID,@FeeRuleID);"); strSql.Append(" select * from ParkOrder where RecordID=@RecordID "); dbOperator.ClearParameters(); dbOperator.AddParameter("RecordID", model.RecordID); dbOperator.AddParameter("Amount", model.Amount); dbOperator.AddParameter("CarderateID", model.CarderateID); dbOperator.AddParameter("CashMoney", model.CashMoney); dbOperator.AddParameter("DataStatus", (int)model.DataStatus); dbOperator.AddParameter("DiscountAmount", model.DiscountAmount); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); dbOperator.AddParameter("NewMoney", model.NewMoney); if (model.CashTime == null) { dbOperator.AddParameter("CashTime", DBNull.Value); } else { dbOperator.AddParameter("CashTime", model.CashTime); } if (model.NewUsefulDate == null) { dbOperator.AddParameter("NewUsefulDate", DBNull.Value); } else { dbOperator.AddParameter("NewUsefulDate", model.NewUsefulDate); } if (model.OldUserulDate == null) { dbOperator.AddParameter("OldUserulDate", DBNull.Value); } else { dbOperator.AddParameter("OldUserulDate", model.OldUserulDate); } if (model.OldUserBegin == null) { dbOperator.AddParameter("OldUserBegin", DBNull.Value); } else { dbOperator.AddParameter("OldUserBegin", model.OldUserBegin); } if (model.NewUserBegin == null) { dbOperator.AddParameter("NewUserBegin", DBNull.Value); } else { dbOperator.AddParameter("NewUserBegin", model.NewUserBegin); } dbOperator.AddParameter("OldMoney", model.OldMoney); dbOperator.AddParameter("OnlineOrderNo", model.OnlineOrderNo); dbOperator.AddParameter("OnlineUserID", model.OnlineUserID); dbOperator.AddParameter("OrderNo", model.OrderNo); dbOperator.AddParameter("OrderSource", model.OrderSource); dbOperator.AddParameter("OrderTime", model.OrderTime); dbOperator.AddParameter("OrderType", model.OrderType); dbOperator.AddParameter("PayAmount", model.PayAmount); dbOperator.AddParameter("PayTime", model.PayTime); dbOperator.AddParameter("PayWay", model.PayWay); dbOperator.AddParameter("PKID", model.PKID); dbOperator.AddParameter("FeeRuleID", model.FeeRuleID); dbOperator.AddParameter("Remark", model.Remark); dbOperator.AddParameter("Status", model.Status); dbOperator.AddParameter("TagID", model.TagID); dbOperator.AddParameter("UnPayAmount", model.UnPayAmount); dbOperator.AddParameter("UserID", model.UserID); using (DbDataReader reader = dbOperator.ExecuteReader(strSql.ToString())) { if (reader.Read()) { return(DataReaderToModel <ParkOrder> .ToModel(reader)); } return(null); } }
/// <summary> /// 退款操作 /// </summary> /// <param name="GID"></param> /// <param name="Amout"></param> /// <param name="EndTime"></param> /// <returns></returns> public bool RefundCardAmout(List <ParkGrant> grantlist, DateTime EndTime, ParkOrder model) { try { using (DbOperator dbOperator = ConnectionManager.CreateReadConnection()) { dbOperator.BeginTransaction(); foreach (var obj in grantlist) { string strsql = "update ParkGrant set EndDate=@EndDate,LastUpdateTime=@LastUpdateTime,HaveUpdate=@HaveUpdate where GID=@GID"; dbOperator.ClearParameters(); dbOperator.AddParameter("EndDate", EndTime); dbOperator.AddParameter("LastUpdateTime", DateTime.Now); dbOperator.AddParameter("HaveUpdate", SystemDefaultConfig.DataUpdateFlag); dbOperator.AddParameter("GID", obj.GID); if (dbOperator.ExecuteNonQuery(strsql) < 0) { dbOperator.RollbackTransaction(); return(false); } } StringBuilder strSql = new StringBuilder(); strSql.Append(@"insert into ParkOrder(RecordID,Amount,CarderateID,CashMoney,CashTime,DataStatus,DiscountAmount,HaveUpdate,LastUpdateTime,NewMoney,NewUsefulDate, NewUserBegin,OldMoney,OldUserBegin,OldUserulDate,OnlineOrderNo,OnlineUserID,OrderNo,OrderSource,OrderTime,OrderType,PayAmount, PayTime,PayWay,PKID,Remark,Status,TagID,UnPayAmount,UserID,FeeRuleID) "); strSql.Append(@" values(@RecordID,@Amount,@CarderateID,@CashMoney,@CashTime,@DataStatus,@DiscountAmount,@HaveUpdate,@LastUpdateTime,@NewMoney,@NewUsefulDate, @NewUserBegin,@OldMoney,@OldUserBegin,@OldUserulDate,@OnlineOrderNo,@OnlineUserID,@OrderNo,@OrderSource,@OrderTime,@OrderType,@PayAmount, @PayTime,@PayWay,@PKID,@Remark,@Status,@TagID,@UnPayAmount,@UserID,@FeeRuleID);"); dbOperator.ClearParameters(); dbOperator.AddParameter("RecordID", model.RecordID); dbOperator.AddParameter("Amount", model.Amount); dbOperator.AddParameter("CarderateID", model.CarderateID); dbOperator.AddParameter("CashMoney", model.CashMoney); dbOperator.AddParameter("DataStatus", (int)model.DataStatus); dbOperator.AddParameter("DiscountAmount", model.DiscountAmount); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); dbOperator.AddParameter("NewMoney", model.NewMoney); dbOperator.AddParameter("CashTime", DBNull.Value); dbOperator.AddParameter("NewUsefulDate", model.NewUsefulDate); dbOperator.AddParameter("OldUserulDate", model.OldUserulDate); dbOperator.AddParameter("OldUserBegin", model.OldUserBegin); dbOperator.AddParameter("NewUserBegin", model.NewUserBegin); dbOperator.AddParameter("OldMoney", model.OldMoney); dbOperator.AddParameter("OnlineOrderNo", model.OnlineOrderNo); dbOperator.AddParameter("OnlineUserID", model.OnlineUserID); dbOperator.AddParameter("OrderNo", model.OrderNo); dbOperator.AddParameter("OrderSource", model.OrderSource); dbOperator.AddParameter("OrderTime", model.OrderTime); dbOperator.AddParameter("OrderType", model.OrderType); dbOperator.AddParameter("PayAmount", model.PayAmount); dbOperator.AddParameter("PayTime", model.PayTime); dbOperator.AddParameter("PayWay", model.PayWay); dbOperator.AddParameter("PKID", model.PKID); dbOperator.AddParameter("FeeRuleID", model.FeeRuleID); dbOperator.AddParameter("Remark", model.Remark); dbOperator.AddParameter("Status", model.Status); dbOperator.AddParameter("TagID", model.TagID); dbOperator.AddParameter("UnPayAmount", model.UnPayAmount); dbOperator.AddParameter("UserID", model.UserID); if (dbOperator.ExecuteNonQuery(strSql.ToString()) < 0) { dbOperator.RollbackTransaction(); return(false); } dbOperator.CommitTransaction(); return(true); } } catch (Exception ex) { return(false); } }