Example #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);
        }
Example #2
0
        private void WXLoginCallBack(EUserInfo ui)
        {
            var userAccount = _UserSrv.GetUserAccount(ui.OpenId);

            CourseScheduleType courseScheduleType = _UserSrv.GetCurrentCourseScheduleType(ui.OpenId, ui.MemberType);

            bool isSkipTodayCourse = _UserSrv.IsSkipTodayUserCourse(ui.OpenId);

            base.SetUserSesion(ui.OpenId, ui.Name, ui.wx_headimgurl, ui.Phone, courseScheduleType, ui.UserRole, ui.MemberType, isSkipTodayCourse, userAccount);
        }
Example #3
0
        /// <summary>
        /// /获取订单行,更新课时
        /// </summary>
        /// <param name="userOpenId"></param>
        /// <param name="line"></param>
        private EUserAccount UpdateUserAccountByOrderLine(string userOpenId, EOrderLine line)
        {
            EUserAccount userAccount = _dbContext.DBUserAccount.Where(a => a.UserOpenId == userOpenId).FirstOrDefault();

            if (userAccount == null)
            {
                UserSrv userSrv = new UserSrv(_dbContext);
                userAccount = userSrv.CreateNewUserAccount(userOpenId);
            }

            CourseScheduleType courseScheduleType = (CourseScheduleType)line.Ext1;
            ECourseDateRange   dr = null;

            switch (courseScheduleType)
            {
            case CourseScheduleType.Standard:
            case CourseScheduleType.VIP:
                userAccount.RemainCourseTime += line.Qty;
                if (userAccount.BuyDate == DateTime.MinValue)
                {
                    userAccount.BuyDate = DateTime.Now;
                }
                if (userAccount.DeadLine == DateTime.MinValue)
                {
                    userAccount.DeadLine = DateTime.Now;
                }
                userAccount.DeadLine = userAccount.DeadLine.AddYears(1);

                break;

            case CourseScheduleType.Summer:
                userAccount.RemainSummerTime += line.Qty;
                dr = StaticDataSrv.CourseDateRange.Where(a => a.CourseScheduleType == CourseScheduleType.Summer && a.Year == DateTime.Now.Year).FirstOrDefault();

                userAccount.SummerDeadLine = dr.EndDate;

                if (userAccount.SummerBuyDate == DateTime.MinValue)
                {
                    userAccount.SummerBuyDate = DateTime.Now;
                }

                break;

            case CourseScheduleType.Winter:
                userAccount.RemainWinterTime += line.Qty;
                dr = StaticDataSrv.CourseDateRange.Where(a => a.CourseScheduleType == CourseScheduleType.Winter && a.Year == DateTime.Now.Year).FirstOrDefault();
                userAccount.WinterDeadLine = dr.EndDate;
                if (userAccount.WinterBuyDate == DateTime.MinValue)
                {
                    userAccount.WinterBuyDate = DateTime.Now;
                }
                break;
            }
            return(userAccount);
        }
Example #4
0
        public List <EUserCourse> CreateNewCourse(string openId, string lessonCode, CourseScheduleType courseScheduleType)
        {
            EUserCourse eUserCourse = new EUserCourse
            {
                CourseScheduleType = courseScheduleType,
                CreateDateTime     = DateTime.Now,
                LessonCode         = lessonCode,
                UserOpenId         = openId,
                UseRightNow        = false,
            };
            List <EUserCourse> list = new List <EUserCourse>();

            list.Add(eUserCourse);

            return(list);
        }
Example #5
0
 public static int NeedRecharge(UserSession us, CourseScheduleType courseScheduleType)
 {
     if (us.MemeberType != MemberType.VIP)
     {
         if (courseScheduleType == CourseScheduleType.Summer && us.UserAccount.RemainSummerTime <= 0)
         {
             return(-1);
         }
         else if (courseScheduleType == CourseScheduleType.Winter && us.UserAccount.RemainWinterTime <= 0)
         {
             return(-1);
         }
         else
         {
             if (courseScheduleType == CourseScheduleType.Standard && us.UserAccount.RemainCourseTime <= 0)
             {
                 return(-1);
             }
         }
     }
     else
     {
         if (courseScheduleType == CourseScheduleType.Summer && us.UserAccount.RemainSummerTime <= 0 &&
             us.UserAccount.RemainCourseTime <= 0)
         {
             return(-2);
         }
         else if (courseScheduleType == CourseScheduleType.Winter && us.UserAccount.RemainWinterTime <= 0 &&
                  us.UserAccount.RemainCourseTime <= 0)
         {
             return(-2);
         }
         else
         {
             if (courseScheduleType == CourseScheduleType.Standard && us.UserAccount.RemainCourseTime <= 0)
             {
                 return(-2);
             }
         }
     }
     return(0);
 }
