.net 对商品下单的设计及实现(group)

一.下单要设计2个表一个主表一个从表

1.表结构

主表:订单编号,商家编号,顾客编号,添加时间,是否包邮,邮费,收货人,收货地址,

收货人电话,快递单号,快递名称,总价格,收益价格。

从表:主表编号,商品编号,数量,价格

2.订单从表存储的是单个商品的信息包括商品价格数量用户购买的商品。主表存储的是商家信息商家

对于的商品对应商家。

二.下单如何将数据存入数据库

通过将viewModel的数据存如数据库对应的表中

1.构造一个接收页面类的类

格式为

{
        
        "收货ID":1 //收货地址表主键
        
    
        "商品":[

            {
                "商品编号":1,
                "商家编号":1,
                "价格":15.00,
                "数量":10
                "是否包邮":0,
         "邮费":15.00,
            },
            {
                "商品编号":2,
                "商家编号":2,
                "价格":25.00,
                "数量":20
                "是否包邮":0,
         "邮费":15.00,
            }
            ... 
        ]

    }

 

 public class OrderInformation
    {
        public int ShippingAddressID { get; set; }
       
        public List<ProductInformation> ProductInformations { get; set; }
    }

 public class ProductInformation
    {
        public int ProductID { get; set; }
        public int BusinessID { get; set; }
        public decimal Price { get; set; }
        public int Count { get; set; }
        public int IsPackagemail { get; set; }
        public decimal Postage { get; set; }
      
    }

2.数据库model类

 public partial class Order
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Order()
        {
            this.Comment = new HashSet<Comment>();
            this.OrderDetails = new HashSet<OrderDetails>();
        }
    
        
     public int ID{ get; set; }
public string OrderNumber { get; set; } public Nullable<int> BusinessID { get; set; } public Nullable<int> CustomerID { get; set; } public Nullable<System.DateTime> OrderDate { get; set; } public Nullable<int> IsPackagemail { get; set; } public Nullable<decimal> Postage { get; set; } public string Recipient { get; set; } public string RecipientPhone { get; set; } public string RecipientAddress { get; set; } public Nullable<int> ExpressesID { get; set; } public string CourierNumber { get; set; } public Nullable<decimal> TotalAmount { get; set; } public Nullable<int> State { get; set; } public virtual Business Business { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection<Comment> Comment { get; set; } public virtual Customer Customer { get; set; } public virtual Expresses Expresses { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection<OrderDetails> OrderDetails { get; set; } }
  public partial class OrderDetails:BaseModel
    {
        
      public int ID{ get; set; }
public Nullable<int> OrderID { get; set; } public Nullable<int> ProductID { get; set; } public Nullable<int> Count { get; set; } public Nullable<decimal> Price { get; set; } public virtual Product Product { get; set; } public virtual Order Order { get; set; } }

方法(通过group分组存入数据)

   public bool AddOrder(int uid, OrderInformation orderInformation, out string mgs)
        {
            mgs = "";
            IUserDAL userDal = new UserDAL();
            User user = userDal.Search(x => x.ID == uid).First();
            IShippingAddressDAL dal = new ShippingAddressDAL();
            ShippingAddress shippingAddress = dal.Search(orderInformation.ShippingAddressID);
            IProductBLL bll = new ProductBLL();
            DateTime? dataTime= DateTime.Now;
            List<Order> orderList = orderInformation.ProductInformations.GroupBy(x => x.BusinessID).Select(g => new Order()
            {
                BusinessID = g.Key,
                Postage = g.Sum(x => x.Postage * x.Count),
                CustomerID = user.CustomerID,
                OrderDate = dataTime,
                State = 1,
                OrderNumber = CheckOrderNumber(g.Key),
                IsPackagemail = g.Sum(x => x.Postage) > 0 ? 2 : 1,
                Recipient = shippingAddress.Recipient,
                RecipientPhone = shippingAddress.Phone,
                RecipientAddress = shippingAddress.Area.Name + shippingAddress.Area1.Name + shippingAddress.Area2.Name + shippingAddress.Address,
                TotalAmount = g.Sum(x => x.Price / (1+bll.Search(x.ProductID).CommodityType.PriceStrategy.First().PricePercentage) * x.Count),
                TotalRevenue = g.Sum(x => x.Price /(1+bll.Search(x.ProductID).CommodityType.PriceStrategy.First().PricePercentage)* bll.Search(x.ProductID).CommodityType.PriceStrategy.First().PricePercentage*x.Count),
                OrderDetails = GetDetailOrder(orderInformation.ProductInformations.Where(x=>x.BusinessID==g.Key).ToList())

            }).ToList();
            foreach (var item in orderList)
            {
                Dal.AddNoSave(item);
            }
            return Dal.Result() > 0;
        }
        //构造从表信息
        public static List<OrderDetails> GetDetailOrder(List<ProductInformation> productInformations)
        {
            List<OrderDetails> detailOrderList = new List<OrderDetails>();
            foreach (var item in productInformations)
            {
                OrderDetails orderDetail = new OrderDetails();
                orderDetail.ProductID = item.ProductID;
                orderDetail.Price = item.Price;
                orderDetail.Count = item.Count;
                detailOrderList.Add(orderDetail);
            }
            return detailOrderList;
        }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有源码,有文档,开发环境是在Visual Studio .NET 2005的平台上C#.Net的应用程序(winform),采用SQL Server 2000数据库系为基本应用软件开发系统程序。 第一章 前言 1 1.1 项目依据及意义 1 1.2 国内外研究现状及发展趋势 1 1.3 项目内容及技术分析 2 1.4 本课题研究方案 2 1.5 研究目标、主要特色 3 第二章 可行性研究 4 2.1 经济可行性 4 2.2 社会可行性 4 2.3 技术可行性 4 第三章 需求分析 6 3.1 系统功能需求 6 3.2. 系统非功能性需求 7 3.2.1性能需求 7 3.2.2 安全性需求 7 3.3 应用与开发环境 8 3.3.1 系统定义 8 3.3.2 运行环境 8 3.3.3 硬件环境 8 3.3.4 其他要求 9 第四章 总体设计 10 4.1 总体设计概述 10 4.2 系统功能结构设计 10 4.3 系统各子系统的分析与设计 11 4.3.1 用户登录子系统 11 4.3.2商品管理系统基本概念模型 11 4.4数据库中主要表的结构设计 13 4.4.1 进货计划表的结构设计 13 4.4.2 商品库存表 14 4.4.3 用户表 15 4.4.4 人员管理表 15 4.4.5 三个自由表情况 16 第五章 详细设计与规划 17 5.1系统登录 17 5.2系统管理 19 5.2.1 用户管理 19 5.2.2 密码管理 21 5.3 商品管理 23 5.3.1 进货管理 23 5.3.2 库存管理 25 5.3.3 商品管理 26 5.4 供货商管理 27 5.4.1 供货商管理 27 5.4.2 供货商查询和统计 29 5.5销售管理 30 第六章 系统测试与调试 33 6.1 单元测试 33 6.2 综合测试 34 6.3 验收测试 34 第七章 系统的维护 35 第八章 总结 36 致 谢 37

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值