Beispiel #1
0
        /// <summary>
        /// 计算商品获得的积分
        /// </summary>
        /// <param name="product"></param>
        /// <param name="rebateRate"></param>
        /// <param name="count"></param>
        /// <param name="isGetInt"></param>
        /// <returns></returns>
        public decimal CalcProductRebateScore(WXMallProductInfo product, decimal rebateRate, int count = 1, bool isGetInt = false)
        {
            BLLMall bllMall = new BLLMall();

            decimal addScore = 0;

            //如果是特卖中 则不返积分
            if (product.IsPromotionProduct == 1)
            {
                var productSkuList = bllMall.GetProductSkuList(int.Parse(product.PID));//源SKU
                foreach (var item in productSkuList)
                {
                    if (bllMall.IsPromotionTime(item))
                    {
                        return(0);
                    }
                }
            }

            decimal price = product.Price - product.BasePrice;

            if (price < 0)
            {
                price = 0;
            }

            addScore = rebateRate * price * count;

            if (isGetInt)
            {
                addScore = RebateScoreGetInt(addScore);
            }

            return(addScore);
        }
Beispiel #2
0
        /// <summary>
        /// 计算每一个sku获得的积分
        /// </summary>
        /// <param name="skuId"></param>
        /// <param name="rebateRate"></param>
        /// <param name="payRate">
        /// 实付比例,
        /// 在需要均摊计算的时候用到
        /// </param>
        /// <param name="count">数量</param>
        /// <param name="isGetInt">
        /// 是否取整
        /// 如果多件商品计算获得积分,在最终总分里面做取整处理
        /// </param>
        /// <returns></returns>
        public decimal CalcProductSkuRebateScore(int skuId, decimal rebateRate, decimal?payRate = null, int count = 1, bool isGetInt = false)
        {
            BLLMall         bllMall  = new BLLMall();
            BLLDistribution bllDist  = new BLLDistribution();
            decimal         addScore = 0;

            var skuInfo = bllMall.GetProductSku(skuId);

            //判断如果是特卖中的商品则不给返积分
            if (bllMall.IsPromotionTime(skuInfo))
            {
                return(0);
            }

            var price = bllMall.GetSkuPrice(skuInfo);

            if (skuInfo.BasePrice <= 0)
            {
                var productInfo = bllMall.GetProduct(skuInfo.ProductId);
                skuInfo.BasePrice = productInfo.BasePrice;
            }

            price = price - skuInfo.BasePrice;

            if (payRate != null)
            {
                price = price * payRate.Value;
            }

            if (price < 0)
            {
                price = 0;
            }

            //全额获得的积分=售价*参与返积分的比例*积分返利比例  -- 已废除
            //按价格比例获得的积分=均摊价*参与返积分的比例*积分返利比例 -- 已废除
            //addScore = (int)(rebateRate * (productInfo.RebateScoreRate * 0.01M) * skuPrice * count);

            //获得的积分=实际售价(如果非全额则需要计算均摊差价:售价-基础价)* 返积分比例 * 数量
            addScore = rebateRate * price * count;

            if (isGetInt)
            {
                addScore = RebateScoreGetInt(addScore);
            }

            return(addScore);
        }