public void StudentPracticeBll_CreateTaskAutoAfterStudy_ShouldSuccess() { Yw_StudentCourseProgress progress = new Yw_StudentCourseProgress { Yps_ClassId = 10000, Yps_CourseId = 10000, Yps_CreateTime = DateTime.Now, Yps_FinishStudyTime = DateTime.Now, Yps_Id = 0, Yps_IsFinished = false, Yps_LastStudyTime = DateTime.Now, Yps_LessonFinishedCount = 20, Yps_NextLessonIndex = 5, Yps_OrderId = 10000, Yps_SchoolId = 11000, Yps_StartStudyTime = DateTime.Now, Yps_Status = 3, Yps_StudentId = 10011, Yps_UpdateTime = DateTime.Now }; bll.CreateStudyPractice( progress, 10011, 10000, 4, 10000, new List <int> { 10000 }, StudyTaskTypeEnum.系统课后任务); //bll.CreateTaskAutoAfterStudy(10011, 10008); }
/// <summary> /// 学生完成课时学习后,创建课后任务 /// </summary> public Yw_StudentTask CreateTaskAutoAfterStudy(int studentId, int lesProgressId) { StudentStudyBll studyBll = new StudentStudyBll(); Yw_StudentLessonProgress lesProgress = studyBll.GetStuLessonProgressById(lesProgressId); if (lesProgress.Yle_Percent < 100 && lesProgress.Yle_SubjectCount > 0)//学生课时学习中,如果题目全部作对,就不创建课后任务 { Yw_StudentCourseProgress progress = studyBll.GetProgressByStudentCourse(studentId, lesProgress.Yle_CourseId); return(CreateStudyPractice(progress, studentId, lesProgress.Yle_LessonId, lesProgress.Yle_LessonIndex, lesProgressId, null, StudyTaskTypeEnum.系统课后任务)); } return(null); }
/// <summary> /// 生成课后练习,根据学生已学的课程的课时,随机组题排除最近学生已经练习的题目 /// </summary> public Yw_StudentTask GeneratePractice(int studentId, int courseId, int returnCount) { SubjectBll subjectBll = new SubjectBll(); StudentStudyBll studyBll = new StudentStudyBll(); Yw_StudentCourseProgress progress = studyBll.GetProgressByStudentCourse(studentId, courseId); if (progress != null && progress.Yps_NextLessonIndex > 1) { List <Yw_Subject> subjects = subjectBll.GetSubjectForPractice(studentId, courseId, progress.Yps_NextLessonIndex, returnCount); if (subjects.Count > 0) { var task = CreateStudyPractice(progress, studentId, 0, progress.Yps_NextLessonIndex, 0, subjects.OrderBy(x => x.Ysj_SubjectType).Select(x => x.Ysj_Id).ToList(), StudyTaskTypeEnum.课后练习); return(task); } } return(null); }
public Yw_StudentTask CreateStudyPractice(Yw_StudentCourseProgress progress, int studentId, int lessonId, int lessonIndex, int lessonProgressId, List <int> subjectIds, StudyTaskTypeEnum taskType) { Yw_StudyTask st = new Yw_StudyTask(); st.Ysk_ClassId = progress.Yps_ClassId; st.Ysk_CourseId = progress.Yps_CourseId; st.Ysk_CreateTime = DateTime.Now; st.Ysk_ExpiredTime = DateTime.Now.AddDays(7); st.Ysk_LessonId = lessonId; st.Ysk_LessonIndex = lessonIndex; st.Ysk_LessonProgressId = lessonProgressId; st.Ysk_SchoolId = progress.Yps_SchoolId; st.Ysk_Score = 0; st.Ysk_Status = (int)StatusEnum.效; st.Ysk_SubjectCount = subjectIds == null ? 0 : subjectIds.Count; st.Ysk_SubjectIds = subjectIds == null ? "" : string.Join(",", subjectIds); st.Ysk_TaskType = (int)taskType; st.Ysk_TeacherId = 0; StudyTaskRepository.Add(st); Yw_StudentTask stk = new Yw_StudentTask(); stk.Yuk_StudentId = studentId; stk.Yuk_CourseId = progress.Yps_CourseId; stk.Yuk_CreateTime = DateTime.Now; stk.Yuk_StartTime = new DateTime(1900, 1, 1); stk.Yuk_FinishTime = new DateTime(1900, 1, 1); stk.Yuk_ExpiredTime = DateTime.Now.AddDays(7); stk.Yuk_GainCoins = 0; stk.Yuk_LessonId = lessonId; stk.Yuk_LessonIndex = lessonIndex; stk.Yuk_Percent = 0; stk.Yuk_RightSubjectCount = 0; stk.Yuk_SchoolId = progress.Yps_SchoolId; stk.Yuk_Status = (int)StudentTaskStatusEnum.未开始; stk.Yuk_StudentScore = 0; stk.Yuk_TaskId = st.Ysk_Id; stk.Yuk_TaskType = (int)taskType; stk.Yuk_SubjectCount = subjectIds == null ? 0 : subjectIds.Count; StudentTaskRepository.Add(stk); return(stk); }
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); } }