public bool Add(ParkCarDerate model, DbOperator dbOperator) { model.DataStatus = DataStatus.Normal; model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; string strsql = "insert into ParkCarDerate (CarDerateID,CarDerateNo,DerateID,FreeTime,PlateNumber,IORecordID,CardNo,ExpiryTime,CreateTime,Status,FreeMoney,AreaID,PKID,DerateQRCodeID,LastUpdateTime,HaveUpdate,DataStatus)"; strsql += "values(@CarDerateID,@CarDerateNo,@DerateID,@FreeTime,@PlateNumber,@IORecordID,@CardNo,@ExpiryTime,@CreateTime,@Status,@FreeMoney,@AreaID,@PKID,@DerateQRCodeID,@LastUpdateTime,@HaveUpdate,@DataStatus)"; dbOperator.ClearParameters(); dbOperator.AddParameter("CarDerateID", model.CarDerateID); dbOperator.AddParameter("CarDerateNo", model.CarDerateNo); dbOperator.AddParameter("DerateID", model.DerateID); dbOperator.AddParameter("FreeTime", model.FreeTime); dbOperator.AddParameter("PlateNumber", model.PlateNumber); dbOperator.AddParameter("IORecordID", model.IORecordID); dbOperator.AddParameter("CardNo", model.CardNo); dbOperator.AddParameter("ExpiryTime", model.ExpiryTime); dbOperator.AddParameter("CreateTime", model.CreateTime); dbOperator.AddParameter("Status", model.Status); dbOperator.AddParameter("FreeMoney", model.FreeMoney); dbOperator.AddParameter("AreaID", model.AreaID); dbOperator.AddParameter("PKID", model.PKID); dbOperator.AddParameter("DerateQRCodeID", model.DerateQRCodeID); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); dbOperator.AddParameter("DataStatus", model.DataStatus); return(dbOperator.ExecuteNonQuery(strsql) > 0); }
public bool Update(ParkCarDerate model) { model.DataStatus = DataStatus.Normal; model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { StringBuilder strSql = new StringBuilder(); strSql.Append("update ParkCarDerate set CarDerateNo=@CarDerateNo,DerateID=@DerateID,FreeTime=@FreeTime,PlateNumber=@PlateNumber,IORecordID=@IORecordID,CardNo=@CardNo,ExpiryTime=@ExpiryTime,Status=@Status"); strSql.Append(",FreeMoney=@FreeMoney,AreaID=@AreaID,PKID=@PKID,LastUpdateTime=@LastUpdateTime,HaveUpdate=@HaveUpdate where CarDerateID=@CarDerateID"); dbOperator.ClearParameters(); dbOperator.AddParameter("CarDerateID", model.CarDerateID); dbOperator.AddParameter("CarDerateNo", model.CarDerateNo); dbOperator.AddParameter("DerateID", model.DerateID); dbOperator.AddParameter("FreeTime", model.FreeTime); dbOperator.AddParameter("PlateNumber", model.PlateNumber); dbOperator.AddParameter("IORecordID", model.IORecordID); dbOperator.AddParameter("CardNo", model.CardNo); dbOperator.AddParameter("ExpiryTime", model.ExpiryTime); dbOperator.AddParameter("Status", model.Status); dbOperator.AddParameter("FreeMoney", model.FreeMoney); dbOperator.AddParameter("AreaID", model.AreaID); dbOperator.AddParameter("PKID", model.PKID); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); return(dbOperator.ExecuteNonQuery(strSql.ToString()) > 0); } }
public static ParkCarDerate QueryBySellerIdAndIORecordId(string sellerId, string ioRecordId) { IParkCarDerate factory = ParkCarDerateFactory.GetFactory(); ParkCarDerate carDerate = factory.QueryBySellerIdAndIORecordId(sellerId, ioRecordId); return(carDerate); }
public bool AddCarderate(ParkCarDerate model) { using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { model.DataStatus = DataStatus.Normal; model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; StringBuilder strSql = new StringBuilder(); strSql.Append("insert into ParkCarDerate(AreaID,CarDerateID,CarDerateNo,CardNo,CreateTime,DerateID,ExpiryTime,FreeMoney,HaveUpdate,IORecordID,LastUpdateTime,PKID,PlateNumber,Status,FreeTime,DataStatus)"); strSql.Append(" values(@AreaID,@CarDerateID,@CarDerateNo,@CardNo,@CreateTime,@DerateID,@ExpiryTime,@FreeMoney,@HaveUpdate,@IORecordID,@LastUpdateTime,@PKID,@PlateNumber,@Status,@FreeTime,@DataStatus)"); dbOperator.ClearParameters(); dbOperator.AddParameter("AreaID", model.AreaID); dbOperator.AddParameter("CarDerateID", model.CarDerateID); dbOperator.AddParameter("CarDerateNo", model.CarDerateNo); dbOperator.AddParameter("CardNo", model.CardNo); dbOperator.AddParameter("CreateTime", model.CreateTime); dbOperator.AddParameter("DerateID", model.DerateID); dbOperator.AddParameter("ExpiryTime", model.ExpiryTime); dbOperator.AddParameter("FreeMoney", model.FreeMoney); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); dbOperator.AddParameter("IORecordID", model.IORecordID); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); dbOperator.AddParameter("PKID", model.PKID); dbOperator.AddParameter("PlateNumber", model.PlateNumber); dbOperator.AddParameter("Status", (int)model.Status); dbOperator.AddParameter("FreeTime", model.FreeTime); dbOperator.AddParameter("DataStatus", (int)model.DataStatus); return(dbOperator.ExecuteNonQuery(strSql.ToString()) > 0); } }
public bool Add(ParkCarDerate model) { model.DataStatus = DataStatus.Normal; model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { return(Add(model, dbOperator)); } }
public static bool ModifyCarderate(ParkCarDerate mode, out string errorMsg) { if (mode == null) { throw new ArgumentNullException("mode"); } IParkSeller factory = ParkSellerFactory.GetFactory(); return(factory.ModifyCarderate(mode, out errorMsg)); }
public static bool AddCarderate(ParkCarDerate mode) { if (mode == null) { throw new ArgumentNullException("mode"); } IParkSeller factory = ParkSellerFactory.GetFactory(); return(factory.AddCarderate(mode)); }
public static bool Add(ParkCarDerate model) { if (model == null) { throw new ArgumentNullException("model"); } if (string.IsNullOrWhiteSpace(model.CarDerateID)) { model.CarDerateID = GuidGenerator.GetGuidString(); } IParkCarDerate factory = ParkCarDerateFactory.GetFactory(); return(factory.Add(model)); }
public static bool Update(ParkCarDerate model) { if (model == null) { throw new ArgumentNullException("model"); } if (string.IsNullOrWhiteSpace(model.CarDerateID)) { throw new ArgumentNullException("CarDerateID"); } IParkCarDerate factory = ParkCarDerateFactory.GetFactory(); return(factory.Update(model)); }
public bool ModifyCarderate(ParkCarDerate model, out string errorMsg) { errorMsg = ""; try { using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; StringBuilder strSql = new StringBuilder(); strSql.Append(@"update ParkCarDerate set CarDerateNo=@CarDerateNo,DerateID=@DerateID,FreeTime=@FreeTime,FreeMoney=@FreeMoney,CardNo=@CardNo, IORecordID=@IORecordID, Status=@Status, CreateTime=@CreateTime, ExpiryTime=@ExpiryTime, PKID=@PKID,AreaID=@AreaID,HaveUpdate=@HaveUpdate,DataStatus=@DataStatus,LastUpdateTime=@LastUpdateTime"); strSql.Append(" where CarDerateID=@CarDerateID"); dbOperator.ClearParameters(); dbOperator.AddParameter("CarDerateNo", model.CarDerateNo); dbOperator.AddParameter("CarDerateID", model.CarDerateID); dbOperator.AddParameter("DerateID", model.DerateID); dbOperator.AddParameter("FreeTime", model.FreeTime); dbOperator.AddParameter("FreeMoney", model.FreeMoney); dbOperator.AddParameter("CardNo", model.CardNo); dbOperator.AddParameter("IORecordID", model.IORecordID); dbOperator.AddParameter("Status", (int)model.Status); dbOperator.AddParameter("CreateTime", model.CreateTime); dbOperator.AddParameter("ExpiryTime", model.ExpiryTime); dbOperator.AddParameter("PKID", model.PKID); dbOperator.AddParameter("AreaID", model.AreaID); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); dbOperator.AddParameter("DataStatus", (int)model.DataStatus); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); return(dbOperator.ExecuteNonQuery(strSql.ToString()) > 0); } } catch (Exception e) { errorMsg = e.Message; } return(false); }
public bool Add(ParkCarDerate model, DbOperator dbOperator) { throw new NotImplementedException(); }
bool IParkCarDerate.Add(ParkCarDerate model) { throw new NotImplementedException(); }
public bool Update(ParkCarDerate model) { throw new NotImplementedException(); }
public ParkCarDerate Add(ParkCarDerate model) { throw new NotImplementedException(); }
public static bool QRCodeDiscount(string sellerId, string derateId, string carDerateId, string parkingId, string ioRecordId, string plateNumber) { if (string.IsNullOrWhiteSpace(sellerId)) { throw new ArgumentNullException("sellerId"); } if (string.IsNullOrWhiteSpace(derateId)) { throw new ArgumentNullException("derateId"); } if (string.IsNullOrWhiteSpace(carDerateId)) { throw new ArgumentNullException("carDerateId"); } if (string.IsNullOrWhiteSpace(parkingId)) { throw new ArgumentNullException("parkingId"); } if (string.IsNullOrWhiteSpace(plateNumber)) { throw new ArgumentNullException("plateNumber"); } List <ParkCarDerate> carDerates = ParkCarDerateServices.QueryByDerateId(carDerateId); if (carDerates == null || carDerates.Count == 0) { throw new MyException("该优免券不存在"); } if (!string.IsNullOrWhiteSpace(carDerates.First().PlateNumber)) { throw new MyException("该优免券已使用过了[001]"); } if (carDerates.First().Status == CarDerateStatus.Settlementd) { throw new MyException("该优免券已使用过了[002]"); } if (carDerates.First().Status != CarDerateStatus.Used) { throw new MyException("该优免券不是有效状态"); } IParkCarDerate factory = ParkCarDerateFactory.GetFactory(); ParkCarDerate carDerate = factory.QueryBySellerIdAndIORecordId(sellerId, ioRecordId); if (carDerate != null) { throw new MyException("该车辆已优免了"); } ParkDerate derate = ParkDerateServices.Query(derateId); if (derate == null) { throw new MyException("找不到优免规则"); } ParkSeller seller = ParkSellerServices.QueryBySellerId(derate.SellerID); if (seller == null) { throw new MyException("找不到商家信息"); } return(factory.QRCodeDiscount(carDerateId, parkingId, ioRecordId, plateNumber)); }
/// <summary> /// 下发有免费券 /// </summary> /// <param name="carDerateIds"></param> /// <param name="qrCodeZipFilePath">压缩二维码的文件路径</param> /// <param name="qrCodeId"></param> /// <returns></returns> public static bool GrantCarDerate(List <string> carDerateIds, string qrCodeZipFilePath, string qrCodeId) { if (carDerateIds == null || carDerateIds.Count == 0) { throw new ArgumentNullException("carDerateIds"); } if (string.IsNullOrWhiteSpace(qrCodeZipFilePath)) { throw new ArgumentNullException("qrCodeFilePath"); } string absolutePath = System.Web.HttpContext.Current.Server.MapPath("~/"); string s = string.Format("{0}{1}", absolutePath, qrCodeZipFilePath); if (!File.Exists(s)) { throw new MyException("压缩二维码的文件不存在"); } IParkDerateQRcode factory = ParkDerateQRcodeFactory.GetFactory(); ParkDerateQRcode qrCode = factory.QueryByRecordId(qrCodeId); if (qrCode == null) { throw new MyException("优免券规则不存在"); } if (qrCode.EndTime < DateTime.Now) { throw new MyException("该优免券规则已过期"); } ParkDerate derate = ParkDerateServices.Query(qrCode.DerateID); if (derate == null) { throw new MyException("获取优免规则失败"); } decimal totalAmount = 0; if (derate.DerateType == DerateType.SpecialTimePeriodPayment) { string errorMsg = string.Empty; ParkSeller seller = ParkSellerServices.GetSeller(derate.SellerID, out errorMsg); if (derate == null) { throw new MyException("获取优免规则失败"); } totalAmount = qrCode.DerateValue * carDerateIds.Count; if ((seller.Creditline + seller.Balance) < totalAmount) { throw new MyException("商家余额不足"); } } List <ParkCarDerate> carDerates = new List <ParkCarDerate>(); foreach (var item in carDerateIds) { ParkCarDerate model = new ParkCarDerate(); model.CarDerateID = item; model.CarDerateNo = IdGenerator.Instance.GetId().ToString(); model.DerateID = qrCode.DerateID; model.PlateNumber = ""; model.AreaID = ""; model.PKID = qrCode.PKID; if (derate.DerateType != DerateType.ReliefTime && derate.DerateType != DerateType.VotePayment && derate.DerateType != DerateType.DayFree) { model.FreeMoney = qrCode.DerateValue; } else if (derate.DerateType == DerateType.DayFree) { model.FreeMoney = qrCode.DerateValue * derate.DerateMoney; } else { model.FreeTime = (int)qrCode.DerateValue; } model.Status = CarDerateStatus.Used; model.CreateTime = DateTime.Now; model.ExpiryTime = qrCode.EndTime; model.DerateQRCodeID = qrCode.RecordID; carDerates.Add(model); } IParkCarDerate factoryCarDerate = ParkCarDerateFactory.GetFactory(); using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); //添加券 foreach (var item in carDerates) { bool result = factoryCarDerate.Add(item, dbOperator); if (!result) { throw new MyException("发券失败"); } } //修改发放总张数据,修改最后压缩包路径 int totalNumbers = qrCode.CanUseTimes + carDerateIds.Count; bool updateResult = factory.Update(qrCodeId, qrCodeZipFilePath, totalNumbers, dbOperator); if (!updateResult) { throw new MyException("修改券总数失败"); } //商家扣款 if (totalAmount > 0) { IParkSeller factorySeller = ParkSellerFactory.GetFactory(); updateResult = factorySeller.SellerDebit(derate.SellerID, totalAmount, dbOperator); if (!updateResult) { throw new MyException("商家扣款失败"); } } dbOperator.CommitTransaction(); return(true); } catch { dbOperator.RollbackTransaction(); throw; } } }
/// <summary> /// 消费打折 /// </summary> /// <param name="IORecordID"></param> /// <param name="DerateID"></param> /// <param name="VID"></param> /// <param name="SellerID"></param> /// <param name="DerateMoney"></param> /// <returns></returns> public static string DiscountPlateNumber(string IORecordID, string DerateID, string VID, string SellerID, decimal DerateMoney) { ConsumerDiscountResult result = new ConsumerDiscountResult(); try { using (DbOperator dbOperator = ConnectionManager.CreateReadConnection()) { ParkIORecord IOmodel = null; string strsql = "select * from ParkIORecord where RecordID=@RecordID and DataStatus<2"; dbOperator.ClearParameters(); dbOperator.AddParameter("RecordID", IORecordID); using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString())) { if (reader.Read()) { IOmodel = DataReaderToModel <ParkIORecord> .ToModel(reader); } } if (IOmodel != null) { if (IOmodel.IsExit) { result.Result = 3; return(JsonHelper.GetJsonString(result));//车辆已出场 } strsql = "select a.*,b.SellerID from ParkCarDerate a left join ParkDerate b on a.DerateID=b.DerateID where IORecordID=@IORecordID and b.SellerID=@SellerID and a.DataStatus<2 and Status!=3"; dbOperator.ClearParameters(); dbOperator.AddParameter("IORecordID", IORecordID); dbOperator.AddParameter("SellerID", SellerID); using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString())) { if (reader.Read()) { result.Result = 4; return(JsonHelper.GetJsonString(result));//已打折 } } ParkDerate derate = null; strsql = "select * from ParkDerate where DataStatus<2 and DerateID=@DerateID"; dbOperator.ClearParameters(); dbOperator.AddParameter("DerateID", DerateID); using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString())) { if (reader.Read()) { derate = DataReaderToModel <ParkDerate> .ToModel(reader); } else { result.Result = 5; return(JsonHelper.GetJsonString(result));//找不到优免规则 } } ParkSeller seller = null; strsql = "select * from ParkSeller where DataStatus<2 and SellerID=@SellerID"; dbOperator.ClearParameters(); dbOperator.AddParameter("SellerID", SellerID); using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString())) { if (reader.Read()) { seller = DataReaderToModel <ParkSeller> .ToModel(reader); } else { result.Result = 6; return(JsonHelper.GetJsonString(result));//找不到商家信息 } } decimal SumFreeMoney = 0; strsql = "select SUM(FreeMoney) as SumFreeMoney from ParkCarDerate a left join ParkDerate b on a.DerateID=b.DerateID where a.DataStatus<2 and a.Status=1 and b.SellerID=@SellerID "; dbOperator.ClearParameters(); dbOperator.AddParameter("SellerID", SellerID); using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString())) { if (reader.Read()) { SumFreeMoney = reader["SumFreeMoney"].ToDecimal(); } } if (derate.DerateType == DerateType.TimesPayment || derate.DerateType == DerateType.TimePeriodAndTimesPayment) { DerateMoney = (decimal)derate.DerateMoney; } if (derate.DerateType != DerateType.ReliefTime && derate.DerateType != DerateType.VotePayment && derate.DerateType != DerateType.DayFree) { if (seller.Balance + seller.Creditline < DerateMoney + SumFreeMoney) { result.Result = 7; return(JsonHelper.GetJsonString(result));//商家余额不足 } } else if (derate.DerateType == DerateType.DayFree) { if (seller.Balance + seller.Creditline < (DerateMoney * derate.DerateMoney) + SumFreeMoney) { result.Result = 7; return(JsonHelper.GetJsonString(result));//商家余额不足 } } ParkCarDerate Carderate = new ParkCarDerate(); Carderate.AreaID = IOmodel.AreaID; Carderate.CarDerateID = System.Guid.NewGuid().ToString(); Carderate.CarDerateNo = IdGenerator.Instance.GetId().ToString(); Carderate.CardNo = IOmodel.CardNo; Carderate.CreateTime = DateTime.Now; Carderate.DerateID = DerateID; Carderate.ExpiryTime = DateTime.Now.AddDays(7); Carderate.Status = CarDerateStatus.Used; if (derate.DerateType != DerateType.ReliefTime && derate.DerateType != DerateType.VotePayment && derate.DerateType != DerateType.DayFree) { Carderate.FreeMoney = DerateMoney; } else if (derate.DerateType == DerateType.DayFree) { Carderate.FreeMoney = DerateMoney * derate.DerateMoney; Carderate.ExpiryTime = IOmodel.EntranceTime.AddDays((int)DerateMoney); } else { Carderate.FreeTime = (int)DerateMoney; } Carderate.IORecordID = IOmodel.RecordID; Carderate.HaveUpdate = 1; Carderate.PKID = IOmodel.ParkingID; Carderate.PlateNumber = IOmodel.PlateNumber; Carderate.DataStatus = 0; Carderate.LastUpdateTime = DateTime.Now; dbOperator.BeginTransaction(); strsql = "insert into ParkCarDerate (CarDerateID,CarDerateNo,DerateID,FreeTime,PlateNumber,IORecordID,CardNo,ExpiryTime,CreateTime,Status,FreeMoney,AreaID,PKID,LastUpdateTime,HaveUpdate,DataStatus)"; strsql += "values(@CarDerateID,@CarDerateNo,@DerateID,@FreeTime,@PlateNumber,@IORecordID,@CardNo,@ExpiryTime,@CreateTime,@Status,@FreeMoney,@AreaID,@PKID,@LastUpdateTime,@HaveUpdate,@DataStatus)"; dbOperator.ClearParameters(); dbOperator.AddParameter("CarDerateID", Carderate.CarDerateID); dbOperator.AddParameter("CarDerateNo", Carderate.CarDerateNo); dbOperator.AddParameter("DerateID", Carderate.DerateID); dbOperator.AddParameter("FreeTime", Carderate.FreeTime); dbOperator.AddParameter("PlateNumber", Carderate.PlateNumber); dbOperator.AddParameter("IORecordID", Carderate.IORecordID); dbOperator.AddParameter("CardNo", Carderate.CardNo); dbOperator.AddParameter("ExpiryTime", Carderate.ExpiryTime); dbOperator.AddParameter("CreateTime", Carderate.CreateTime); dbOperator.AddParameter("Status", Carderate.Status); dbOperator.AddParameter("FreeMoney", Carderate.FreeMoney); dbOperator.AddParameter("AreaID", Carderate.AreaID); dbOperator.AddParameter("PKID", Carderate.PKID); dbOperator.AddParameter("LastUpdateTime", Carderate.LastUpdateTime); dbOperator.AddParameter("HaveUpdate", Carderate.HaveUpdate); dbOperator.AddParameter("DataStatus", Carderate.DataStatus); if (dbOperator.ExecuteNonQuery(strsql) <= 0) { dbOperator.RollbackTransaction(); result.Result = 8; return(JsonHelper.GetJsonString(result));//打折失败 } if (derate.DerateType == DerateType.DayFree) { strsql = "update ParkSeller set Balance=Balance-" + Carderate.FreeMoney + "where SellerID=@SellerID"; dbOperator.ClearParameters(); dbOperator.AddParameter("SellerID", seller.SellerID); if (dbOperator.ExecuteNonQuery(strsql) <= 0) { dbOperator.RollbackTransaction(); result.Result = 8; return(JsonHelper.GetJsonString(result));//打折失败 } } dbOperator.CommitTransaction(); result.Result = 1; result.ResModel = Carderate; return(JsonHelper.GetJsonString(result)); } else { result.Result = 2; return(JsonHelper.GetJsonString(result));//找不到进出记录信息 } } } catch (Exception ex) { logger.Fatal("消费打折回调异常!DiscountPlateNumberCallback()" + ex.Message + "\r\n"); result.Result = -1; return(JsonHelper.GetJsonString(result));//异常 } }