/// <summary> /// 把購物車裏面每一筆資料轉換成對應的OrderDetail,用來做購買完成下定單的動作。 /// </summary> /// <param name="order">主要爲了Order的Id,這樣OrderDetail才知道對應那個</param> /// <returns>傳回這一筆Order的總金額</returns> public decimal ShoppingCartToOrderDetails(Order order) { var cartItems = GetShoppingCartItems(); decimal totalPrice = 0; foreach (var item in cartItems) { var orderDetail = new OrderDetial() { MealId = item.MealId, OrderId = order.OrderId, Quantity = item.Quantity, UnitPrice = item.UnitPrice }; totalPrice += (orderDetail.UnitPrice * orderDetail.Quantity); orderDetailRepo.Insert(orderDetail); } orderDetailRepo.SaveChanges(); EmptyCart(); return(totalPrice); }
public OrderDetial Map(GetOrderQueryResult detial) { var result = new OrderDetial { Volume = detial.Volume, Exchange = detial.Exchange, TotalAmount = detial.TotalAmount, Id = detial.Id, PairSymbols = detial.PairSymbols, Price = detial.Price, Status = detial.Status, Type = detial.Type }; return(result); }
public void Update(OrderDetial item) { _databaseInstance.Update(item, TableName); }
public void Create(OrderDetial item) { item.id = _databaseInstance.Insert(item, TableName); }
public ActionResult CardPlaceOrder(int accountTypeId, int userCouponsId = 0) { var accountType = accountTypeService.GetById(accountTypeId); if (accountType == null) { return(Json(new ResultMessage() { Code = -1, Msg = "你要购买得卡不存在" })); } if (accountType.State != AccountTypeStates.Normal) { return(Json(new ResultMessage() { Code = -1, Msg = "此卡已下架,请选择购买其他卡" })); } int userId = 0; var cookieId = Request.Cookies[SessionKeys.USERID].Value.ToString(); int.TryParse(cookieId, out userId); var user = membershipService.GetUserById(userId) as AccountUser; if (user == null) { return(Json(new ResultMessage() { Code = -1, Msg = "用户不存在" })); } decimal price = accountType.Amount; //卡单价 string orderNo = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now) + userId; decimal deductible = 0; //优惠卷抵扣金额 decimal discount = 0; //折扣 string useScope = ""; //指定门店 int couponId = 0; //优惠卷id decimal amount = price; UserCoupons userCoupons = null; if (userCouponsId > 0) { userCoupons = userCouponsService.GetById(userCouponsId); if (userCoupons == null) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷不存在" })); } if (userCoupons.state != UserCouponsState.NotUse) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷已失效" })); } if (userCoupons.userId != userId) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷不可用" })); } var coupon = couponsService.GetById(userCoupons.couponsId); if (coupon == null && coupon.state != CouponsState.Normal) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷不存在" })); } if (coupon.validity.HasValue && coupon.validity > DateTime.Now.Date) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷已过期" })); } if (coupon.couponsType == CouponsType.DiscountedVolume) { discount = coupon.discount; deductible = amount - (discount * amount); } else if (coupon.couponsType == CouponsType.FullVolumeReduction) { if (amount >= coupon.fullAmount) { deductible = coupon.reduceAmount; } } else if (coupon.couponsType == CouponsType.OffsetRoll) { deductible = coupon.deductibleAmount; } useScope = coupon.useScope; couponId = coupon.id; } var order = new Orders(); order.amount = price; order.orderNo = orderNo; order.deductible = deductible; order.orderState = OrderStates.awaitPay; order.payAmount = order.amount - deductible; order.subTime = DateTime.Now; order.type = OrderTypes.card; order.userId = userId; order.useScope = useScope; var orderDetial = new OrderDetial(); orderDetial.amount = price; orderDetial.cardNo = ""; orderDetial.num = 1; orderDetial.orderNo = orderNo; orderDetial.sourceId = accountType.AccountTypeId; orderDetial.subTime = DateTime.Now; var tran = transactionHelper.BeginTransaction(); try { ordersService.Create(order); orderDetialService.Create(orderDetial); if (couponId > 0) { var useCouponslog = new UseCouponslog(); useCouponslog.amount = deductible; useCouponslog.couponsId = couponId; useCouponslog.discount = discount; useCouponslog.orderNo = orderNo; useCouponslog.userId = userId; useCouponslog.useTime = DateTime.Now; useCouponslogService.Create(useCouponslog); if (userCoupons != null) { userCoupons.state = UserCouponsState.Used; userCouponsService.Update(userCoupons); } } //微信支付 JsApiPay jsApiPay = new JsApiPay(); jsApiPay.openid = user.openId; jsApiPay.total_fee = (int)(order.payAmount * 100); WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(order.orderNo); string wxJsApiParam = jsApiPay.GetJsApiParameters();//获取H5调起JS API参数 WxPayAPI.Log.Debug(this.GetType().ToString(), "wxJsApiParam : " + wxJsApiParam); tran.Commit(); return(Json(new ResultMessage() { Code = 0, Msg = wxJsApiParam })); //return Json(new ResultMessage() { Code = 0, Msg = "" }); } catch (Exception ex) { WxPayAPI.Log.Error(this.GetType().ToString(), ex.Message.ToString()); return(Json(new ResultMessage() { Code = -1, Msg = ex.Message.ToString() })); //Response.Write("<span style='color:#FF0000;font-size:20px'>" + "下单失败,请返回重试" + "</span>"); //submit.Visible = false; } finally { tran.Dispose(); } }
public ActionResult TicketPlaceOrders(string admissionTicketIds, string nums, int userCouponsId = 0) { var arrId = admissionTicketIds.Split(','); var arrNum = nums.Split(','); int userId = 0; var cookieId = Request.Cookies[SessionKeys.USERID].Value.ToString(); int.TryParse(cookieId, out userId); var user = membershipService.GetUserById(userId) as AccountUser; if (user == null) { return(Json(new ResultMessage() { Code = -1, Msg = "用户不存在" })); } if (arrId.Length != arrNum.Length) { return(Json(new ResultMessage() { Code = -1, Msg = "购买异常,请刷出后购买" })); } List <OrderDetial> OrderDetials = new List <OrderDetial>(); string orderNo = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now) + userId; decimal amount = 0; //总价格 for (int i = 0; i < arrId.Length; i++) { int admissionTicketId = string.IsNullOrWhiteSpace(arrId[i]) ? 0 : Int32.Parse(arrId[i]); int num = string.IsNullOrWhiteSpace(arrNum[i]) ? 0 : Int32.Parse(arrNum[i]); if (admissionTicketId <= 0 && num <= 0) { return(Json(new ResultMessage() { Code = -1, Msg = "购买异常,请刷出后购买" })); } var admissionTicket = admissionTicketService.GetById(admissionTicketId); if (admissionTicket == null) { return(Json(new ResultMessage() { Code = -1, Msg = "门票不存在" })); } if (admissionTicket.state != AdmissionTicketState.Normal) { return(Json(new ResultMessage() { Code = -1, Msg = "" + admissionTicket.name + "已下架,请选择购买其他门票" })); } decimal price = 0;//门票单价 if (DateHelper.m_IsWorkingDay()) { price = admissionTicket.amount; } else { price = admissionTicket.weekendAmount; } var orderDetial = new OrderDetial(); orderDetial.amount = price; orderDetial.cardNo = ""; orderDetial.num = num; orderDetial.orderNo = orderNo; orderDetial.sourceId = admissionTicket.id; orderDetial.subTime = DateTime.Now; OrderDetials.Add(orderDetial); amount += (price * num); } decimal deductible = 0; //优惠卷抵扣金额 decimal discount = 0; //折扣 string useScope = ""; //指定门店 int couponId = 0; //优惠卷id UserCoupons userCoupons = null; if (userCouponsId > 0) { userCoupons = userCouponsService.GetById(userCouponsId); if (userCoupons == null) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷不存在" })); } if (userCoupons.state != UserCouponsState.NotUse) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷已失效" })); } if (userCoupons.userId != userId) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷不可用" })); } var coupon = couponsService.GetById(userCoupons.couponsId); if (coupon == null && coupon.state != CouponsState.Normal) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷不存在" })); } if (coupon.validity.HasValue && coupon.validity > DateTime.Now.Date) { return(Json(new ResultMessage() { Code = -1, Msg = "优惠卷已过期" })); } if (coupon.couponsType == CouponsType.DiscountedVolume) { discount = coupon.discount; deductible = amount - (discount * amount); } else if (coupon.couponsType == CouponsType.FullVolumeReduction) { if (amount >= coupon.fullAmount) { deductible = coupon.reduceAmount; } } else if (coupon.couponsType == CouponsType.OffsetRoll) { deductible = coupon.deductibleAmount; } useScope = coupon.useScope; couponId = coupon.id; } var order = new Orders(); order.amount = amount; order.orderNo = orderNo; order.deductible = deductible; order.orderState = OrderStates.awaitPay; order.payAmount = amount - deductible; order.subTime = DateTime.Now; order.type = OrderTypes.ticket; order.userId = userId; order.useScope = useScope; var tran = transactionHelper.BeginTransaction(); try { ordersService.Create(order); foreach (var orderDetial in OrderDetials) { orderDetialService.Create(orderDetial); } if (couponId > 0) { var useCouponslog = new UseCouponslog(); useCouponslog.amount = deductible; useCouponslog.couponsId = couponId; useCouponslog.discount = discount; useCouponslog.orderNo = orderNo; useCouponslog.userId = userId; useCouponslog.useTime = DateTime.Now; useCouponslogService.Create(useCouponslog); if (userCoupons != null) { userCoupons.state = UserCouponsState.Used; userCouponsService.Update(userCoupons); } } JsApiPay jsApiPay = new JsApiPay(); jsApiPay.openid = user.openId; jsApiPay.total_fee = (int)(order.payAmount * 100); string APPID = WxPayConfig.APPID; WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(order.orderNo); string wxJsApiParam = jsApiPay.GetJsApiParameters();//获取H5调起JS API参数 WxPayAPI.Log.Debug(this.GetType().ToString(), "wxJsApiParam : " + wxJsApiParam); tran.Commit(); return(Json(new ResultMessage() { Code = 0, Msg = wxJsApiParam })); //在页面上显示订单信息 //Response.Write("<span style='color:#00CD00;font-size:20px'>订单详情:</span><br/>"); //Response.Write("<span style='color:#00CD00;font-size:20px'>" + unifiedOrderResult.ToPrintStr() + "</span>"); } catch (Exception ex) { WxPayAPI.Log.Error(this.GetType().ToString(), ex.Message.ToString()); return(Json(new ResultMessage() { Code = -1, Msg = ex.Message.ToString() })); //Response.Write("<span style='color:#FF0000;font-size:20px'>" + "下单失败,请返回重试" + "</span>"); //submit.Visible = false; } finally { tran.Dispose(); } }