public IHttpActionResult AddRefundOrder([FromBody] string[] inparamters) { var ids = string.Empty; if ((null == inparamters) || (inparamters.Length < 1)) { return(Ok(new { StatusCode = 0, message = "订单信息不存在" })); } try { var id = inparamters[0].ToGuid(); var openId = WeiChatApplicationContext.Current.WeiChatUser.OpenId; var order = db.Order_Infos.SingleOrDefault(o => (o.Id == id) && (o.OpenId == openId)); if (null == order) { return(Ok(new { StatusCode = 0, message = "订单信息不存在" })); } var price = inparamters[1].ToDecimal(0m); var type = inparamters[2].ToInt(1); var reason = inparamters[3].FilterHtml().FilterSqlKey(); var remark = inparamters[4].FilterHtml().FilterSqlKey(); var details = (JArray)JsonConvert.DeserializeObject(inparamters[5]); #region 退换货订单 var refundOrder = new Order_Refund { Id = Guid.NewGuid(), OrderID = order.Id, OrderCode = order.Code, Code = PayUtil.GenerateOutTradeNo(), Type = (EnumOrderRefundType)type, Amount = price, Quantity = 0, Reason = reason, Logistics = string.Empty, ShippingCode = string.Empty, Consignee = string.Empty, Mobile = string.Empty, Address = string.Empty, State = (EnumOrderRefundType)type == EnumOrderRefundType.Return ? EnumOrderRefundState.Replace : EnumOrderRefundState.WaitSellerAgree, Remark = remark, OpenId = openId, CreateTime = DateTime.Now, TenantId = TenantId }; #endregion #region 订单产品 var by = false; var shipping = new List <decimal>(); foreach (var detail in details) { var detailID = detail.ToString().ToGuid(); var product = db.Order_Details.FirstOrDefault(o => o.Id == detailID); if (null != product) { var refundDetail = new Order_RefundDetail { Id = Guid.NewGuid(), OrderRefund = refundOrder.Id, OrderDetail = product.Id, OpenId = openId, CreateTime = DateTime.Now, TenantId = TenantId }; db.Order_RefundDetails.Add(refundDetail); //增加退换货数据 refundOrder.Quantity += product.Quantity; } } #endregion //订单变更状态 order.State = EnumOrderStatus.ReturnedGoods; db.Entry(order).State = EntityState.Modified; if (db.Order_Refunds.Any(o => o.Code == refundOrder.Code)) { refundOrder.Code = PayUtil.GenerateOutTradeNo(); } db.Order_Refunds.Add(refundOrder); db.SaveChanges(); return(Ok(new { StatusCode = 1, message = refundOrder.Id })); } catch (Exception ex) { log.Log(LoggerLevels.Debug, "Order/Add:" + ex.Message); return(Ok(new { StatusCode = 0, message = "生成失败" })); } }
public IHttpActionResult ApplyRefund([FromBody] string[] inparamters) { var ids = string.Empty; if ((null == inparamters) || (inparamters.Length < 1)) { return(Ok(new { StatusCode = 0, message = "订单信息不存在" })); } try { var OrderId = inparamters[0].ToGuid(); var openId = WeiChatApplicationContext.Current.WeiChatUser.OpenId; var order = db.Order_Infos.SingleOrDefault(o => o.Id == OrderId); if (null == order) { return(Ok(new { StatusCode = 0, message = "订单信息不存在" })); } var reason = inparamters[1]; #region 退换货订单 var refundOrder = new Order_Refund { Id = Guid.NewGuid(), OrderID = order.Id, OrderCode = order.Code, Code = PayUtil.GenerateOutTradeNo(), Type = EnumOrderRefundType.ReturnGoods, Amount = order.TotalPrice, Quantity = 0, Reason = "", Logistics = string.Empty, ShippingCode = string.Empty, Consignee = string.Empty, Mobile = string.Empty, Address = string.Empty, State = EnumOrderRefundState.WaitSellerAgree, Remark = "", OpenId = openId, CreateTime = DateTime.Now, TenantId = TenantId }; #endregion #region 订单产品 var details = db.Order_Details.Where(p => p.OrderID == order.Id).ToList(); foreach (var detail in details) { var detailID = detail.ToString().ToGuid(); var product = db.Order_Details.FirstOrDefault(o => o.Id == detailID); if (null != product) { var refundDetail = new Order_RefundDetail { Id = Guid.NewGuid(), OrderRefund = refundOrder.Id, OrderDetail = product.Id, OpenId = openId, CreateTime = DateTime.Now, TenantId = TenantId }; db.Order_RefundDetails.Add(refundDetail); //增加退换货数据 refundOrder.Quantity += product.Quantity; } } #endregion //订单变更状态 order.State = EnumOrderStatus.ReturnedGoods; if (db.Order_Refunds.Any(o => o.Code == refundOrder.Code)) { refundOrder.Code = PayUtil.GenerateOutTradeNo(); } db.Order_Refunds.Add(refundOrder); db.SaveChanges(); return(Ok(new { StatusCode = 1, message = refundOrder.Id })); } catch (Exception ex) { return(Ok(new { StatusCode = 0, message = "生成失败" })); } #endregion }