Exemple #1
0
        public UserSession SetUserSesion(string openId, string userName,
                                         string headerUrl, string phone,
                                         CourseScheduleType currentScheduleType,
                                         UserRole userRole,
                                         MemberType memberType,
                                         bool courseSkipToday,
                                         EUserAccount userAccount)
        {
            UserSession session = new UserSession()
            {
                OpenId                  = openId,
                UserName                = userName,
                HeaderUrl               = headerUrl,
                Phone                   = phone,
                CurrentScheduleType     = currentScheduleType,
                CurrentScheduleTypeName = BaseEnumSrv.GetCourseScheduleTypeName(currentScheduleType),
                MemeberType             = memberType,
                UserRole                = userRole,
                CourseSkipToday         = courseSkipToday,
                UserAccount             = userAccount
            };

            var json = JsonConvert.SerializeObject(session);

            HttpContext.Session.SetString(EduConstant.UserSessionKey, json);

            return(session);
        }
        public EOrder PayCourseOrder(string userOpenId, ECoursePrice coursePrice)
        {
            try
            {
                //  BeginTrans();


                //检查用户是否已经购买暑假寒假
                if (coursePrice.CourseScheduleType == CourseScheduleType.Summer ||
                    coursePrice.CourseScheduleType == CourseScheduleType.Winter)
                {
                    var sql = from o in _dbContext.DBOrder
                              join l in _dbContext.DBOrderLine on o.OrderId equals l.OrderId
                              where o.OrderStatus == OrderStatus.PaySuccess && o.CustOpenId == userOpenId &&
                              l.ItemCode == coursePrice.PriceCode
                              select o.OrderId;

                    var item = sql.FirstOrDefault();
                    if (item != null)
                    {
                        var cstName = BaseEnumSrv.GetCourseScheduleTypeName(coursePrice.CourseScheduleType);
                        throw new EduException($"[{cstName}]只能购买一次,您已购买过");
                    }
                }

                //创建购买课时的订单
                var Order = CreateBuyCourseOrder(userOpenId, coursePrice);

                _dbContext.SaveChanges();

                //  CommitTrans();

                return(Order);
            }
            catch (Exception ex)
            {
                //  RollBackTrans();

                throw ex;
            }
        }
        /// <summary>
        /// VIP 扣减课时,根据传入的班类,如果假期班,有假期班课时,则扣,不然扣标准版
        ///
        /// </summary>
        /// <param name="openId"></param>
        /// <param name="memberType"></param>
        /// <param name="courseScheduleType"></param>
        /// <param name="lessonCode"></param>
        /// <param name="signDate"></param>
        /// <param name="needSave"></param>
        /// <returns></returns>
        public EUserCourseLog UpdateCourseLogToSigned(string openId,
                                                      MemberType memberType,
                                                      CourseScheduleType courseScheduleType,
                                                      string lessonCode,
                                                      DateTime signDate,
                                                      string signOpenId = "",
                                                      bool skipLeave    = true, //不管是否请假都签到
                                                      bool needSave     = true)
        {
            var date = signDate.ToString("yyyy-MM-dd");



            var log = _dbContext.DBUserCourseLog.Where(a => a.UserOpenId == openId &&
                                                       a.LessonCode == lessonCode &&
                                                       a.CourseDateTime == date).FirstOrDefault();

            if (log == null)
            {
                log = new EUserCourseLog
                {
                    CourseDateTime     = date,
                    CourseScheduleType = courseScheduleType,
                    CreatedDateTime    = DateTime.Now,
                    LessonCode         = lessonCode,
                    UserSignDateTime   = DateTime.Now,
                    UserOpenId         = openId
                };

                _dbContext.DBUserCourseLog.Add(log);
            }
            else
            {
                if (log.UserCourseLogStatus != UserCourseLogStatus.PreNext)
                {
                    if (log.UserCourseLogStatus == UserCourseLogStatus.Leave && !skipLeave)
                    {
                        return(log);
                    }
                }
            }
            //更新用户课时
            if ((int)log.UserCourseLogStatus < 10)
            {
                int result = UpdateUserCourseTimeOnce(openId, memberType, courseScheduleType);
                if (result == -1)
                {
                    string courseScheduleTypeName = BaseEnumSrv.GetCourseScheduleTypeName(courseScheduleType);
                    throw new EduException($"您的[{courseScheduleTypeName}]课时已用完,请先充值!", EduErrorMessage.NoCourseTime);
                }
            }



            EUserInfo signUser = null;

            if (string.IsNullOrEmpty(signOpenId))
            {
                signUser = _dbContext.DBUserInfo.Where(a => a.OpenId == signOpenId).FirstOrDefault();
            }

            if (signUser != null)
            {
                log.SignOpenId = signUser.OpenId;

                if (signUser.UserRole == UserRole.Member)
                {
                    log.SignName = signUser.ChildName;
                }
                else if (signUser.UserRole == UserRole.Teacher)
                {
                    log.SignName = signUser.RealName;
                }
            }
            else
            {
                log.SignName = "系统签到";
            }

            log.UserCourseLogStatus = UserCourseLogStatus.SignIn;
            log.UserSignDateTime    = DateTime.Now;

            if (needSave)
            {
                _dbContext.SaveChanges();
            }
            return(log);
        }