Example #6
0
        public static string GetCourseScheduleTypeName(CourseScheduleType courseScheduleType)
        {
            switch (courseScheduleType)
            {
            case CourseScheduleType.Group:
                return("团购课");

            case CourseScheduleType.Standard:
                return("标准课");

            case CourseScheduleType.Summer:
                return("暑假班");

            case CourseScheduleType.Winter:
                return("寒假班");

            case CourseScheduleType.SummerWinter:
                return("寒暑假班");
            }
            return("");
        }
Example #7
0
        public IActionResult OnPostGet(int year, CourseScheduleType scheduleType)
        {
            ResultObject <PPlan> result = new ResultObject <PPlan>();

            try
            {
                ECourseDateRange dr = StaticDataSrv.CourseDateRange.Where(a => a.CourseScheduleType == scheduleType && a.Year == year).FirstOrDefault();
                result.Entity.PlanInfo = "";
                if (dr != null)
                {
                    result.Entity.PlanInfo = $"{dr.Year} {dr.CourseDateRangeName}: {dr.StartDate.ToString("MM月dd日")} 到 {dr.EndDate.ToString("MM月dd日")}";
                }

                result.Entity.CourseScheduleList = _CourseSrv.GetCourseScheduleByYearType(year, scheduleType);
            }
            catch (Exception ex)
            {
                result.ErrorMsg = ex.Message;
            }

            return(new JsonResult(result));
        }
Example #8
0
 //删除用户课程,并创建新课程
 public void AdjustUserCourse(string openId, string fromLessonCode, string toLessonCode, CourseScheduleType courseScheduleType, bool isAdmin = false)
 {
     try
     {
         bool isDelete = false;
         try
         {
             isDelete = DeleteUserCourse(openId, fromLessonCode);
         }
         catch (Exception ex)
         {
             throw ex;
         }
         if (isDelete)
         {
             UserSelectNewCourses(openId, toLessonCode, courseScheduleType, true, true);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Example #9
0
        public void UserSelectNewCourses(string openId, string lessonCode, CourseScheduleType courseScheduleType, bool useRightNow = false, bool isAdmin = false)
        {
            var list = CreateNewCourse(openId, lessonCode, courseScheduleType);

            UserSelectNewCourses(openId, list, courseScheduleType, useRightNow, isAdmin);
        }
Example #10
0
        /// <summary>
        /// 新建课时交易
        /// </summary>
        /// <param name="line"></param>
        //private void AddCourseTimeTransByLine(EOrderLine line)
        //{
        //    EUserCourseTimeTrans trans = new EUserCourseTimeTrans
        //    {
        //        CourseScheduleType = (CourseScheduleType)line.Ext1,
        //        TransQty = line.Qty,
        //        UserOpenId = line.OrderId,
        //        CoursePriceCode = line.ItemCode,
        //        TransDateTime = DateTime.Now,

        //    };
        //    _dbContext.DBUserCourseTimeTrans.Add(trans);
        //}

        #endregion

        #region 用户课程

        /// <summary>
        /// 用户选择课程
        /// </summary>
        /// <param name="courseList"></param>
        public void UserSelectNewCourses(string openId, List <EUserCourse> courseList, CourseScheduleType courseScheduleType, bool useRightNow = false, bool isAdmin = false)
        {
            try
            {
                BeginTrans();
                if (courseList.Count > 0)
                {
                    UserSrv userSrv = new UserSrv(_dbContext);
                    TecSrv  tecSrv  = new TecSrv(_dbContext);
                    //不是后台选择,且选择已满
                    if (!isAdmin && !userSrv.CheckUserCanSelectCourse(openId, courseScheduleType))
                    {
                        throw new EduException("无法选择,您已经选择过此类课程!,如果疑问,请联系客服");
                    }
                    else
                    {
                        foreach (var c in courseList)
                        {
                            if (userSrv.CheckUserHasThisCourse(openId, c.LessonCode))
                            {
                                c.CourseScheduleType = courseScheduleType;
                                continue;
                            }


                            c.UserOpenId  = openId;
                            c.UseRightNow = useRightNow;

                            //更新课程总人数
                            var cs = _dbContext.DbCourseSchedule.Where(a => a.LessonCode == c.LessonCode).FirstOrDefault();
                            cs.ApplyNum++;

                            //获取课程对应的老师
                            var cls     = _dbContext.DBCourseInfoClass.Where(s => s.CourseCode == cs.CourseCode).FirstOrDefault();
                            var tecCode = cls.TecCode;

                            //更新老师课程
                            tecSrv.UpdateTecCourse(tecCode, cs, DateTime.Now, useRightNow);

                            //添加用户课程
                            userSrv.AddUserCourse(c);
                        }

                        userSrv.UpdateCanSelectCourse(openId, courseScheduleType, false);
                    }
                    _dbContext.SaveChanges();

                    userSrv.AddNextCourseLog(openId, false);

                    CommitTrans();
                }
            }
            catch (Exception ex)
            {
                RollBackTrans();

                throw ex;
            }
        }
        public IActionResult OnPostGetCourseScheduleList(int year, int day, int lesson, CourseScheduleType courseScheduleType)
        {
            ResultList <SCourseSchedule> result = new ResultList <SCourseSchedule>();

            try
            {
                result.List = _CourseSrv.GetCourseSchedule_ForSelection(year, day, lesson);
            }
            catch (Exception ex)
            {
                result.ErrorMsg = 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));
        }
Example #13
0
 public List <ECourseSchedule> GetCourseScheduleByYearType(int year, CourseScheduleType scheduleType)
 {
     return(_dbContext.DbCourseSchedule.Where(a => a.Year == year && a.CourseScheduleType == scheduleType).ToList());
 }
Example #14
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));
        }
