Exemplo n.º 1
0
 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));
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
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);
        }