Beispiel #1
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);
        }
Beispiel #2
0
        public void ProcessRequest(HttpContext context)
        {
            Add.ProductModel productRequestModel = new Add.ProductModel();//订单模型
            try
            {
                productRequestModel = bllMall.ConvertRequestToModel <Add.ProductModel>(productRequestModel);
            }
            catch (Exception ex)
            {
                apiResp.msg  = "提交格式错误";
                apiResp.code = (int)APIErrCode.OperateFail;
                bllMall.ContextResponse(context, apiResp);
                return;
            }
            //数据检查
            if (string.IsNullOrEmpty(productRequestModel.product_title))
            {
                apiResp.msg  = "商品名称必填";
                apiResp.code = (int)APIErrCode.OperateFail;
                bllMall.ContextResponse(context, apiResp);
                return;
            }
            //if (productRequestModel.price == 0)
            //{
            //    apiResp.msg = "商品价格必填";
            //    apiResp.code = (int)APIErrCode.OperateFail;
            //    bllMall.ContextResponse(context, apiResp);
            //    return;
            //}
            //if (string.IsNullOrWhiteSpace(productRequestModel.show_imgs) && !productRequestModel.article_category_type.Contains("Added"))
            //{
            //    apiResp.msg = "请上传商品图片";
            //    apiResp.code = (int)APIErrCode.OperateFail;
            //    bllMall.ContextResponse(context, apiResp);
            //    return;
            //}
            WXMallProductInfo productInfo = bllMall.GetByKey <WXMallProductInfo>("PID", productRequestModel.product_id, true);

            if (productInfo == null)
            {
                apiResp.msg  = "数据未找到";
                apiResp.code = (int)APIErrCode.IsNotFound;
                bllMall.ContextResponse(context, apiResp);
                return;
            }
            productInfo.PName        = productRequestModel.product_title;
            productInfo.PDescription = productRequestModel.product_desc;
            productInfo.Price        = productRequestModel.price;
            productInfo.CategoryId   = productRequestModel.category_id;
            productInfo.IsOnSale     = productRequestModel.is_onsale.ToString();
            productInfo.Stock        = productRequestModel.totalcount;//(容纳人数)
            productInfo.Sort         = productRequestModel.sort;
            //productInfo.UserID = currentUserInfo.UserID;
            productInfo.PreviousPrice     = productRequestModel.price;
            productInfo.Summary           = productRequestModel.product_summary;
            productInfo.LastUpdate        = DateTime.Now;
            productInfo.RelationProductId = productRequestModel.relation_product_id;
            productInfo.AccessLevel       = productRequestModel.access_Level;
            productInfo.Unit = productRequestModel.unit;
            if (!string.IsNullOrWhiteSpace(productRequestModel.show_imgs))
            {
                productInfo.ShowImage = productRequestModel.show_imgs;
                List <string> imgs = productRequestModel.show_imgs.Split(',').Where(p => !string.IsNullOrWhiteSpace(p)).ToList();
                productInfo.RecommendImg = imgs[0];
                int max = imgs.Count > 5 ? 5 : imgs.Count;
                for (int i = 0; i < max; i++)
                {
                    if (i == 0)
                    {
                        productInfo.ShowImage1 = imgs[0];
                    }
                    else if (i == 1)
                    {
                        productInfo.ShowImage2 = imgs[1];
                    }
                    else if (i == 2)
                    {
                        productInfo.ShowImage3 = imgs[2];
                    }
                    else if (i == 3)
                    {
                        productInfo.ShowImage4 = imgs[3];
                    }
                    else if (i == 4)
                    {
                        productInfo.ShowImage5 = imgs[4];
                    }
                }
            }

            string dSkuIds = "";
            //默认第一条sku
            ProductSku productSku = bllMall.GetProductSku(productRequestModel.product_id);

            if (productSku == null)
            {
                //增加系统默认sku
                productSku                     = new ProductSku();//
                productSku.InsertDate          = DateTime.Now;
                productSku.Stock               = 1;
                productSku.WebSiteOwner        = bllMall.WebsiteOwner;
                productSku.ArticleCategoryType = productInfo.ArticleCategoryType;
            }
            List <ProductSku> addSkuList    = new List <ProductSku>();
            List <ProductSku> updateSkuList = new List <ProductSku>();

            if (productRequestModel.time_set_method == 0)
            {
                productSku.Price = productInfo.Price;
                updateSkuList.Add(productSku);

                List <ProductSku> dSkuList = bllMall.GetColList <ProductSku>(int.MaxValue, 1, string.Format("ProductId={0} AND SkuId!={1} ", productInfo.PID, productSku.SkuId), "SkuId");
                if (dSkuList.Count > 0)
                {
                    dSkuIds = ZentCloud.Common.MyStringHelper.ListToStr(dSkuList.Select(p => p.SkuId).ToList(), "", ",");
                }
            }
            else if (productRequestModel.time_set_method == 1 || productRequestModel.time_set_method == 2)
            {
                List <Add.timeModel> skuModelList = JSONHelper.JsonToModel <List <Add.timeModel> >(productRequestModel.time_data);
                string pSkuIds = ZentCloud.Common.MyStringHelper.ListToStr(skuModelList.Select(p => p.sku_id).ToList(), "", ",");
                if (string.IsNullOrWhiteSpace(pSkuIds))
                {
                    pSkuIds = "0";
                }
                List <ProductSku> dSkuList = bllMall.GetColList <ProductSku>(int.MaxValue, 1, string.Format("ProductId={0} AND SkuId Not In ({1}) ", productInfo.PID, pSkuIds), "SkuId");
                if (dSkuList.Count > 0)
                {
                    dSkuIds = ZentCloud.Common.MyStringHelper.ListToStr(dSkuList.Select(p => p.SkuId).ToList(), "", ",");
                }
                foreach (Add.timeModel item in skuModelList)
                {
                    ProductSku nSku = (ProductSku)productSku.Clone();
                    if (item.sku_id != 0)
                    {
                        nSku = bllMall.GetByKey <ProductSku>("SkuId", item.sku_id.ToString());
                    }
                    nSku.PropValueIdEx1 = item.ex1;
                    nSku.PropValueIdEx2 = item.ex2;
                    nSku.PropValueIdEx3 = item.ex3;
                    nSku.Price          = item.price;
                    if (item.sku_id != 0)
                    {
                        updateSkuList.Add(nSku);
                    }
                    else
                    {
                        addSkuList.Add(nSku);
                    }
                }
            }

            BLLTransaction tran   = new BLLTransaction();
            bool           result = bllMall.Update(productInfo, tran);

            if (!result)
            {
                tran.Rollback();
                apiResp.msg  = "更新失败";
                apiResp.code = (int)APIErrCode.OperateFail;
                bllMall.ContextResponse(context, apiResp);
                return;
            }
            if (!string.IsNullOrWhiteSpace(dSkuIds))
            {
                result = bllMall.DeleteMultByKey <ProductSku>("SkuId", dSkuIds, tran) >= 0;
                if (!result)
                {
                    tran.Rollback();
                    apiResp.msg  = "删除旧时间段失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
            }
            foreach (ProductSku item in updateSkuList)
            {
                result = bllMall.Update(item, tran);
                if (!result)
                {
                    tran.Rollback();
                    apiResp.msg  = "修改Sku失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
            }
            int productId = int.Parse(productInfo.PID);

            foreach (ProductSku item in addSkuList)
            {
                item.ProductId = productId;
                item.SkuId     = int.Parse(bllMall.GetGUID(BLLJIMP.TransacType.AddProductSku));
                result         = bllMall.Add(item, tran);
                if (!result)
                {
                    tran.Rollback();
                    apiResp.msg  = "新增Sku失败";
                    apiResp.code = (int)APIErrCode.OperateFail;
                    bllMall.ContextResponse(context, apiResp);
                    return;
                }
            }
            tran.Commit();
            apiResp.status = true;
            apiResp.msg    = "更新完成";
            apiResp.code   = (int)APIErrCode.IsSuccess;
            bllMall.ContextResponse(context, apiResp);
        }
Beispiel #3
0
        /// <summary>
        /// 根据本地订单映射出efast订单
        /// </summary>
        /// <param name="orderSrc"></param>
        /// <returns></returns>
        public Open.EfastSDK.Entity.TradeNewAddInfo GetMappingOrderInfo(Model.WXMallOrderInfo orderSrc)
        {
            Open.EfastSDK.Entity.TradeNewAddInfo order = new Open.EfastSDK.Entity.TradeNewAddInfo();

            order.oid           = orderSrc.OrderID;
            order.sd_id         = CurrEfastShopId;
            order.user_name     = orderSrc.OrderUserID;
            order.shipping_name = "zto";
            order.pay_name      = "weixinpay"; //weixinpay
            order.consignee     = orderSrc.Consignee;
            order.address       = orderSrc.Address;
            order.zipcode       = string.IsNullOrWhiteSpace(orderSrc.ZipCode)? "000000": orderSrc.ZipCode;
            order.mobile        = orderSrc.Phone;
            order.tel           = "";
            order.email         = "";
            order.postscript    = "";
            order.to_buyer      = "";//商家备注
            order.goods_amount  = orderSrc.Product_Fee.ToString();
            order.goods_count   = orderSrc.ProductCount.ToString();
            order.total_amount  = orderSrc.TotalAmount.ToString();
            order.shipping_fee  = orderSrc.Transport_Fee.ToString();
            order.money_paid    = orderSrc.TotalAmount.ToString();
            order.order_amount  = orderSrc.TotalAmount.ToString();
            order.add_time      = DateTime.Now.ToString();
            order.province_name = orderSrc.ReceiverProvince;
            order.city_name     = orderSrc.ReceiverCity;
            order.district_name = orderSrc.ReceiverDist;

            if (!string.IsNullOrWhiteSpace(orderSrc.ReceiverDist))
            {
                order.address = orderSrc.ReceiverDist + "  " + order.address;
            }
            if (!string.IsNullOrWhiteSpace(orderSrc.ReceiverCity))
            {
                order.address = orderSrc.ReceiverCity + "  " + order.address;
            }
            if (!string.IsNullOrWhiteSpace(orderSrc.ReceiverProvince))
            {
                order.address = orderSrc.ReceiverProvince + "  " + order.address;
            }

            List <Model.WXMallOrderDetailsInfo> detailList         = bllMall.GetOrderDetailsList(orderSrc.OrderID);
            List <Open.EfastSDK.Entity.TradeNewAddOrdersInfo> dtls = new List <Open.EfastSDK.Entity.TradeNewAddOrdersInfo>();
            int totalCount  = 0;
            int saleProdQty = 0;

            foreach (var item in detailList)
            {
                Open.EfastSDK.Entity.TradeNewAddOrdersInfo dtl = new Open.EfastSDK.Entity.TradeNewAddOrdersInfo();
                saleProdQty++;
                totalCount += item.TotalCount;
                var sku = bllMall.GetProductSku(item.SkuId.Value);
                //var product = bllMall.GetProduct(item.PID);

                dtl.goods_name   = item.ProductName;
                dtl.goods_number = item.TotalCount;
                dtl.goods_price  = (double)item.OrderPrice;
                dtl.is_gift      = 0;
                dtl.outer_sku    = sku.OutBarCode;

                if (item.PaymentFt != null && item.PaymentFt != 0)
                {
                    dtl.payment_ft = (double)item.PaymentFt;
                }

                dtls.Add(dtl);
            }

            order.orders = dtls;

            return(order);
        }