Exemplo n.º 1
0
        /// <summary>
        /// 获取购物车数据
        /// </summary>
        /// <param name="id"></param>
        /// <param name="AttID"></param>
        /// <returns></returns>
        public CarProductDetail GetProDetail(int id, int AttID, string atID = "-1")
        {
            CarProductDetail proDetail = new CarProductDetail();
            string           sql       = "select a.ID,a.CategoryID,a.PartName,a.PartModel,a.PartSuppyNo,a.Price,b.BrandName  from Parts a left join PartBrand b on a.PartBrand=b.ID where a.ID={0} ";
            CarProDetail     model     = db.Database.SqlQuery <CarProDetail>(string.Format(sql, id)).FirstOrDefault();

            if (model != null)
            {
                string       imgSql = " select * from ImgStock where PartID={0} ";
                DAO.ImgStock img    = db.Database.SqlQuery <DAO.ImgStock>(string.Format(imgSql, id)).FirstOrDefault();
                proDetail.imgStock = img;
                string            CSql = " select * from PartsCategory where ID={0} and IsShow=1 ";
                DAO.PartsCategory pc   = db.Database.SqlQuery <DAO.PartsCategory>(string.Format(CSql, model.CategoryID)).FirstOrDefault();
                proDetail.partCate = pc;

                PartExtendBll          extBll = new PartExtendBll();
                List <DAO.PartsExtend> att    = extBll.GetCarItems(id, AttID);
                proDetail.partExt = att;
                if (att.Count > 0)
                {
                    if (atID != "-1" && atID != null)
                    {
                        int            aid = int.Parse(atID);
                        DAO.ActiveAttr a   = db.ActiveAttr.Where(o => o.AProID == id && o.AtrrID == AttID && o.ActiveID == aid).FirstOrDefault();
                        if (a != null)
                        {
                            model.Price       = a.NewPrice;
                            proDetail.activeM = db.Active.Where(o => o.ID == aid).FirstOrDefault();
                        }
                    }
                    else
                    {
                        model.Price = att.Last().AttrPrice;
                    }
                }
                else
                {
                    if (atID != "-1" && atID != null)
                    {
                        int            aid = int.Parse(atID);
                        DAO.ActivePros p   = db.ActivePros.Where(o => o.ActiveID == aid && o.ProID == id).FirstOrDefault();
                        if (p != null)
                        {
                            model.Price       = p.NewPrice;
                            proDetail.activeM = db.Active.Where(o => o.ID == aid).FirstOrDefault();
                        }
                    }
                }

                proDetail.proDetail = model;
                return(proDetail);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 产品详情页
        /// </summary>
        /// <param name="pid"></param>
        /// <returns></returns>
        private List <PartAttrOutModel> GetExtends(int pid)
        {
            List <PartAttrOutModel> list = new List <PartAttrOutModel>();

            PartExtendBll            extBll  = new PartExtendBll();
            List <PartAttrNameModel> allAttr = extBll.GetAttrs(pid.ToString());

            if (allAttr != null)
            {
                foreach (var item in allAttr)
                {
                    PartAttrOutModel model = new PartAttrOutModel();
                    model.AttrName   = item.AttrName;
                    model.ParentAttr = item.ParentAttr;
                    model.AttrList   = extBll.GetItems(pid, item.AttrName);
                    list.Add(model);
                }
            }
            return(list);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 订单价格校验
        /// </summary>
        /// <param name="shopList"></param>
        /// <param name="oAmount"></param>
        /// <returns></returns>
        public bool OrderAmountCheck(List <Shop> shopList, decimal oAmount, decimal ratio, out decimal shopListTotle)
        {
            shopListTotle = 0;
            decimal       normTotle = 0;
            decimal       ActTotle  = 0;
            PartExtendBll pbll      = new PartExtendBll();
            ProductBll    proBll    = new ProductBll();

            foreach (Shop item in shopList)
            {
                var qty = 0;
                if (int.TryParse(item.Qty, out qty))
                {
                    //产品
                    DAO.Parts product = proBll.GetPartModel(item.ID);
                    //先检查产品是否有属性,是否是最后一个属性
                    if (!string.IsNullOrEmpty(item.Attrs))
                    {
                        //先检查是否是最终属性,没有子属性
                        DAO.PartsExtend childAttr = pbll.GetChildAttrModel(item.ID, item.Attrs);
                        if (childAttr == null)
                        { //没有子属性为有效的属性
                            DAO.PartsExtend currAttr = pbll.GetPartAttrModel(item.ID, item.Attrs);
                            if (currAttr == null)
                            {
                                //属性没有效
                                return(false);
                            }
                            else
                            {
                                if (item.Type != "-1")
                                {
                                    int            aid = int.Parse(item.Type);
                                    int            pid = int.Parse(item.ID);
                                    int            tid = int.Parse(item.Attrs);
                                    DAO.ActiveAttr att = db.ActiveAttr.Where(m => m.ActiveID == aid && m.AProID == pid && m.AtrrID == tid).FirstOrDefault();
                                    if (att != null)
                                    {
                                        ActTotle += qty * att.NewPrice;
                                    }
                                    else
                                    {
                                        normTotle += qty * currAttr.AttrPrice;
                                    }
                                }
                                else
                                {
                                    normTotle += qty * currAttr.AttrPrice;
                                }
                            }
                        }
                        else
                        {
                            //不是最终属性 错误
                            return(false);
                        }
                    }
                    else
                    {
                        //没有属性
                        if (item.Type != "-1")
                        {
                            int            aid = int.Parse(item.Type);
                            int            pid = int.Parse(item.ID);
                            DAO.ActivePros pro = db.ActivePros.Where(m => m.ActiveID == aid && m.ProID == pid).FirstOrDefault();
                            if (pro != null)
                            {
                                ActTotle += qty * pro.NewPrice;
                            }
                            else
                            {
                                normTotle += qty * product.Price;
                            }
                        }
                        else
                        {
                            //没有活动
                            normTotle += qty * product.Price;
                        }
                    }
                }
                else
                {
                    //数量不是数字
                    return(false);
                }
            }
            //获取会员等级折扣
            shopListTotle = Math.Round(ActTotle + Math.Round(normTotle * 1, 2), 2);
            if (shopListTotle == oAmount)
            {
                //价格验证成功
                return(true);
            }
            else
            {
                //价格验证失败
                return(false);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 提交订单
        /// </summary>
        /// <param name="shopList">商品列表</param>
        /// <param name="sendinfo">配送信息</param>
        /// <param name="uid">当前用户</param>
        /// <param name="ratio">当前用户折扣</param>
        /// <param name="orderPrice">订单金额</param>
        /// <param name="shopListTotle">商品列表总金额</param>
        /// <returns>订单号</returns>
        public string AddOrder(List <Shop> shopList, SendInfo sendinfo, string uid, decimal ratio, decimal orderPrice, decimal shopListTotle)
        {
            PartExtendBll pbll   = new PartExtendBll();
            ProductBll    proBll = new ProductBll();
            MemberBLL     memBll = new MemberBLL();

            DAO.MemberBase user  = memBll.GetUserByID(uid);
            DAO.Order      order = new DAO.Order();
            order.OrderId = CommonUtils.OrderUtil.NewOrderId;
            if (order != null)
            {
                order.Uid       = user.ID;
                order.UserName  = user.LoginName;
                order.UserPhone = user.Mobile;
            }
            order.OrderSource = "0";
            order.OrderTime   = DateTime.Now;
            order.OrderStatus = "未处理";//订单初始状态
            order.Consignee   = sendinfo.Name;
            order.Address     = sendinfo.Address;
            order.CellPhone   = sendinfo.Phone;
            order.PayStatus   = "未支付";
            order.Payment     = "";
            order.Remarks     = "";
            order.Ratio       = ratio;
            decimal disAmout = shopList.Where(h => h.Type == "-1").Sum(h => (decimal.Parse(h.Price)));

            order.DiscountAmount  = (1 - ratio) * disAmout;
            order.ShippingCost    = 0;
            order.TotalPrice      = orderPrice;
            order.SearchTag       = "";
            order.OperatorRemarks = "";
            order.OrderType       = "0";
            order.OrderFrom       = 0;//网站
            order.Prov            = sendinfo.Prov;
            order.City            = sendinfo.City;
            order.Area            = sendinfo.Area;

            db.Order.Add(order);
            DAO.Addship addShip = new DAO.Addship();
            addShip = isAddressByUid(uid);

            if (addShip != null)
            {
                upAddShip(sendinfo.Name, uid, sendinfo.City, sendinfo.Prov, sendinfo.Area, sendinfo.Address, sendinfo.Phone);
            }
            else
            {
                DAO.Addship addShipS = new DAO.Addship();
                addShipS.name     = sendinfo.Name;
                addShipS.province = sendinfo.Prov;
                addShipS.scity    = sendinfo.City;
                addShipS.region   = sendinfo.Area;
                addShipS.address  = sendinfo.Address;
                addShipS.UID      = Convert.ToInt32(uid);
                addShipS.phone    = sendinfo.Phone;
                db.Addship.Add(addShipS);
                db.SaveChanges();
            }


            //db.SaveChanges();
            foreach (Shop item in shopList)
            {
                CarProductDetail m;
                int i   = -1;
                int pid = -1;
                if (int.TryParse(item.ID, out pid))
                {
                    if (!string.IsNullOrEmpty(item.Attrs) && int.TryParse(item.Attrs, out i))
                    {
                        m = proBll.GetProDetail(pid, i, item.Type);
                    }
                    else
                    {
                        m = proBll.GetProDetail(pid, -1, item.Type);
                    }
                    if (m != null)
                    {
                        m.Qty      = int.Parse(item.Qty);
                        m.lastAttr = item.Attrs;
                        DAO.OrderProList pro = new DAO.OrderProList();
                        pro.OrderId     = order.OrderId;
                        pro.ProductID   = m.proDetail.ID;
                        pro.ProductName = m.proDetail.PartName;
                        pro.SupplyNo    = m.proDetail.PartSuppyNo;
                        pro.Num         = m.Qty;
                        pro.Price       = m.proDetail.Price;
                        pro.InputTime   = DateTime.Now;
                        pro.PType       = m.proDetail.CategoryID;
                        pro.AttrID      = i;
                        pro.IsFlag      = int.Parse(item.Type);  //活动号
                        pro.activeName  = m.activeM == null ? "" : m.activeM.Name;
                        StringBuilder sb = new StringBuilder("");
                        foreach (var ext in m.partExt)
                        {
                            sb.Append("|" + ext.AttrName + ":" + ext.AttrValue + "|");
                        }
                        pro.AttrDecribe = sb.ToString();
                        db.OrderProList.Add(pro);
                        opActiveStock(pro.IsFlag, pro.ProductID, pro.AttrID, pro.Num);

                        OrderBuss obll   = new OrderBuss();
                        int       number = Convert.ToInt32(obll.getPartStock(m.proDetail.ID).StockNUM) - 1;

                        obll.upPartStock(m.proDetail.ID, number);

                        //db.SaveChanges();
                    }
                }
            }
            int addResult = db.SaveChanges();//db.SaveChanges();

            if (addResult > 0)
            {
                return(order.OrderId.ToString());
            }
            else
            {
                return(null);
            }
        }