public static bool AddOrUpdate(WX_OtherConfig model) { IWXOtherConfig factory = WXOtherConfigFactory.GetFactory(); WX_OtherConfig dbConfig = factory.QueryByConfigType(model.CompanyID, model.ConfigType); if (dbConfig != null) { bool result = factory.Update(model); if (result) { OperateLogServices.AddOperateLog <WX_OtherConfig>(model, OperateType.Update); } return(result); } bool addResult = factory.Create(model); if (addResult) { OperateLogServices.AddOperateLog <WX_OtherConfig>(model, OperateType.Add); } return(addResult); }
public static bool Update(ParkDerateConfig model) { if (model == null) { throw new ArgumentNullException("model"); } IParkDerateConfig factory = ParkDerateConfigFactory.GetFactory(); List <ParkDerateConfig> configs = factory.QueryByParkingId(model.PKID); configs = configs.Where(p => p.RecordID != model.RecordID && ((p.ConsumeStartAmount <= model.ConsumeStartAmount && p.ConsumeEndAmount >= model.ConsumeStartAmount) || (p.ConsumeStartAmount <= model.ConsumeEndAmount && p.ConsumeEndAmount >= model.ConsumeEndAmount))).ToList(); if (configs.Count > 0) { throw new MyException("消费金额重复"); } bool result = factory.Update(model); if (result) { OperateLogServices.AddOperateLog <ParkDerateConfig>(model, OperateType.Update); } return(result); }
public static bool Delete(string companyId, int menuId) { if (menuId < 1) { throw new ArgumentNullException("menuId"); } IWXMenu factory = WXMenuFactory.GetFactory(); List <WX_Menu> models = factory.GetMenus(companyId); WX_Menu model = models.FirstOrDefault(p => p.ID == menuId); if (model != null && models.Count(p => p.MasterID == menuId) > 0) { throw new MyException("请先删除该菜单下的二级菜单"); } bool result = factory.Delete(menuId); if (result) { OperateLogServices.AddOperateLog(string.Format("删除菜单编号为:{0}菜单", menuId), OperateType.Update); } return(result); }
public static bool Add(ParkSeller model) { if (model == null) { throw new ArgumentNullException("model"); } IParkSeller factory = ParkSellerFactory.GetFactory(); model.SellerID = GuidGenerator.GetGuid().ToString(); ParkSeller dbModel = factory.QueryBySellerNo(model.SellerNo); if (dbModel != null) { throw new MyException("商家编号重复"); } bool result = factory.Add(model); if (result) { OperateLogServices.AddOperateLog <ParkSeller>(model, OperateType.Add); } return(result); }
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); }
/// <summary> /// 审核通过 /// </summary> /// <param name="recordId"></param> /// <returns></returns> public static bool Passed(string RecordID, string AuditRemark, string CarTypeID, string CarModelID, string AreaIDS, string GateID, string OperatorId) { if (string.IsNullOrWhiteSpace(CarTypeID)) { throw new MyException("获取车类失败"); } if (string.IsNullOrWhiteSpace(CarModelID)) { throw new MyException("获取车型失败"); } ParkMonthlyCarApply monthlyCarApply = ParkMonthlyCarApplyServices.QueryByRecordID(RecordID); if (monthlyCarApply == null) { throw new MyException("该申请不存在"); } if (monthlyCarApply.ApplyStatus != MonthlyCarApplyStatus.Applying) { throw new MyException("该申请是申请中状态"); } monthlyCarApply.CarModelID = CarModelID; monthlyCarApply.CarTypeID = CarTypeID; monthlyCarApply.AuditRemark = AuditRemark; BaseParkinfo parking = ParkingServices.QueryParkingByParkingID(monthlyCarApply.PKID); if (parking == null) { throw new MyException("车场信息不存在"); } BaseEmployee employee = GenerateBaseEmployeeModel(parking.VID, monthlyCarApply.ApplyName, monthlyCarApply.ApplyMoblie, monthlyCarApply.FamilyAddress); EmployeePlate plate = GenerateEmployeePlateModel(employee, parking.VID, monthlyCarApply.PlateNo); BaseCard card = GenerateCardModel(parking, employee, plate, OperatorId); ParkGrant parkGrant = GenerateParkGrantModel(parking, plate, card, monthlyCarApply.PKLot, monthlyCarApply.CarModelID, monthlyCarApply.CarTypeID, AreaIDS, GateID); using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); bool result = ParkGrantServices.Add(employee, plate, card, parkGrant, dbOperator); if (!result) { throw new MyException("保存车辆信息失败"); } IParkMonthlyCarApply factory = ParkMonthlyCarApplyFactory.GetFactory(); result = factory.Passed(monthlyCarApply, dbOperator); if (!result) { throw new MyException("修改申请状态失败"); } dbOperator.CommitTransaction(); monthlyCarApply = ParkMonthlyCarApplyServices.QueryByRecordID(monthlyCarApply.RecordID); OperateLogServices.AddOperateLog <ParkMonthlyCarApply>(monthlyCarApply, OperateType.Update); return(result); } catch { dbOperator.RollbackTransaction(); throw; } } }
/// <summary> /// 月租车暂停使用 /// </summary> /// <param name="start"></param> /// <param name="end"></param> /// <param name="grantId"></param> /// <returns></returns> public static bool CarSuspendUse(DateTime start, DateTime end, string grantId) { IParkGrant factory = ParkGrantFactory.GetFactory(); ParkGrant grant = factory.QueryByGrantId(grantId); if (grant == null) { throw new MyException("获取授权信息失败"); } if (grant.State == ParkGrantState.Stop) { throw new MyException("停止状态不能设置,如需设置请先启用"); } if (grant.State == ParkGrantState.Pause) { throw new MyException("暂停状态不能设置,请先恢复使用后重新设置"); } ParkCarType carType = ParkCarTypeServices.QueryParkCarTypeByRecordId(grant.CarTypeID); if (carType == null) { throw new MyException("获取车型类型失败"); } //if (carType.BaseTypeID != BaseCarType.MonthlyRent && carType.BaseTypeID != BaseCarType.WorkCar // && carType.BaseTypeID != BaseCarType.VIPCar) throw new MyException("该车辆不能使用此功能"); IParkCardSuspendPlan planFactory = ParkCardSuspendPlanFactory.GetFactory(); ParkCardSuspendPlan plan = planFactory.QueryByGrantId(grantId); using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); if (plan != null) { if (start.Date < DateTime.Now.Date) { throw new MyException("开始时间不能小于系统当前时间"); } bool result = planFactory.Update(start, end, grantId, dbOperator); if (!result) { throw new MyException("保存暂停计划失败"); } if (start.Date == DateTime.Now.Date) { result = factory.Update(grantId, ParkGrantState.Pause, dbOperator); if (!result) { throw new MyException("修改使用状态失败"); } } } else { if (start.Date < DateTime.Now.Date) { throw new MyException("开始时间不能小于系统当前时间"); } ParkCardSuspendPlan model = new ParkCardSuspendPlan(); model.RecordId = GuidGenerator.GetGuidString(); model.StartDate = start; model.EndDate = end; model.GrantID = grantId; bool result = planFactory.Add(model, dbOperator); if (!result) { throw new MyException("保存暂停计划失败"); } if (start.Date == DateTime.Now.Date) { result = factory.Update(grantId, ParkGrantState.Pause, dbOperator); if (!result) { throw new MyException("修改使用状态失败"); } } } dbOperator.CommitTransaction(); string endDate = end == DateTime.MinValue ? end.ToString("yyyy-MM-dd") : string.Empty; OperateLogServices.AddOperateLog(OperateType.Update, string.Format("grantId:{0},startDate:{1},endDate:{2}", grantId, start.ToString("yyyy-MM-dd"), endDate)); return(true); } catch (Exception ex) { dbOperator.RollbackTransaction(); throw ex; } } }
/// <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; } } } }