Example #15
0
        /// <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);
        }
Example #16
0
        /// <summary>
        ///根据传入的班类,如果是假期班,有假期班课时则扣减假期班,没则扣标准班
        /// </summary>
        /// <param name="openId"></param>
        /// <param name="memberType"></param>
        /// <param name="courseScheduleType"></param>
        /// <returns>返回-1 用户余额不足</returns>
        public int UpdateUserCourseTimeOnce(string openId, MemberType memberType, CourseScheduleType courseScheduleType)
        {
            EUserAccount result     = _dbContext.DBUserAccount.Where(a => a.UserOpenId == openId).FirstOrDefault();
            double       reduceTime = 2;

            if (result.ReduceTime > 0)
            {
                reduceTime = result.ReduceTime;
            }

            switch (courseScheduleType)
            {
            case CourseScheduleType.Summer:
                if (result.RemainSummerTime == 0)
                {
                    if (result.RemainCourseTime == 0)
                    {
                        return(-1);
                    }
                    else
                    {
                        result.RemainCourseTime -= reduceTime;
                    }
                }
                else
                {
                    result.RemainSummerTime -= reduceTime;
                }
                break;

            case CourseScheduleType.Winter:
                if (result.RemainWinterTime == 0)
                {
                    if (result.RemainCourseTime == 0)
                    {
                        return(-1);
                    }
                    else
                    {
                        result.RemainCourseTime -= reduceTime;
                    }
                }
                else
                {
                    result.RemainWinterTime -= reduceTime;
                }
                break;

            default:
                if (result.RemainCourseTime == 0)
                {
                    return(-1);
                }
                else
                {
                    result.RemainCourseTime -= reduceTime;
                }
                break;
            }

            //if(memberType == MemberType.Normal)
            //{
            //    switch (courseScheduleType)
            //    {
            //        case CourseScheduleType.Summer:
            //            if (result.RemainSummerTime == 0) return -1;
            //            else result.RemainSummerTime -= 2;
            //            break;
            //        case CourseScheduleType.Winter:
            //            if (result.RemainWinterTime == 0) return -1;
            //            else result.RemainWinterTime -= 2;
            //            break;
            //        default:
            //            if (result.RemainCourseTime == 0) return -1;
            //            else result.RemainCourseTime -= 2;
            //            break;

            //    }
            //}
            //else
            //{

            //}

            return(0);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="openId"></param>
        /// <param name="LessonCode">选择后的用户课程</param>
        /// <param name="origUserCourseId">之前的用户课程Id</param>
        /// <param name="courseScheduleType"></param>
        /// <returns></returns>
        public IActionResult OnPostSaveUserCourse(string openId, string lessonCode, long origUserCourseId, CourseScheduleType courseScheduleType)
        {
            ResultObject <EUserCourse> result = new ResultObject <EUserCourse>();

            try
            {
                if (origUserCourseId == 0)
                {
                    _BusinessSrv.UserSelectNewCourses(openId, lessonCode, courseScheduleType, true, true);
                }
                else
                {
                    var origUserCoures = _UserSrv.GetUserCouresById(origUserCourseId);
                    //也许只是假期版和标准版切换
                    if (origUserCoures.LessonCode == lessonCode)
                    {
                        _UserSrv.SwitchUserCourseScheduleType(openId, lessonCode, courseScheduleType);
                    }
                    else
                    {
                        //删除老课程
                        //创建新课程
                        _BusinessSrv.AdjustUserCourse(openId, origUserCoures.LessonCode, lessonCode, courseScheduleType, true);
                    }
                }

                result.Entity = _UserSrv.GetUserCouresByCode(lessonCode);
            }
            catch (Exception ex)
            {
                result.ErrorMsg = ex.Message;
            }
            return(new JsonResult(result));
        }