public Enums.PayErrorMsg CheckParamsValid(GenerateOrderDto dto) { var errorMsg = Enums.PayErrorMsg.失败; if (dto.UserId <= 0 || dto.TotalFee < 0 || dto.Payment < 0 || dto.UserCouponId < 0 || dto.PostFee < 0) { return(Enums.PayErrorMsg.参数错误); } using (var cxt = DbContext(DbOperation.Read)) { var repo = new OrderRepo(cxt); var result = repo.CheckParamsValid(dto); EnumHelper.TryParsebyValue(result, out errorMsg); return(errorMsg); } }
public ComplexResponse <object> GenerateOrder([FromBody] GenerateOrderDto dto) { try { var msg = Enums.PayErrorMsg.失败; var tradeNo = _orderService.GenerateOrder(dto, out msg); if (!string.IsNullOrEmpty(tradeNo)) { msg = Enums.PayErrorMsg.成功; } LogHelper.Info("\n\n生成订单号:" + tradeNo); return(new ComplexResponse <object>((int)msg, data: new { tradeNo })); } catch (Exception ex) { LogHelper.Debug("\n\n生成订单异常:\n", ex); return(new ComplexResponse <object>((int)Enums.PayErrorMsg.失败, ex.ToString())); } }
public static Order ToOrder(this GenerateOrderDto dto) { return(dto != null?Mapper.Map <GenerateOrderDto, Order>(dto) : null); }
public string GenerateOrder(GenerateOrderDto dto, out Enums.PayErrorMsg msg) { string tradeNo = string.Empty; msg = CheckParamsValid(dto); if (msg == Enums.PayErrorMsg.成功) { using (var cxt = DbContext(DbOperation.Write)) { cxt.BeginTransaction(); var repo = new OrderRepo(cxt); var id = repo.Insert(new Order { TotalFee = dto.TotalFee, Payment = dto.Payment, PayType = (int)Enums.PayType.微信支付, UserCouponId = dto.UserCouponId, PostFee = dto.PostFee, UserId = dto.UserId, UserNickname = dto.UserNickname, IsDeleted = 0, Sort = 0, Status = (int)Enums.OrderStatus.未付款, Creator = "admin", PayTime = DateTime.Now, DeliveryTime = DateTime.Now, EndTime = DateTime.Now, CloseTime = DateTime.Now, CreateTime = DateTime.Now, UpdateTime = DateTime.Now, ShippingName = dto.ShippingName, UserMessage = dto.UserMessage, IsRate = string.IsNullOrEmpty(dto.UserMessage) ? 0 : 1, }); if (id > 0) { tradeNo = repo.GetTradeNo(id); // 生成订单明细表 if (dto.OrderItemDtos.Any()) { foreach (var orderItem in dto.OrderItemDtos) { orderItem.OrderId = (int)id; if (repo.InsertOrderItem(orderItem) != 1) { cxt.Rollback(); } } } // 生成订单配送表 int result = repo.InsertOrderShipping(new OrderShipping { OrderId = (int)id, Name = dto.Receiver, Mobile = dto.Mobile, Province = dto.Province, City = dto.City, District = dto.District, Address = dto.Address, PostCode = dto.PostCode, CreateTime = DateTime.Now, UpdateTime = DateTime.Now, Status = 1, }); if (result == 1) { var flag = true; #region 冻结用户优惠券 if (dto.UserCouponId > 0) { flag = repo.UpdateUserCoupon(dto.UserCouponId); } #endregion #region 除购物车 if (!string.IsNullOrEmpty(dto.CartIds)) { var cartIdArr = dto.CartIds.Split(',').Select(int.Parse).ToArray(); flag = repo.DeleteShoppingCart(cartIdArr); } #endregion if (flag) { cxt.Commit(); } else { cxt.Rollback(); } #region 更新产品库存量(非必实现项) try { var productRepo = new ProductRepo(cxt); foreach (var orderItem in dto.OrderItemDtos) { productRepo.AddAmount(orderItem.ProductId, -orderItem.Num); } } catch (Exception) { // do nothing } #endregion } else { cxt.Rollback(); } } else { cxt.Rollback(); } } } return(tradeNo); }