Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
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);
            }
        }