예제 #1
0
        /// <summary>
        /// 根据学生id课程id及课时id,分页查询课时单元信息
        /// </summary>
        /// <param name="search"></param>
        /// <returns></returns>
        public List <DtoLessonUnit> SelectUnitByNext(DtoLessonUnitSearch search)
        {
            StudentStudyBll bll = new StudentStudyBll();

            //如果学生有这个课程进度
            if (bll.GetProgressByStudentCourse(search.StudentID, search.CourseID) != null)
            {
                //获取课时单元信息数据并转换成动作对象
                var list = UnitServer.SelectUnitsByNext(search).Select(u => (Yw_LessonUnitStepActions)UnitStepFactory.Create(u)).ToList();
                //将数据转换成为dto模型
                return(list.Select(u => new DtoLessonUnit()
                {
                    CourseId = u.Yls_CourseId,
                    LessonId = u.Yls_LessonId,
                    Id = u.Yls_UnitId,
                    Index = u.Yls_UnitIndex,
                    Coins = u.Yls_Coins,
                    Steps = u.Steps,
                    Status = u.Yls_Status,
                    CreateTime = u.Yls_CreateTime,
                    UpdateTime = u.Yls_UpdateTime
                }).ToList());
            }
            return(new List <DtoLessonUnit>());
        }
        /// <summary>
        /// 根据课时id获取后几条的单元(讲义)
        /// </summary>
        /// <param name="search">条件</param>
        /// <returns></returns>
        public List <Yw_LessonUnitStep> SelectUnitsByNext(DtoLessonUnitSearch search)
        {
            string countSql = "select max([Yls_UnitIndex]) from [Yw_LessonUnitStep] where [Yls_LessonId]=@lessonid and [Yls_CourseId]=@courseid and Yls_Status = 1";
            string sql      = $"select top({search.Pagination.PageSize})* from [Yw_LessonUnitStep] where [Yls_LessonId]=@lessonid  and [Yls_CourseId]=@courseid and Yls_Status = 1 and Yls_UnitIndex >= {search.Pagination.PageIndex} order by [Yls_UnitIndex] asc ";
            var    paras    = new { courseid = search.CourseID, lessonid = search.LessonID };

            search.Pagination.TotalCount = Query <int>(countSql, paras).FirstOrDefault();
            return(Query(sql, paras).ToList());
        }
        public JsonResult GetLessonPage(DtoLessonUnitSearch search, bool isApprove = false)
        {
            LessonUnitBll bll = new LessonUnitBll();

            search.StudentID = GetCurrentUser().StudentId;//设置当前学生id
            if (isApprove)
            {
                search.Pagination.PageSize = 1;
            }                                                 //如果是审批的情况,只返回一条数据
            var        pages    = bll.SelectUnitByNext(search);
            List <int> mediaIDs = new List <int>();
            List <int> textIDs  = new List <int>();
            var        list     = pages.Select(p => new Page()
            {
                pageId   = p.Id,
                pageNum  = p.Index,
                pageName = p.Name,
                coinsKey = Encrypt.EncryptQueryString($"{p.Coins}_{p.Id}_{p.LessonId}_{p.CourseId}"),//金币加密串(加密内容为"单元金币数_单元id_课时id_课程id")//Remark1
                steps    = p.Steps.Select(s => new Step()
                {
                    stepNum = s.StepNum,
                    actions = s.Actions.Select(a => ActionTranslator.DataToViewData(a, mediaIDs, textIDs)).ToList()
                }).ToList()
            }).ToList();

            //如果媒体id或文本id有值的话
            if (mediaIDs.Count > 0 || textIDs.Count > 0)
            {
                ResourceBll rbll   = new ResourceBll();
                var         medias = rbll.GetMediaObjectByIdList(mediaIDs.Distinct().ToList(), true); //获取所有的媒体对象字典
                var         texts  = rbll.GetTextObjectByIdList(textIDs.Distinct().ToList());         //获取文本对象字典

                list.ForEach(p =>
                {
                    p.steps.ForEach(s =>
                    {
                        s.actions.ForEach(a =>
                        {
                            ActionTranslator.SetViewDataMedia(a, medias, texts);
                        });
                    });
                });
            }

            return(Json(new JsonResponse <List <Page> >
            {
                State = true,
                ErrorCode = 0,
                ErrorMsg = "",
                Data = list
            }));
        }