/// <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 = "课时数据错误" })); } }
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 }