/// <summary>
        /// 课时学习视图
        /// </summary>
        /// <returns></returns>
        public ActionResult LessonStudy(int courseId, int lessonId)
        {
            StudentStudyBll bll = new StudentStudyBll();
            var             p   = bll.GetLastProgressByStudent(GetCurrentUser().StudentId, courseId, lessonId);

            if (p != null)
            {
                var     lesson  = new LessonBll().GetLesson(lessonId);//获取课程数据信息
                Chapter chapter = new Chapter()
                {
                    isApprove            = false,
                    lastTimeIsOver       = p.Yle_IsFinished || p.Yle_UnitIndex == 1,//如果已经完成或者从第一页开始,我们认为上次学习已经结束了
                    courseId             = p.Yle_CourseId,
                    lessonId             = p.Yle_LessonId,
                    lessonIndex          = lesson.Ycl_Index,
                    lessonProgressId     = p.Yle_Id,
                    progressKey          = p.Yle_key,
                    startAddGoldsPageNum = p.Yle_CoinFromUIndex,
                    startPageNum         = p.Yle_UnitIndex,
                    totalPageNum         = lesson.Ycl_UnitCount
                };
                return(View(chapter));
            }
            else
            {
                throw new Exception("课时数据错误");
            }
        }
        public ActionResult GetCoursesAttended(DtoCoursesSearch search)
        {
            search.StudentId = GetCurrentUser().StudentId;
            StudentStudyBll bll = new StudentStudyBll();
            IList <StudentPractice.DtoCourse> courses = bll.GetCoursesAttended(search);
            var result = courses.ConvertTo <IList <CourseListItemVm> >();

            var table = AbhsTableFactory.Create(result, search.Pagination.TotalCount);

            return(Json(table, JsonRequestBehavior.AllowGet));
        }
        public ActionResult CoruseInfo(int id)
        {
            StudentStudyBll            bll       = new StudentStudyBll();
            int                        studentid = GetCurrentUser().StudentId;
            StudentCourseInfoViewModel info      = bll.GetCourseProgress(studentid, id).ConvertTo <StudentCourseInfoViewModel>();

            info.TeacherImg = ConfigurationManager.AppSettings["OssHostUrl"] + info.TeacherImg;
            var list = bll.GetLessonProgressByStudent(studentid, id);

            info.StudiedLesson  = list.Where(s => s.IsStudyOver).ToList();
            info.NotStudyLesson = list.Where(s => !s.IsStudyOver).ToList();
            return(View(info));
        }
        public JsonResult GetLessons(int courseId)
        {
            StudentStudyBll bll  = new StudentStudyBll();
            var             list = bll.GetLessonProgressByStudent(GetCurrentUser().StudentId, courseId);

            return(Json(new JsonResponse <List <DtoStudentLessonInfo> >
            {
                State = true,
                ErrorCode = 0,
                ErrorMsg = "",
                Data = list
            }));
        }
        public JsonResult GetCourserCount()
        {
            StudentStudyBll bll  = new StudentStudyBll();
            var             data = bll.GetCourseCountByStudent(GetCurrentUser().StudentId);

            return(Json(new JsonResponse <object>
            {
                State = true,
                ErrorCode = 0,
                ErrorMsg = "",
                Data = new { totel = data.Item1, notFinish = data.Item2, finished = data.Item3 }
            }));
        }
 public void TestMethod2()
 {
     DtoStudentCourseSearch search = new DtoStudentCourseSearch()
     {
         IsFinished = false,
         Pagination = new Code.Common.PagingObject()
         {
             PageIndex  = 1,
             PageSize   = 10,
             TotalCount = 0
         },
         StudentId = 10000
     };
     StudentStudyBll bll  = new StudentStudyBll();
     var             data = bll.GetCourseProgressByStudentSearch(search);
     string          json = JsonConvert.SerializeObject(data);
 }
        public JsonResult GetCourseByPage(DtoStudentCourseSearch search)
        {
            search.StudentId = GetCurrentUser().StudentId;
            StudentStudyBll bll  = new StudentStudyBll();
            var             list = bll.GetCourseProgressByStudentSearch(search);

            list.ForEach(s =>
            {
                s.TeacherImg = ConfigurationManager.AppSettings["OssHostUrl"] + s.TeacherImg;
            });
            return(Json(new JsonResponse <object>
            {
                State = true,
                ErrorCode = 0,
                ErrorMsg = "",
                Data = new { totel = search.Pagination.TotalCount, list = list }
            }));
        }
        public JsonResult NewProgress(int courseId, int lessonId)
        {
            StudentStudyBll bll = new StudentStudyBll();
            var             p   = bll.GetNewProgressByStudent(GetCurrentUser().StudentId, courseId, lessonId);

            if (p != null)
            {
                return(Json(new JsonResponse <Chapter>
                {
                    State = true,
                    ErrorCode = 0,
                    ErrorMsg = "",
                    Data = new Chapter()
                    {
                        isApprove = false,
                        lastTimeIsOver = true,
                        courseId = p.Yle_CourseId,
                        lessonId = p.Yle_LessonId,
                        lessonIndex = p.Yle_LessonIndex,
                        lessonProgressId = p.Yle_Id,
                        progressKey = p.Yle_key,
                        startAddGoldsPageNum = p.Yle_CoinFromUIndex,
                        startPageNum = p.Yle_UnitIndex,
                    }
                }));
            }
            else
            {
                return(Json(new JsonResponse <object>
                {
                    State = false,
                    ErrorCode = -1,
                    ErrorMsg = "课时数据错误"
                }));
            }
        }
