public int AddTireCoupon(TireCouponModel request) { if (string.IsNullOrWhiteSpace(request.ShopName) || request.QualifiedPrice < request.Reduce || request.Reduce < 0 || request.EndTime < DateTime.Now || request.EndTime < request.StartTime || request.CouponType > 3 || request.CouponType < 0 || request.CouponUseRule < 0 || request.CouponUseRule > 1) { return(0); } return(ThirdShopManager.AddTireCoupon(request, ThreadIdentity.Operator.Name)); }
public static int AddTireCoupon(TireCouponModel request, string Operator) { var result = DALThirdShop.AddTireCoupon(request); if (result > 0) { var CouponName = request.Description; DALThirdShop.AddTireCouponLog(request.ShopName, request.CouponType, CouponName, request.EndTime, Operator, "添加"); RemoveCache(request.ShopName); } return(result); }
public static int AddTireCoupon(TireCouponModel request) { var SqlStr = @"INSERT INTO Activity..ShopCouponManage ( ShopName , QualifiedPrice , Reduce , EndTime , Description , StartTime , CouponUseRule , CouponType ) OUTPUT Inserted.PKID VALUES ( @shopname , @qualifiefprice , @reduce , @endtime , @description , @starttime , @couponuserule , @coupontype );" ; using (var cmd = new SqlCommand(SqlStr)) { cmd.Parameters.AddWithValue("@shopname", request.ShopName); cmd.Parameters.AddWithValue("@qualifiefprice", request.QualifiedPrice); cmd.Parameters.AddWithValue("@reduce", request.Reduce); cmd.Parameters.AddWithValue("@description", request.Description); cmd.Parameters.AddWithValue("@endtime", request.EndTime); cmd.Parameters.AddWithValue("@starttime", request.StartTime); cmd.Parameters.AddWithValue("@couponuserule", request.CouponUseRule); cmd.Parameters.AddWithValue("@coupontype", request.CouponType); cmd.CommandType = CommandType.Text; var dat = DbHelper.ExecuteScalar(cmd); if (Int32.TryParse(dat?.ToString(), out int value)) { return(value); } else { return(0); } } }
public static Tuple <decimal, List <TireCouponModel>, int> FetchLowestPrice(string ShopName, decimal Price, int MaxCount = 5) { var data = new TireCouponResultModel(); using (var client = CacheHelper.CreateCacheClient("TireCouponManage")) { var cache = client.GetOrSet($"TireCoupon/{ShopName}", () => TireCouponManage(ShopName), TimeSpan.FromHours(3)); if (cache.Success && cache.Value.Any()) { data = cache.Value.FirstOrDefault(); } else { data = TireCouponManage(ShopName).FirstOrDefault(); } } if (data == null) { return(null); } var EmptyCoupon = new TireCouponModel { PKID = 0, CouponType = 0, CouponUseRule = 0, QualifiedPrice = 1M, Reduce = 0M, }; var CouponList = new List <TireCouponModel>(); var Result = new Tuple <decimal, List <TireCouponModel>, int>(Price * MaxCount, CouponList, MaxCount); for (var Count = 1; Count <= MaxCount; Count++) { var maxPrice = Count * Price; var LowestPrice = Price * Count; var dataA = data.CouponA.Where(g => g.StartTime <DateTime.Now && g.EndTime> DateTime.Now && g.QualifiedPrice <= maxPrice).Distinct().ToList(); dataA.Add(EmptyCoupon); foreach (var itemA in dataA) { var PriceA = itemA.CouponUseRule == 0 ? (maxPrice - itemA.Reduce) : (maxPrice - itemA.Reduce * Math.Floor(maxPrice / itemA.QualifiedPrice)); var dataB = data.CouponB.Where(g => g.StartTime <DateTime.Now && g.EndTime> DateTime.Now && g.QualifiedPrice <= PriceA).Distinct().ToList(); dataB.Add(EmptyCoupon); foreach (var itemB in dataB) { var PriceB = itemB.CouponUseRule == 0 ? (PriceA - itemB.Reduce) : (PriceA - itemB.Reduce * Math.Floor(PriceA / itemB.QualifiedPrice)); var dataC = data.CouponC.Where(g => g.StartTime <DateTime.Now && g.EndTime> DateTime.Now && g.QualifiedPrice <= PriceB).Distinct().ToList(); dataC.Add(EmptyCoupon); foreach (var itemC in dataC) { var finalPrice = itemC == null ? PriceB : (itemC.CouponUseRule == 0 ? (PriceB - itemC.Reduce) : (PriceB - itemC.Reduce * Math.Floor(PriceB / itemC.QualifiedPrice))); if (finalPrice <= LowestPrice) { LowestPrice = finalPrice; CouponList = new List <TireCouponModel>() { itemA, itemB, itemC }; } } } } var stepPrice = Math.Round(LowestPrice / Count, 2); if (stepPrice < Result.Item1) { Result = new Tuple <decimal, List <TireCouponModel>, int>(stepPrice, CouponList.Where(g => g.CouponType != 0).ToList(), Count); } } return(Result); }