public bool CancelOrder(int userId, string tradeNo) { if (userId > 0 && !string.IsNullOrEmpty(tradeNo)) { using (var ctx = DbContext(DbOperation.Write)) { ctx.BeginTransaction(); var repo = new OrderRepo(ctx); if (repo.UpdateOrderStatus(tradeNo, (int)Enums.OrderStatus.交易关闭)) { ctx.Commit(); #region 更新商品库存量 try { // 恢复商品库存量 var productRepo = new ProductRepo(ctx); var productList = productRepo.GetProductsByTradeNo(tradeNo); foreach (var orderItem in productList) { productRepo.AddAmount(orderItem.ProductId, orderItem.Num); } } catch (Exception ex) { // nothing } #endregion return(true); } else { ctx.Rollback(); return(false); } } } return(false); }
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); }