/// <summary>
        /// 随机出题(因功能废弃暂未实现主客观题2:1比例)
        /// </summary>
        /// <param name="courseId"></param>
        /// <param name="kpointId"></param>
        /// <param name="cpointId"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public ActionResult RandomQuestions(int courseId, int kpointId, int cpointId, int count)
        {
            List <dto_Question> list = null;

            if (count <= 20)
            {
                int[] qids = B_Ques.GetQuesIds(courseId, kpointId, cpointId, count);

                if (qids != null && qids.Length > 0)
                {
                    list = new List <dto_Question>();
                    foreach (var q in qids)
                    {
                        dto_Question ques = B_QuesRedis.GetQuestion(courseId, q);
                        if (ques != null)
                        {
                            //暴露的qid重写
                            ques.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, ques.id);
                            ques.id    = 0;
                            if (ques.Children != null && ques.Children.Count > 0)
                            {
                                ques.Children.ForEach(a => {
                                    a.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.id);
                                    a.id    = 0;
                                });
                            }
                            list.Add(ques);
                        }
                    }
                }
            }

            ViewBag.QuesList = list;
            return(PartialView());
        }
Exemple #2
0
        public static List <dto_Question> GetPaperQuestions(int courseId, long paperId)
        {
            List <dto_Question> list = new List <dto_Question>();
            int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Paper, paperId);

            int[] qids = GetPaperQuesIds(id);
            foreach (var q in qids)
            {
                dto_Question dq = D_QuesRedis.GetQuestion(courseId, q);
                if (dq != null)
                {
                    //dq.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, dq.id);
                    //dq.id = 0;
                    //if (dq.Children != null && dq.Children.Count > 0)
                    //{
                    //    dq.Children.ForEach(a => {
                    //        a.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.id);
                    //        a.id = 0;
                    //    });
                    //}
                    list.Add(dq);
                }
            }

            return(list);
        }
        public static dto_Question GetQuestion(int courseId, int qId)
        {
            dto_Question tempresult = null;
            string       key        = RedisHelper.GetEasyZyRedisKey(Const.CacheCatalog.Ques, qId.ToString());

            using (var client = RedisHelper.Instance.GetRedisClient(Const.CacheCatalog.Ques.ToString()))
            {
                if (client != null)
                {
                    tempresult = client.Get <dto_Question>(key);
                }
            }

            return(tempresult);
        }
Exemple #4
0
        /// <summary>
        /// 根据试题Id获取其试题信息(不包含任何小题、选项)
        /// </summary>
        /// <param name="qId"></param>
        /// <returns></returns>
        public static dto_Question GetQuestion(int courseId, int qId)
        {
            dto_Question model = null;

            using (MySqlDataReader dr = MySqlHelper.ExecuteReader(Util.GetConnectString(QuesConnString),
                                                                  "select id, courseid, ptypeid, typeid, typename, difftype, diff, haschildren, quesbody, quesanswer, quesparse, pid, usagetimes from T_Questions where courseid = @courseid and id = @id",
                                                                  "@courseid".ToInt32InPara(courseId), "@id".ToInt32InPara(qId)))
            {
                if (dr != null && dr.HasRows)
                {
                    model = MySqlDBHelper.ConvertDataReaderToEntitySingle <dto_Question>(dr);
                }
            }
            return(model);
        }
Exemple #5
0
        public static void IncreaseUsageTimes(int qId)
        {
            dto_Question tempresult = null;
            string       key        = RedisHelper.GetEasyZyRedisKey(CacheCatalog.Ques, qId.ToString());

            using (var client = RedisHelper.Instance.GetRedisClient(CacheCatalog.Ques.ToString()))
            {
                if (client != null)
                {
                    tempresult = client.Get <dto_Question>(key);
                    if (tempresult != null)
                    {
                        int i = tempresult.usagetimes;
                        tempresult.usagetimes = i + 1;
                        client.Set(key, tempresult, ts);
                    }
                }
            }
        }
        public ActionResult GetBasketQues(int courseId, string qid)
        {
            List <dto_Question> dql = null;

            if (!string.IsNullOrEmpty(qid))
            {
                dql = new List <dto_Question>();
                string[] ql = qid.Split(',');
                foreach (string q in ql)
                {
                    dto_Question dq = B_QuesRedis.GetQuestion(courseId, IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Ques, long.Parse(q)));
                    dq.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, dq.id);
                    dq.id    = 0;
                    dql.Add(dq);
                }
                //因为二级题型是6位的,int型比1级题型大排序会排到后面,所以转化为字符型排序
                dql = dql.OrderBy(a => a.typeid.ToString()).ToList();
            }
            ViewBag.QuesList = dql;
            return(PartialView());
        }
