示例#1
0
        /// <summary>
        /// 订单详情页-付款页
        /// 如果订单超时未支付,再次购买时,不用考虑上个订单是不是从点击广告来的。
        /// </summary>
        /// <param name="id">订单Id</param>
        /// <returns></returns>
        public ActionResult Payment(int id = 0)
        {
            if (id == 0)
            {
                //跳转到订单列表页
                return(RedirectToAction("OwnOrderList"));
            }
            int studentId = GetCurrentUser().StudentId;

            StudentOrderBll            studentOrderBll   = new StudentOrderBll();
            DtoSelectCenterOrderResult courseOrderResult = studentOrderBll.GetOrderInfoForPayment(studentId, id);

            if (courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.待支付) || courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.支付中))
            {
                PaymentViewModel model = courseOrderResult.ConvertTo <PaymentViewModel>();
                if (string.IsNullOrEmpty(model.CourseImage))
                {
                    model.CourseImage = defaultCourseImg;
                }
                return(View(model));
            }
            else
            {
                return(RedirectToAction("OrderDetail", new { id = courseOrderResult.OrderId }));
            }
        }
示例#2
0
        /// <summary>
        /// 订单详情页
        /// </summary>
        /// <param name="id">订单Id</param>
        /// <returns></returns>
        public ActionResult OrderDetail(int id = 0)
        {
            if (id == 0)
            {
                //跳转到订单列表页
                return(RedirectToAction("OwnOrderList"));
            }
            int studentId = GetCurrentUser().StudentId;

            StudentOrderBll            studentOrderBll   = new StudentOrderBll();
            DtoSelectCenterOrderResult courseOrderResult = studentOrderBll.GetOrderInfoForDetail(studentId, id);

            OrderDetailViewModel model = courseOrderResult.ConvertTo <OrderDetailViewModel>();
            decimal?baseVoucherAmount  = model.OrderVoucherPayList?.FirstOrDefault(v => v.PayType != (int)StudentOrderPaymnentTypeEnum.优惠券_校区券_支付)?.Amount;

            model.BaseVoucherAmount = baseVoucherAmount.HasValue ? baseVoucherAmount.Value : 0;
            decimal?schoolVoucherAmount = model.OrderVoucherPayList?.FirstOrDefault(v => v.PayType == (int)StudentOrderPaymnentTypeEnum.优惠券_校区券_支付)?.Amount;

            model.SchoolVoucherAmount = schoolVoucherAmount.HasValue ? schoolVoucherAmount.Value : 0;

            //防止用户未点击支付按钮,订单表没计算应付金额
            if (model.PayAmount == 0)
            {
                model.PayAmount = model.OrderAmount - model.BaseVoucherAmount - model.SchoolVoucherAmount;
                model.PayAmount = model.PayAmount > 0 ? model.PayAmount : 0;
            }

            if (model.OrderStatus == (int)StudentOrderStatus.待支付 || model.OrderStatus == (int)StudentOrderStatus.支付中 || model.OrderStatus == (int)StudentOrderStatus.已支付)
            {
                model.IsHaveThisCourse = true;
            }
            else
            {
                //查询用户是否已购买此课程
                var oriOrder = studentOrderBll.GetFinishOrder(studentId, model.CourseId);
                if (oriOrder != null && oriOrder.Yod_Id > 0)
                {
                    model.IsHaveThisCourse = true;
                }
                else
                {
                    model.IsHaveThisCourse = false;
                }
            }

            StudentInfoBll studentInfoBll = new StudentInfoBll();
            DtoStudentInfo student        = studentInfoBll.GetStudentInfo(studentId);
            Regex          regex          = new Regex(@"(\d{3})\d{4}(\d{4})");

            model.StudentAccount = regex.Replace(student.Bst_Phone, "$1****$2");
            model.SchoolName     = student.SchoolName;
            if (string.IsNullOrEmpty(model.CourseImage))
            {
                model.CourseImage = defaultCourseImg;
            }

            return(View(model));
        }