Beispiel #9
0
        public override void Handle()
        {
            CourseStudyPractiseMessage msgObject = JsonConvert.DeserializeObject <CourseStudyPractiseMessage>(message);
            SumStudentBll            bll         = new SumStudentBll();
            StudentStudyBll          studyBll    = new StudentStudyBll();
            Yw_StudentCourseProgress progress    = studyBll.GetProgressByStudentCourse(msgObject.StudentId, msgObject.CourseId);

            if (progress == null)
            {
                throw new AbhsException(ErrorCodeEnum.StudentCourseProgressNotFound, AbhsErrorMsg.ConstStudentCourseProgressNotFound, msgObject.StudentId + "," + msgObject.CourseId);
            }

            bool newDay = false;

            Sum_StudyFactDaily daily = bll.GetDailyData(msgObject.StudentId, progress.Yps_ClassId, msgObject.AsOfDate.Date);

            if (daily == null)
            {
                newDay = true;
                daily  = new Sum_StudyFactDaily();
                daily.Ssd_StudentId        = msgObject.StudentId;
                daily.Ssd_SchoolId         = progress.Yps_SchoolId;
                daily.Ssd_ClassId          = progress.Yps_ClassId;
                daily.Ssd_Date             = msgObject.AsOfDate.Date;
                daily.Ssd_UpdateTime       = DateTime.Now;
                daily.Ssd_StudySeconds     = msgObject.StudySeconds;
                daily.Ssd_IncomeCoins      = msgObject.GetCoins;
                daily.Ssd_SubjectCount     = msgObject.SubjectCount;
                daily.Ssd_PracticeCount    = 1;
                daily.Ssd_ExperiencePoints = msgObject.GetCoins;
            }
            else
            {
                daily.Ssd_UpdateTime       = DateTime.Now;
                daily.Ssd_StudySeconds     = daily.Ssd_StudySeconds + msgObject.StudySeconds;
                daily.Ssd_IncomeCoins      = daily.Ssd_IncomeCoins + msgObject.GetCoins;
                daily.Ssd_SubjectCount     = daily.Ssd_SubjectCount + msgObject.SubjectCount;
                daily.Ssd_PracticeCount    = daily.Ssd_PracticeCount + 1;
                daily.Ssd_ExperiencePoints = daily.Ssd_ExperiencePoints + msgObject.GetCoins;
            }
            bll.SaveDailyData(daily);

            Dictionary <DateCycleTypeEnum, Sum_StudyFactDateCycle> dic = bll.FetchOrCreateCycleData(msgObject.StudentId, progress.Yps_ClassId, msgObject.AsOfDate.Date);

            foreach (KeyValuePair <DateCycleTypeEnum, Sum_StudyFactDateCycle> item in dic)
            {
                item.Value.Sdc_StudentId        = msgObject.StudentId;
                item.Value.Sdc_SchoolId         = progress.Yps_SchoolId;
                item.Value.Sdc_ClassId          = progress.Yps_ClassId;
                item.Value.Sdc_UpdateTime       = DateTime.Now;
                item.Value.Sdc_StudySeconds     = item.Value.Sdc_StudySeconds + msgObject.StudySeconds;
                item.Value.Sdc_IncomeCoins      = item.Value.Sdc_IncomeCoins + msgObject.GetCoins;
                item.Value.Sdc_SubjectCount     = item.Value.Sdc_SubjectCount + msgObject.SubjectCount;
                item.Value.Sdc_PracticeCount    = item.Value.Sdc_PracticeCount + 1;
                item.Value.Sdc_ExperiencePoints = item.Value.Sdc_ExperiencePoints + msgObject.GetCoins;
                item.Value.Sdc_StudyDayCount    = newDay ? item.Value.Sdc_StudyDayCount + 1 : item.Value.Sdc_StudyDayCount;
                bll.SaveCycleData(item.Value);
            }

            if (newDay)
            {
                int            dayCount = bll.GetStudyDayCountOfStudent(msgObject.StudentId);
                StudentInfoBll infoBll  = new StudentInfoBll();
                infoBll.UpdateStudyDayCountOfStudent(msgObject.StudentId, dayCount);
            }
        }
        public JsonResult SubmintProcressData(string dataStr)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append($"学生id:{GetCurrentUser().StudentId},操作时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")};");
            sb.AppendLine($"接收数据:{dataStr}");
            DtoStudnetUnitSubmit info = new DtoStudnetUnitSubmit();

            #region json字符串填充数据
            try
            {
                JObject data = JsonConvert.DeserializeObject(dataStr) as JObject;
                info.StudnetId = GetCurrentUser().StudentId;
                info.CoruseId  = Convert.ToInt32(data["courseId"]);                         //课程id
                info.LessonId  = Convert.ToInt32(data["lessonId"]);                         //课时id
                info.LessonNum = Convert.ToInt32(data["lessonNum"]);                        //课时序号
                info.UnitID    = Convert.ToInt32(data["unitId"]);                           //单元(讲义页)id
                string   coinKey = Encrypt.DecryptQueryString(data["coinsKey"].ToString()); //金币加密字符串
                string[] check   = coinKey.Split('_');
                //验证金币加密串是否可用
                //这个验证方式要与GetLessonPage方法中加密字符串对应
                if (check.Length == 4 && check[1] == info.UnitID.ToString() && check[2] == info.LessonId.ToString() && check[3] == info.CoruseId.ToString())
                {
                    info.AllCoin      = Convert.ToInt32(check[0]);             //本页最大金币数
                    info.UnitNum      = Convert.ToInt32(data["unitNum"]);      //单元(讲义页)序号
                    info.UseTime      = Convert.ToInt32(data["useTime"]);      //学习时长(秒)
                    info.ProgressID   = Convert.ToInt32(data["progressId"]);   //学习进度id
                    info.ProgressKey  = data["progressKey"].ToString();        //学习进度key
                    info.TotalUnitNum = Convert.ToInt32(data["totalUnitNum"]); //最大学习数
                    #region 填充答题结果
                    JArray answers = JsonConvert.DeserializeObject(data["answers"].ToString()) as JArray;
                    foreach (var a in answers)
                    {
                        info.Answers.Add(SubjectAnswerObjectBuilder.TranslateAnswer(a.ToString()));
                    }
                    #endregion
                    #region 填充金币记录
                    JArray coins = JsonConvert.DeserializeObject(data["coins"].ToString()) as JArray;
                    foreach (var c in coins)
                    {
                        JObject o = JsonConvert.DeserializeObject(c.ToString()) as JObject;
                        info.Coins.Add(new StuLessonCoinItem
                        {
                            ActionId    = o["acid"].ToString(),
                            ActionCoins = Convert.ToInt32(o["acin"]),
                            ActionType  = o["type"].ToString(),
                            GetCoins    = Convert.ToInt32(o["gcin"])
                        });
                    }
                    #endregion
                }
                else
                {
                    sb.AppendLine("回复数据:金币加密串解析错误");
                    LogHelper.ErrorLog(sb.ToString(), new Exception("金币加密串解析错误"));
                    return(Json(new JsonResponse <object>
                    {
                        State = false,
                        ErrorCode = -100,
                        ErrorMsg = "金币加密串解析错误"
                    }));
                }
            }
            catch (Exception ex)
            {
                sb.AppendLine("回复数据:json数据结构错误");
                LogHelper.ErrorLog(sb.ToString(), ex);
                return(Json(new JsonResponse <object>
                {
                    State = false,
                    ErrorCode = -200,
                    ErrorMsg = "json数据结构错误"
                }));
            }
            #endregion
            StudentStudyBll bll    = new StudentStudyBll();
            int             result = bll.SubmitStudyProgress(info);//提交数据结果
            var             r      = new JsonResponse <object>();
            #region 根据结果填充返回数据
            switch (result)
            {
            case 0:    //成功
                r.State    = true;
                r.ErrorMsg = "成功";
                break;

            case -1:    //课时进度秘钥错误
                r.State     = false;
                r.ErrorCode = result;
                r.ErrorMsg  = "课时进度秘钥错误";
                break;

            case -2:    //数据重复提交
                r.State     = false;
                r.ErrorCode = result;
                r.ErrorMsg  = "数据重复提交";
                break;

            case -3:    //金币数目错误
                r.State     = false;
                r.ErrorCode = result;
                r.ErrorMsg  = "金币数目错误";
                break;

            default:
                r.State     = false;
                r.ErrorCode = result;
                r.ErrorMsg  = "未知错误";
                break;
            }
            #endregion
            if (!r.State)
            {
                sb.AppendLine($"回复数据:{r.ErrorMsg}");
                LogHelper.ErrorLog(sb.ToString(), new Exception(r.ErrorMsg));
            }
            return(Json(r));
        }
        public void SubmintProcressData()
        {
            var dataStr = "{\"coins\":[],\"answers\":[],\"useTime\":5,\"courseId\":10000,\"lessonId\":10000,\"lessonNum\":1,\"unitId\":10000,\"unitNum\":1,\"totalUnitNum\":14,\"progressId\":10001,\"progressKey\":\"71441bd833884cc78e6ae8434e552ff1\",\"coinsKey\":\"E490AD625ABC1D994DA1F5D897591D3A0A745B468D778F7B\"}";

            DtoStudnetUnitSubmit info = new DtoStudnetUnitSubmit();

            #region json字符串填充数据
            try
            {
                JObject data = JsonConvert.DeserializeObject(dataStr) as JObject;
                info.StudnetId = 10000;
                info.CoruseId  = Convert.ToInt32(data["courseId"]);                         //课程id
                info.LessonId  = Convert.ToInt32(data["lessonId"]);                         //课时id
                info.LessonNum = Convert.ToInt32(data["lessonNum"]);                        //课时序号
                info.UnitID    = Convert.ToInt32(data["unitId"]);                           //单元(讲义页)id
                string   coinKey = Encrypt.DecryptQueryString(data["coinsKey"].ToString()); //金币加密字符串
                string[] check   = coinKey.Split('_');
                //验证金币加密串是否可用
                //这个验证方式要与GetLessonPage方法中加密字符串对应
                if (check.Length == 4 && check[1] == info.UnitID.ToString() && check[2] == info.LessonId.ToString() && check[3] == info.CoruseId.ToString())
                {
                    info.AllCoin      = Convert.ToInt32(check[0]);             //本页最大金币数
                    info.UnitNum      = Convert.ToInt32(data["unitNum"]);      //单元(讲义页)序号
                    info.UseTime      = Convert.ToInt32(data["useTime"]);      //学习时长(秒)
                    info.ProgressID   = Convert.ToInt32(data["progressId"]);   //学习进度id
                    info.ProgressKey  = data["progressKey"].ToString();        //学习进度key
                    info.TotalUnitNum = Convert.ToInt32(data["totalUnitNum"]); //最大学习数
                    #region 填充答题结果
                    JArray answers = JsonConvert.DeserializeObject(data["answers"].ToString()) as JArray;
                    foreach (var a in answers)
                    {
                        info.Answers.Add(TranslateAnswer(a.ToString()));
                    }
                    #endregion
                    #region 填充金币记录
                    JArray coins = JsonConvert.DeserializeObject(data["coins"].ToString()) as JArray;
                    foreach (var c in coins)
                    {
                        JObject o = JsonConvert.DeserializeObject(c.ToString()) as JObject;
                        info.Coins.Add(new StuLessonCoinItem
                        {
                            ActionId    = o["acid"].ToString(),
                            ActionCoins = Convert.ToInt32(o["acin"]),
                            ActionType  = o["type"].ToString(),
                            GetCoins    = Convert.ToInt32(o["gcin"])
                        });
                    }
                    #endregion
                }
                else
                {
                    throw new Exception("金币加密数据错误");
                }
            }
            catch
            {
                throw new Exception("字符串转对象错误");
            }
            #endregion
            StudentStudyBll bll    = new StudentStudyBll();
            int             result = bll.SubmitStudyProgress(info);//提交数据结果
            var             r      = new JsonResponse <object>();
            #region 根据结果填充返回数据
            switch (result)
            {
            case 0:    //成功
                r.State = true;
                break;

            case -1:    //课时进度秘钥错误
                r.State     = false;
                r.ErrorCode = result;
                r.ErrorMsg  = "课时进度秘钥错误";
                break;

            case -2:    //数据重复提交
                r.State     = false;
                r.ErrorCode = result;
                r.ErrorMsg  = "数据重复提交";
                break;

            case -3:    //金币数目错误
                r.State     = false;
                r.ErrorCode = result;
                r.ErrorMsg  = "金币数目错误";
                break;

            default:
                r.State     = false;
                r.ErrorCode = result;
                r.ErrorMsg  = "未知错误";
                break;
            }
            #endregion
        }