Exemple #7
0
        public static dto_Question GetWholeQuestion(int courseId, int qId)
        {
            dto_Question dq = GetQuestion(courseId, qId);

            if (dq != null)
            {
                if (dq.haschildren)
                {
                    List <dto_CQuestion> cdq = null;
                    List <dto_CQuestion> cq  = GetChildQuestions(dq.id);

                    if (cq != null)
                    {
                        cdq = new List <dto_CQuestion>();
                        List <T_QuesOptions> qo = null;
                        if (cq.Exists(a => Const.OBJECTIVE_QUES_TYPES.Contains(a.ptypeid)))
                        {
                            qo = GetAllChildQuesOptions(dq.id);
                        }
                        cq.ForEach(a =>
                        {
                            if (Const.OBJECTIVE_QUES_TYPES.Contains(a.ptypeid))
                            {
                                a.Options = qo.Find(b => b.id == a.id);
                            }
                            cdq.Add(a);
                        });
                    }
                    dq.Children = cdq;
                }
                else
                {
                    if (Const.OBJECTIVE_QUES_TYPES.Contains(dq.ptypeid))
                    {
                        dq.Options = GetQuesOption(dq.id);
                    }
                }
            }
            return(dq);
        }
        /// <summary>
        /// 保存作业试题
        /// </summary>
        /// <param name="courseId"></param>
        /// <param name="zyId"></param>
        /// <param name="questions"></param>
        /// <returns></returns>
        private bool SaveZyQuestions(int courseId, int zyId, string[] questions)
        {
            int OrderIndex           = 0;
            List <dto_ZyQuestion> ql = new List <dto_ZyQuestion>();

            foreach (var qid in questions)
            {
                dto_ZyQuestion q  = null;
                dto_Question   dq = B_QuesRedis.GetQuestion(courseId, IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Ques, long.Parse(qid)));
                if (dq.haschildren && dq.Children != null)
                {
                    foreach (var cq in dq.Children)
                    {
                        q            = new dto_ZyQuestion();
                        OrderIndex  += 1;
                        q.PQId       = dq.id;
                        q.QId        = cq.id;
                        q.PTypeId    = cq.ptypeid;
                        q.OrderIndex = OrderIndex;
                        q.Score      = 0;
                        ql.Add(q);
                    }
                }
                else
                {
                    q            = new dto_ZyQuestion();
                    OrderIndex  += 1;
                    q.PQId       = dq.id;
                    q.QId        = dq.id;
                    q.PTypeId    = dq.ptypeid;
                    q.OrderIndex = OrderIndex;
                    q.Score      = 0;
                    ql.Add(q);
                }
            }
            return(B_Zy.AddQdbZyQues(zyId, JsonConvert.SerializeObject(ql)));
        }
        public ActionResult add(long quesId = 0, int courseId = 0)
        {
            if (quesId != 0)
            {
                int          qid  = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Ques, quesId);
                dto_Question q    = B_QuesRedis.GetQuestion(courseId, qid);
                string       cont = "";
                if (q != null)
                {
                    cont = q.quesbody + "\n\r";
                    if (Const.OBJECTIVE_QUES_TYPES.Contains(q.ptypeid) && q.Options != null)
                    {
                        cont = string.Concat(cont, "<p>A. ", q.Options.optiona, "</p><p>B. ", q.Options.optionb, "</p><p>C. ", q.Options.optionc, "</p><p>D. ", q.Options.optiond, "</p>");
                        if (!string.IsNullOrEmpty(q.Options.optione))
                        {
                            cont = string.Concat(cont, "<p>E.", q.Options.optione, "</p>");
                        }
                        if (!string.IsNullOrEmpty(q.Options.optionf))
                        {
                            cont = string.Concat(cont, "<p>F.", q.Options.optionf, "</p>");
                        }
                        if (!string.IsNullOrEmpty(q.Options.optiong))
                        {
                            cont = string.Concat(cont, "<p>G.", q.Options.optiong, "</p>");
                        }
                    }
                }

                ViewBag.TopicContent = cont;
                int subjectId = Const.CourseSubjectMapping[courseId];
                ViewBag.SubjectId = subjectId;
            }

            ViewBag.Grades   = Const.Grades;
            ViewBag.Subjects = Const.Subjects;
            return(View());
        }
        /// <summary>
        /// 筛题
        /// </summary>
        /// <param name="courseId"></param>
        /// <param name="kpointId"></param>
        /// <param name="cpointId"></param>
        /// <param name="typeId"></param>
        /// <param name="diffType"></param>
        /// <param name="paperYear"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public ActionResult GetQuestions(int courseId, int kpointId, int cpointId, int typeId, int diffType, int paperYear, int pageIndex, int pageSize)
        {
            int totalCount = 0;

            //int[] qids = B_Ques.GetQuesIds(courseId, kpointId, cpointId, typeId, diffType, paperYear, pageIndex, pageSize, out totalCount);
            int[] qids      = B_QuesSolr.GetQuesIds(courseId, kpointId, cpointId, typeId, diffType, paperYear, pageIndex, pageSize, out totalCount);
            int   totalPage = Util.GetTotalPageCount(totalCount, pageSize);

            List <dto_Question> list = null;

            if (qids != null && qids.Length > 0)
            {
                list = new List <dto_Question>();
                foreach (var q in qids)
                {
                    dto_Question ques = B_QuesRedis.GetQuestion(courseId, q);
                    if (ques != null)
                    {
                        //暴露的qid重写
                        ques.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, ques.id);
                        ques.id    = 0;
                        if (ques.Children != null && ques.Children.Count > 0)
                        {
                            ques.Children.ForEach(a => {
                                a.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.id);
                                a.id    = 0;
                            });
                        }
                        list.Add(ques);
                    }
                }
            }
            ViewBag.PageCount = totalPage;
            ViewBag.QuesList  = list;
            return(PartialView());
        }