示例#3
0
 public DtoPreOrderPay PreOrderPay(int orderId, int studentId, int[] voucherIds, string ip, int paytype)
 {
     DtoPreOrderPay response = new DtoPreOrderPay();
     DtoSelectCenterOrderResult courseOrderResult = GetOrderInfoForPayment(studentId, orderId);
     if (courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.待支付) || courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.支付中))
     {
         //查询用户是否已购买此课程
         var oriOrder = GetFinishOrder(studentId, courseOrderResult.CourseId);
         if (oriOrder != null && oriOrder.Yod_Id > 0)
         {
             //已购买,不再生成付款码
             response.State = false;
             response.ErrorMsg = "你已购买此课程。";
         }
         else
         {
             if (CashPayTypeEnum.微信.Equals((CashPayTypeEnum)paytype))
             {
                 //支付二维码图片
                 byte[] qrImage = null;
                 bool isFreeOrder = false;
                 bool unifiedOrderResult = WechatOrderPay(orderId, studentId, voucherIds, ip, ref qrImage, ref isFreeOrder);
                 response.State = true;
                 response.IsFreeOrder = isFreeOrder;
                 if (unifiedOrderResult)
                 {
                     response.Base64Img = Convert.ToBase64String(qrImage);
                 }
                 else if (!isFreeOrder)
                 {
                     throw new AbhsException(ErrorCodeEnum.WechatPrePayError, AbhsErrorMsg.ConstWechatPrePayError);
                 }
             }
             else
             {
                 throw new AbhsException(ErrorCodeEnum.PayTypeError, AbhsErrorMsg.PayTypeError);
             }
         }
     }
     else if (courseOrderResult.OrderStatus.Equals((int)StudentOrderStatus.已支付))
     {
         response.State = false;
         response.ErrorMsg = "此订单已支付。";
     }
     else
     {
         response.State = false;
         response.ErrorMsg = "此订单已超时。";
     }
     return response;
 }
示例#4
0
        public DtoSelectCenterOrderResult GetOrderInfoForDetail(int studentId, int orderId)
        {
            Yw_StudentOrder order = GetStudentOrder(orderId);

            if (order.Yod_StudentId.Equals(studentId))
            {
                CourseBll courseBll = new CourseBll();
                Yw_Course course = courseBll.GetCourse(order.Yod_CourseId);

                DtoSelectCenterOrderResult result = new DtoSelectCenterOrderResult();
                result.StudentId = order.Yod_StudentId;
                result.CourseId = course.Ycs_Id;
                result.CourseName = course.Ycs_Name;
                result.CourseImage = course.Ycs_CoverImage.ToOssPath();
                result.Grade = course.Ycs_Grade;
                result.CourseType = course.Ycs_CourseType;
                result.LessonCount = course.Ycs_LessonCount;
                result.Description = course.Ycs_Description;
                result.OrderId = order.Yod_Id;
                result.OrderAmount = order.Yod_Amount;
                result.PayAmount = order.Yod_PayAmount;
                result.OrderStatus = order.Yod_Status;
                result.OrderTime = order.Yod_OrderTime;
                result.OrderNo = order.Yod_OrderNo;

                List<DtoStudentOrderPay> orderPayList = Service.GetStudentOrderPay(order.Yod_Id, order.Yod_PayBatchId);
                result.OrderCashPay = orderPayList.FirstOrDefault(p => p.PayType < 200);
                result.OrderVoucherPayList = orderPayList.Where(p => p.PayType > 200).ToList();

                if (result.OrderCashPay != null)
                {
                    result.PayType = result.OrderCashPay.PayType - 100;
                    result.PayTime = result.OrderCashPay.PayTime;
                }

                return result;
            }
            else
            {
                throw new AbhsException(ErrorCodeEnum.NoAuthorize, AbhsErrorMsg.ConstNoAuthorizeViewOrder);
            }
        }
示例#5
0
        /// <summary>
        /// 选课中心订单详情页-支付页
        /// </summary>
        /// <param name="studentId">学生Id</param>
        /// <param name="orderId">订单Id</param>
        /// <returns></returns>
        public DtoSelectCenterOrderResult GetOrderInfoForPayment(int studentId, int orderId)
        {
            //获取订单信息
            //验证订单是否属于当前登录用户

            //根据订单Id查询课程信息(名称、图片、年级、课程类型、课时、描述、教材版本)
            //课程价格显示订单原始金额

            Yw_StudentOrder order = GetStudentOrder(orderId);

            if (order.Yod_StudentId.Equals(studentId))
            {
                CourseBll courseBll = new CourseBll();
                Yw_Course course = courseBll.GetCourse(order.Yod_CourseId);

                DtoSelectCenterOrderResult result = new DtoSelectCenterOrderResult();
                result.StudentId = order.Yod_StudentId;
                result.CourseId = course.Ycs_Id;
                result.CourseName = course.Ycs_Name;
                result.CourseImage = course.Ycs_CoverImage.ToOssPath();
                result.Grade = course.Ycs_Grade;
                result.CourseType = course.Ycs_CourseType;
                result.LessonCount = course.Ycs_LessonCount;
                result.Description = course.Ycs_Description;
                result.OrderId = order.Yod_Id;
                result.OrderAmount = order.Yod_Amount;
                result.OrderStatus = order.Yod_Status;
                result.OrderTime = order.Yod_OrderTime;
                result.OrderNo = order.Yod_OrderNo;
                return result;
            }
            else
            {
                throw new AbhsException(ErrorCodeEnum.NoAuthorize, AbhsErrorMsg.ConstNoAuthorizeViewOrder);
            }

        }