/// <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()); }
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); }
/// <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); }
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()); }
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()); }