public IActionResult CreateOrder(CreateOrderRQ rq) { var r = _orderService.CreatePayOrder(User.GetToken().UID, rq); return(Ok(r)); }
/// <summary> /// 创建订单 /// </summary> /// <param name="uid"></param> /// <param name="rq"></param> /// <returns></returns> public ResultDto <bool> CreatePayOrder(string uid, CreateOrderRQ rq) { if (rq.AddressID <= 0) { return(Result <bool>(ResponseCode.sys_param_format_error, "请选择收货地址")); } if (rq.Products.Count == 0) { return(Result <bool>(ResponseCode.sys_param_format_error, "请选择商品")); } if (rq.CustomerMessage.Length > 50) { return(Result <bool>(ResponseCode.sys_param_format_error, "留言过长,请重新输入")); } var user = _userDomainService.GetUserByUID(uid); if (user == null) { return(Result <bool>(ResponseCode.sys_token_invalid, "获取用户信息错误")); } var addr = _ibll.wm_user_shopping_address.Where(q => q.ID == rq.AddressID && q.UID == uid).First(); if (addr == null) { return(Result <bool>(ResponseCode.sys_param_format_error, "收货地址错误!请重新提交")); } var city = _ibll.Sys_City.Where(q => q.ID == addr.CityID).Select(q => q.Name).First(); var province = _ibll.Sys_Province.Where(q => q.ID == addr.ProvinceID).Select(q => q.Name).First(); var a = string.Empty; if (city == province) { a = city; } else { a = $"{province}{city}"; } addr.Receiver_Address = $"{a}{addr.Receiver_Address}";//拼接省市区 // 生成内部订单号 var billNo = $"SH{DateTime.Now.Ticks}"; var order = new wm_order { BillNo = billNo, DataStatus = (byte)DataStatus.Enable, PayStatus = (byte)EnumPayStatus.WaitPayment, WxOrderNo = "", UID = user.UID, CreateTime = DateTime.Now, Distribution = 1, Receiver_Address = addr.Receiver_Address, Receiver_Name = addr.Receiver_Name, Receiver_Phone = addr.Receiver_Phone, OrderStatus = (byte)EnumOrderStatus.WaitPayment, CustomerMessage = rq.CustomerMessage, OrderPrice = 0, }; var orderinfoList = new List <wm_order_info>(); foreach (var item in rq.Products) { var product = _ibll.wm_product.Where(q => q.DataStatus == (byte)DataStatus.Enable && q.ID == item.ProductID).First(); if (product != null) { orderinfoList.Add(new wm_order_info { OrderId = 0, CreateTime = DateTime.Now, DataStauts = (byte)DataStatus.Enable, ProductID = item.ProductID, Product_Icon = product.Icon, Product_Name = product.Name, Product_Num = item.ProductNumber, Product_Price = product.Price, }); } } if (orderinfoList.Count == 0) { return(Result <bool>(ResponseCode.sys_param_format_error, "选择的商品无效,请重新选购!")); } order.OrderPrice = orderinfoList.Sum(q => q.Product_Price); var orderCarId = 0; if (rq.IsEmptyShoppingCar) { orderCarId = _ibll.wm_order_card.Where(q => q.DataStatus == (byte)DataStatus.Enable && q.UID == q.UID) .Select(q => q.ID) .First(); } try { _ibll.DB.Ado.BeginTran(); //创建订单 var orderId = _ibll.wm_order.AddReturnId(order); orderinfoList.ForEach(q => q.OrderId = orderId); _ibll.wm_order_info.AddRange(orderinfoList); if (rq.IsEmptyShoppingCar) { } //清除购物车 if (rq.IsEmptyShoppingCar && orderCarId > 0) { var tranSql = $"update {nameof(wm_order_card_info)} SET DataStaus={(byte)DataStatus.Delete} where DataStaus={(byte)DataStatus.Enable} and Order_CardID={orderCarId}"; _ibll.Sql_ExecuteCommand(tranSql); } _ibll.DB.Ado.CommitTran(); } catch (System.Exception ex) { _ibll.DB.Ado.RollbackTran(); _logger.LogError(ex, "下单失败!"); return(Result(false)); } return(Result(true)); }