Exemple #4
0
        public IActionResult OnPostInitData()
        {
            ResultObject <PMyCourse> result = new ResultObject <PMyCourse>();

            try
            {
                var us = GetUserSession(false);
                if (us != null)
                {
                    CourseScheduleType courseScheduleType = _UserSrv.GetCurrentCourseScheduleType(us.OpenId, us.MemeberType);
                    var needRecharge = UserSession.NeedRecharge(us, courseScheduleType);
                    if (needRecharge < 0)
                    {
                        var    csTypeName = BaseEnumSrv.GetCourseScheduleTypeName(courseScheduleType);
                        string errorMsg   = $"您的{csTypeName}余额不足,请先去充值";
                        if (needRecharge == -2)
                        {
                            errorMsg = $"您的余额不足,请先去充值";
                        }
                        result.ErrorMsg = errorMsg;
                        result.IntMsg   = -2;
                        return(new JsonResult(result));
                    }

                    //VIP用户课程(不管暑假寒假)
                    if (us.MemeberType == MemberType.VIP)
                    {
                        result.Entity.UserCourseList = _UserSrv.GetUserCourseAvaliable(us.OpenId);
                    }
                    else
                    {
                        //普通用户 先看是否有标准课,如果有标准课,全部放开。
                        if (us.UserAccount.RemainCourseTime > 0)
                        {
                            result.Entity.UserCourseList = _UserSrv.GetUserCourseAvaliable(us.OpenId);
                        }
                        else
                        {
                            //如果无标准课,则显示暑假,寒假课
                            result.Entity.UserCourseList = _UserSrv.GetUserCourseAvaliable(us.OpenId, (int)courseScheduleType);
                        }
                    }
                    result.IntMsg = (int)courseScheduleType;
                    //获取用户最近课程
                    if (result.Entity.UserCourseList.Count > 0)
                    {
                        DateTime startDate = DateTime.Now;
                        if (us.CourseSkipToday)
                        {
                            startDate = startDate.AddDays(1);
                        }
                        result.Entity.UserShowCourse = _UserSrv.GetNextUserCourse(result.Entity.UserCourseList, startDate);
                    }
                }
                else
                {
                    result.IntMsg   = -1;
                    result.ErrorMsg = "需要重新登陆";
                }
            }
            catch (Exception ex)
            {
                result.ErrorMsg = "未能获取数据!请联系客服或稍后再试";
                NLogHelper.ErrorTxt(ex.Message);
            }
            return(new JsonResult(result));
        }
        public IActionResult OnPostSubmit(List <string> lessonCodeList, bool useRightNow = false)
        {
            ResultNormal       result             = new ResultNormal();
            CourseScheduleType courseScheduleType = CourseScheduleType.Summer;

            try
            {
                var us = base.GetUserSession(false);
                if (us != null)
                {
                    var needRecharge = UserSession.NeedRecharge(us, courseScheduleType);
                    if (needRecharge < 0)
                    {
                        var    csTypeName = BaseEnumSrv.GetCourseScheduleTypeName(courseScheduleType);
                        string errorMsg   = $"您的{csTypeName}余额不足,请先去充值";
                        if (needRecharge == -2)
                        {
                            errorMsg = $"您的余额不足,请先去充值";
                        }
                        result.ErrorMsg = errorMsg;
                        result.IntMsg   = -2;
                        return(new JsonResult(result));
                    }

                    List <EUserCourse> ucList = new List <EUserCourse>();
                    foreach (var lc in lessonCodeList)
                    {
                        EUserCourse uc = new EUserCourse
                        {
                            CourseScheduleType = courseScheduleType,
                            CreateDateTime     = DateTime.Now,
                            LessonCode         = lc,
                            UseRightNow        = useRightNow,
                            UserOpenId         = us.OpenId
                        };
                        ucList.Add(uc);
                    }
                    _BusinessSrv.UserSelectNewCourses(us.OpenId, ucList, courseScheduleType, useRightNow);
                    //更新Session是否跳过当天
                    us.CourseSkipToday = useRightNow;

                    us.CurrentScheduleType = StaticDataSrv.CurrentScheduleType;
                    SetUserSesion(us);
                }
                else
                {
                    result.IntMsg   = -1;
                    result.ErrorMsg = "请重新登陆";
                }
            }
            catch (EduException ex)
            {
                result.ErrorMsg = ex.Message;
            }
            catch (Exception ex)
            {
                result.ErrorMsg = "提交数据错误!请联系管理员或稍后再试";
                NLogHelper.ErrorTxt($"标准班课程选择[OnPostSubmit]:{ex.Message}");
            }
            return(new JsonResult(result));
        }