/// <summary> /// 生成订单 SetOrder /// </summary> /// <param name="row"></param> /// ShoppingDetailed 购物车明细编号【必填】 /// UserAddressId 收货地址编号【必填】 /// UserId 用户编号【必填】 /// 返回: /// true:"" /// false:errmessage /// <returns></returns> private string SetOrder(DataRow row) { if (!row.Table.Columns.Contains("ShoppingDetailed") || string.IsNullOrEmpty(row["ShoppingDetailed"].ToString())) { return(JSONHelper.FromString(false, "购物车明细编号不能为空")); } if (!row.Table.Columns.Contains("UserAddressId") || string.IsNullOrEmpty(row["UserAddressId"].ToString())) { return(JSONHelper.FromString(false, "收货地址编号不能为空")); } if (!row.Table.Columns.Contains("UserId") || string.IsNullOrEmpty(row["UserId"].ToString())) { return(JSONHelper.FromString(false, "用户编号不能为空")); } IDbConnection con = new SqlConnection(PubConstant.GetConnectionString("BusinessContionString")); string str = ""; try { //获取收货地址 Tb_User_Address UserAddress = BussinessCommon.GetAddressModel(row["UserAddressId"].ToString()); //获取购物明细 DataTable Dt_ShoppingDetailed = BussinessCommon.GetShoppingDetailedView(" Id in (" + BussinessCommon.GetShoppingDetailedIdS(row["ShoppingDetailed"].ToString()) + ")"); if (Dt_ShoppingDetailed == null || Dt_ShoppingDetailed.Rows.Count <= 0) { return(JSONHelper.FromString(false, "生成订单失败:未找到购物明细")); } Tb_Charge_Receipt Order = new Tb_Charge_Receipt(); //根据商家ID分组 var query = from t in Dt_ShoppingDetailed.AsEnumerable() group t by new { t1 = t.Field <string>("BussId") } into m select new { BussId = m.Key.t1 }; if (query.ToList().Count > 0) { query.ToList().ForEach(q => { //生成订单 Order = new Tb_Charge_Receipt(); Order.Id = Guid.NewGuid().ToString(); Order.BussId = q.BussId; Order.OrderId = Guid.NewGuid().ToString(); Order.ReceiptSign = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(1000, 9999).ToString(); Order.UserId = row["UserId"].ToString(); if (UserAddress != null) { if (UserAddress.Address != "" && UserAddress.Address.Split(',').Length > 0) { Order.Name = UserAddress.Address.Split(',')[0]; Order.DeliverAddress = UserAddress.Address.Split(',')[1]; } Order.Mobile = UserAddress.Mobile; } else { throw new Exception("该收货地址不存在"); } Order.ReceiptDate = DateTime.Now; Order.IsReceive = "未收货"; Order.IsDeliver = "未发货"; Order.IsPay = "未付款"; Order.IsDelete = 0; //查询此商家的所有购物车明细 DataRow[] dr = Dt_ShoppingDetailed.Select("BussId=" + q.BussId); //生成订单明细 foreach (DataRow item in dr) { Tb_Charge_ReceiptDetail OrderDetail = new Tb_Charge_ReceiptDetail(); OrderDetail.RpdCode = Guid.NewGuid().ToString(); OrderDetail.ReceiptCode = Order.Id; OrderDetail.ResourcesID = item["ResourcesID"].ToString(); OrderDetail.Quantity = AppGlobal.StrToInt(item["Number"].ToString()); OrderDetail.SalesPrice = AppGlobal.StrToDec(item["ResourcesSalePrice"].ToString()); OrderDetail.DiscountPrice = AppGlobal.StrToDec(item["ResourcesDisCountPrice"].ToString()); OrderDetail.GroupPrice = AppGlobal.StrToDec(item["GroupBuyPrice"].ToString()); OrderDetail.DetailAmount = AppGlobal.StrToDec(item["SubtotalMoney"].ToString());; OrderDetail.RpdMemo = ""; OrderDetail.RpdIsDelete = 0; //累计订单金额【取销售价格】 Order.Amount += AppGlobal.StrToDec(OrderDetail.SalesPrice.ToString()) * AppGlobal.StrToDec(OrderDetail.Quantity.ToString()); //生成订单明细 con.Insert <Tb_Charge_ReceiptDetail>(OrderDetail); } //生成订单 con.Insert <Tb_Charge_Receipt>(Order); //判断此商家中是否存在该客户 string sqlStr = "select BussId from Tb_Customer_List where BussId='" + q.BussId + "' and UserId='" + row["UserId"] + "' and Mobile='" + UserAddress.Mobile + "'"; List <string> list = con.Query <string>(sqlStr, null, null, true, null, CommandType.Text).ToList <string>(); //如果不存在,将此客户添加至此商家的客户资料中 if (list.Count <= 0) { Tb_Customer_List cust = new Tb_Customer_List(); cust.Id = Guid.NewGuid().ToString(); cust.BussId = q.BussId; cust.UserId = row["UserId"].ToString(); cust.Mobile = UserAddress.Mobile; cust.CustName = ""; con.Insert <Tb_Customer_List>(cust); } }); } } catch (Exception ex) { str = ex.Message; } if (str != "") { return(JSONHelper.FromString(false, str)); } else { return(JSONHelper.FromString(true, "")); } }