Пример #1
0
        public IActionResult CreateOrder(CreateOrderRQ rq)
        {
            var r = _orderService.CreatePayOrder(User.GetToken().UID, rq);

            return(Ok(r));
        }
Пример #2
0
        /// <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));
        }