Example #1
0
        /// <summary>
        /// 获取已提交作业
        /// </summary>
        /// <param name="lastId"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public ActionResult GetSubmitedZy(long lastId, int count)
        {
            int           last = lastId == 0 ? 99999999 : IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, lastId);
            List <dto_Zy> list = null;
            List <int>    ids  = B_Answer.GetSubmitedZyIds(UserId, last, count);

            if (ids != null)
            {
                list = new List <dto_Zy>();
                ids.ForEach(a =>
                {
                    list.Add(B_ZyRedis.GetZy(a));
                });
            }
            if (list != null)
            {
                foreach (var l in list)
                {
                    //隐藏真实Id
                    l.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Zy, l.Id);

                    dto_User u = B_UserRedis.GetUser(l.UserId);
                    l.UserName = u.UserName;
                    l.TrueName = u.TrueName;
                    l.Id       = 0;
                }
            }

            ViewBag.ZyList = list;
            return(PartialView());
        }
Example #2
0
        public ActionResult GetRelatedUserZy(int pageIndex, int pageSize)
        {
            int totalCount = 0;

            int[]         RUsers = B_User.GetRelatedUser(UserId);
            List <dto_Zy> list   = B_Zy.GetZyList(RUsers, pageIndex, pageSize, out totalCount);

            if (list != null)
            {
                List <int> ids = B_Answer.GetSubmitedZyIds(UserId, list.Select(a => a.Id).ToArray());
                foreach (var l in list)
                {
                    l.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Zy, l.Id);
                    string subName = "";
                    Const.Subjects.TryGetValue(l.SubjectId, out subName);
                    l.SubjectName = subName;
                    l.TypeName    = l.Type == 0 ? "题库" : "自传";
                    dto_User u = B_UserRedis.GetUser(l.UserId);
                    l.UserName = u.UserName;
                    l.TrueName = u.TrueName;
                    l.Submited = ids == null ? false : ids.Exists(a => a == l.Id);
                    //隐藏真实Id
                    l.Id = 0;
                }
            }
            ViewBag.RelateUserCount = RUsers == null ? 0 : RUsers.Length;
            ViewBag.ZyList          = list;
            ViewBag.PageCount       = Util.GetTotalPageCount(totalCount, pageSize);
            return(PartialView());
        }
Example #3
0
        public ActionResult GetSubmitedZy(int pageIndex, int pageSize)
        {
            int           totalCount = 0;
            List <dto_Zy> list       = null;
            List <int>    ids        = B_Answer.GetSubmitedZyIds(UserId, pageIndex, pageSize, out totalCount);

            if (ids != null)
            {
                list = new List <dto_Zy>();
                ids.ForEach(a =>
                {
                    list.Add(B_ZyRedis.GetZy(a));
                });
            }
            if (list != null)
            {
                foreach (var l in list)
                {
                    //隐藏真实Id
                    l.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Zy, l.Id);

                    dto_User u = B_UserRedis.GetUser(l.UserId);
                    l.UserName = u.UserName;
                    l.TrueName = u.TrueName;
                    l.Id       = 0;
                }
            }

            ViewBag.ZyList    = list;
            ViewBag.PageCount = Util.GetTotalPageCount(totalCount, pageSize);
            return(PartialView());
        }
Example #4
0
        /// <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 ActionResult GetQuestionAndAnswers(int courseId, long zyId, int studentId)
        {
            int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId);

            dto_Zy   zy     = B_ZyRedis.GetZy(id);
            T_Answer answer = null;

            if (zy.UserId == 0)
            {
                return(PartialView());
            }
            else
            {
                answer = B_Answer.GetAnswer(id, (studentId == 0 ? UserId : studentId));
            }
            List <dto_UserAnswer> ansl = null;

            if (answer != null)
            {
                ViewBag.PicPrefix = Util.GetAppSetting("UploadUrlPrefix") + "/";
                ViewBag.AnswerImg = answer.AnswerImg;
                ansl = JsonConvert.DeserializeObject <List <dto_UserAnswer> >(answer.AnswerJson);
            }

            List <dto_Question> ql = B_ZyRedis.GetQdbZyQuestions(courseId, id);

            if (ql != null)
            {
                foreach (dto_Question q in ql)
                {
                    if (!q.haschildren && Const.OBJECTIVE_QUES_TYPES.Contains(q.ptypeid))
                    {
                        q.SAnswer = ansl == null ? "" : ansl.Find(b => b.QId == q.id).Answer;
                    }
                    //隐藏真实Id
                    q.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, q.id);
                    q.id    = 0;

                    if (q.Children != null && q.Children.Count > 0)
                    {
                        q.Children.ForEach(a => {
                            if (Const.OBJECTIVE_QUES_TYPES.Contains(a.ptypeid))
                            {
                                a.SAnswer = ansl == null ? "" : ansl.Find(b => b.QId == a.id).Answer;
                            }
                            a.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.id);
                            a.id    = 0;
                        });
                    }
                }
            }
            ViewBag.QuesList = ql;
            return(PartialView());
        }
Example #6
0
        public static List <dto_Paper> ResetPaperId(List <dto_Paper> list)
        {
            if (list != null)
            {
                foreach (var l in list)
                {
                    l.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Paper, l.PaperId);

                    string gName = "";
                    Const.Grades.TryGetValue(l.GradeId, out gName);
                    l.GradeName = gName;
                    l.PaperId   = 0;
                }
            }
            return(list);
        }
Example #7
0
        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());
        }
Example #8
0
        public static List <dto_Question> GetPaperAnswer(int courseId, long paperId, int studentId)
        {
            int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Paper, paperId);

            var answer = D_Paper.GetAnswer(id, studentId);
            List <dto_UserAnswer> ansl = null;

            if (answer != null)
            {
                ansl = JsonConvert.DeserializeObject <List <dto_UserAnswer> >(answer.AnswerJson);
            }
            List <dto_Question> ql = B_Paper.GetPaperQuestions(courseId, paperId);

            if (ql != null)
            {
                foreach (dto_Question q in ql)
                {
                    if (!q.haschildren && Const.OBJECTIVE_QUES_TYPES.Contains(q.ptypeid))
                    {
                        q.SAnswer = ansl == null ? "" : ansl.Find(b => b.QId == q.id).Answer;
                    }
                    //隐藏真实Id
                    q.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, q.id);
                    q.id    = 0;

                    if (q.Children != null && q.Children.Count > 0)
                    {
                        q.Children.ForEach(a => {
                            if (Const.OBJECTIVE_QUES_TYPES.Contains(a.ptypeid))
                            {
                                a.SAnswer = ansl == null ? "" : ansl.Find(b => b.QId == a.id).Answer;
                            }
                            a.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.id);
                            a.id    = 0;
                        });
                    }
                }
            }
            return(ql);
        }
Example #9
0
        /// <summary>
        /// 获取我新建的作业
        /// </summary>
        /// <param name="lastId"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public ActionResult GetMyZy(long lastId, int count)
        {
            int           last = lastId == 0 ? 99999999 : IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, lastId);
            List <dto_Zy> list = B_Zy.GetZyList(UserId, last, count);

            if (list != null)
            {
                foreach (var l in list)
                {
                    //隐藏真实Id
                    l.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Zy, l.Id);
                    string subName = "";
                    Const.Subjects.TryGetValue(l.SubjectId, out subName);
                    l.SubjectName = subName;
                    l.TypeName    = l.Type == 0 ? "题库" : "自传";
                    l.Id          = 0;
                }
            }

            ViewBag.ZyList = list;
            return(PartialView());
        }
Example #10
0
        public ActionResult GetMyZy(int pageIndex, int pageSize)
        {
            int           totalCount = 0;
            List <dto_Zy> list       = B_Zy.GetZyList(UserId, pageIndex, pageSize, out totalCount);

            if (list != null)
            {
                foreach (var l in list)
                {
                    //隐藏真实Id
                    l.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Zy, l.Id);
                    string subName = "";
                    Const.Subjects.TryGetValue(l.SubjectId, out subName);
                    l.SubjectName = subName;
                    l.TypeName    = l.Type == 0 ? "题库" : "自传";
                    l.Id          = 0;
                }
            }

            ViewBag.ZyList    = list;
            ViewBag.PageCount = Util.GetTotalPageCount(totalCount, pageSize);
            return(PartialView());
        }
Example #11
0
        //[LoginFilterAttribute]
        public ActionResult GetQuestions(int courseId, long paperId)
        {
            List <dto_Question> list = B_Paper.GetPaperQuestions(courseId, paperId);

            if (list != null)
            {
                foreach (var l in list)
                {
                    l.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, l.id);
                    l.id    = 0;
                    if (l.Children != null && l.Children.Count > 0)
                    {
                        l.Children.ForEach(a =>
                        {
                            a.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.id);
                            a.id    = 0;
                        });
                    }
                }
            }
            ViewBag.QuesList = list;
            return(PartialView());
        }
        public ActionResult GetQuestions(int courseId, long zyId)
        {
            int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId);
            List <dto_Question> ql = B_ZyRedis.GetQdbZyQuestions(courseId, id);

            if (ql != null)
            {
                foreach (dto_Question q in ql)
                {
                    //隐藏真实Id
                    q.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, q.id);
                    q.id    = 0;
                    if (q.Children != null && q.Children.Count > 0)
                    {
                        q.Children.ForEach(a => {
                            a.NewId = IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.id);
                            a.id    = 0;
                        });
                    }
                }
            }
            ViewBag.QuesList = ql;
            return(PartialView());
        }
Example #13
0
        /// <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());
        }
Example #14
0
        public static string SubmitAnswer(int courseId, long paperId, int studentId, string questions, string answers, string systemType, string browser)
        {
            int id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Paper, paperId);

            //作业提交验证
            T_Answer ans = D_Paper.GetAnswer(id, studentId);

            if (ans != null && ans.Submited)
            {
                return("不能重复提交!");
            }

            //todo submit
            List <string> submitQlist = questions.Split(',').ToList();
            List <string> submitAlist = string.IsNullOrEmpty(answers) ? new List <string>() : answers.Split(',').ToList();

            if (submitQlist.Count != submitAlist.Count)
            {
                return("试题信息有误,提交失败!");
            }

            List <dto_Question>   ql = GetPaperQuestions(courseId, paperId);
            List <dto_UserAnswer> al = new List <dto_UserAnswer>();

            ql.ForEach(a => {
                if (a.haschildren && a.Children != null)
                {
                    foreach (var c in a.Children)
                    {
                        if (Const.OBJECTIVE_QUES_TYPES.Contains(c.ptypeid))
                        {
                            int i = submitQlist.IndexOf(IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, c.id).ToString());
                            al.Add(new dto_UserAnswer()
                            {
                                QId = c.id, PTypeId = c.ptypeid, Score = 0, Answer = (i == -1 ? "" : submitAlist[i]), CAnswer = c.quesanswer, Point = 0
                            });
                        }
                        else
                        {
                            al.Add(new dto_UserAnswer()
                            {
                                QId = c.id, PTypeId = c.ptypeid, Score = 0, Answer = "", CAnswer = "", Point = 0
                            });
                        }
                    }
                }
                else
                {
                    if (Const.OBJECTIVE_QUES_TYPES.Contains(a.ptypeid))
                    {
                        int i = submitQlist.IndexOf(IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.id).ToString());
                        al.Add(new dto_UserAnswer()
                        {
                            QId = a.id, PTypeId = a.ptypeid, Score = 0, Answer = (i == -1 ? "" : submitAlist[i]), CAnswer = a.quesanswer, Point = 0
                        });
                    }
                    else
                    {
                        al.Add(new dto_UserAnswer()
                        {
                            QId = a.id, PTypeId = a.ptypeid, Score = 0, Answer = "", CAnswer = "", Point = 0
                        });
                    }
                }
            });
            bool isok = false;

            T_Answer answer = new T_Answer()
            {
                PaperId     = id,
                StudentId   = studentId,
                Submited    = true,
                CreateDate  = DateTime.Now,
                AnswerJson  = JsonConvert.SerializeObject(al),
                AnswerImg   = "",
                Ip          = ClientUtil.Ip,
                IMEI        = ClientUtil.IMEI,
                MobileBrand = ClientUtil.MobileBrand,
                SystemType  = systemType,
                Browser     = browser
            };

            if (ans != null)
            {
                isok = D_Paper.UpdateAnswerJson(id, studentId, answer.AnswerJson);
            }
            else
            {
                isok = D_Paper.InsertZyAnswer(answer);
            }
            return(isok ? "" : "入库失败!");
        }
Example #15
0
        /// <summary>
        /// 提交答案
        /// 仍然做各种状态判断
        /// </summary>
        /// <param name="zyId"></param>
        /// <param name="questions"></param>
        /// <param name="answers"></param>
        /// <returns></returns>
        public JsonResult SubmitAnswer(long zyId, string questions, string answers)
        {
            dto_AjaxJsonResult <string> r = new dto_AjaxJsonResult <string>();
            int    id = IdNamingHelper.Decrypt(IdNamingHelper.IdTypeEnum.Zy, zyId);
            dto_Zy zy = B_ZyRedis.GetZy(id);

            //试用作业验证
            if (zy.UserId == 0)
            {
                r.code    = AjaxResultCodeEnum.Error;
                r.message = "试用作业仅用于数据展示,不允许进行操作!<br/>注册成为正式用户后即可体验所有功能!";
                r.data    = "";
                return(Json(r));
            }
            #region 访问权限验证
            dto_AjaxJsonResult <dto_Zy> r1 = AccessJudge(UserId, zy);
            if (r1.code == AjaxResultCodeEnum.Error)
            {
                r.code    = AjaxResultCodeEnum.Error;
                r.message = r1.message;
                r.data    = "";
                return(Json(r));
            }
            #endregion

            //作业提交验证
            T_Answer ans = B_Answer.GetAnswer(id, UserId);
            if (ans != null && ans.Submited)
            {
                r.code    = AjaxResultCodeEnum.Error;
                r.message = "作业已提交,不能重复提交!";
                r.data    = "";
                return(Json(r));
            }

            //todo submit
            List <string> submitQlist = questions.Split(',').ToList();
            List <string> submitAlist = string.IsNullOrEmpty(answers) ? new List <string>() : answers.Split(',').ToList();
            if (submitQlist.Count != submitAlist.Count)
            {
                r.code    = AjaxResultCodeEnum.Error;
                r.message = "试题信息有误,提交失败!";
                r.data    = "";
                return(Json(r));
            }
            string qjson             = B_ZyRedis.GetQdbZyQuesJson(id);
            List <dto_ZyQuestion> ql = JsonConvert.DeserializeObject <List <dto_ZyQuestion> >(qjson);
            List <dto_UserAnswer> al = new List <dto_UserAnswer>();
            ql.ForEach(a => {
                string CAnswer = "";
                if (Const.OBJECTIVE_QUES_TYPES.Contains(a.PTypeId))
                {
                    if (a.QId == a.PQId)
                    {
                        CAnswer = B_QuesRedis.GetQuestion(zy.CourseId, a.QId).quesanswer;
                    }
                    else
                    {
                        CAnswer = B_QuesRedis.GetQuestion(zy.CourseId, a.PQId).Children.Find(b => b.id == a.QId).quesanswer;
                    }
                }
                int i = submitQlist.IndexOf(IdNamingHelper.Encrypt(IdNamingHelper.IdTypeEnum.Ques, a.QId).ToString());
                al.Add(new dto_UserAnswer()
                {
                    QId = a.QId, PTypeId = a.PTypeId, Score = a.Score, Answer = (i == -1 ? "" : submitAlist[i]), CAnswer = CAnswer, Point = 0
                });
            });
            bool isok = false;

            T_Answer answer = new T_Answer()
            {
                ZyId        = id,
                ZyType      = zy.Type,
                StudentId   = UserId,
                Submited    = true,
                CreateDate  = DateTime.Now,
                AnswerJson  = JsonConvert.SerializeObject(al),
                AnswerImg   = "",
                Ip          = ClientUtil.Ip,
                IMEI        = ClientUtil.IMEI,
                MobileBrand = ClientUtil.MobileBrand,
                SystemType  = Request.Browser.Platform.ToString(),
                Browser     = Request.Browser.Browser.ToString()
            };

            if (ans != null)
            {
                isok = B_Answer.UpdateAnswerJson(id, UserId, answer.AnswerJson);
            }
            else
            {
                isok = B_Answer.InsertZyAnswer(answer);
            }

            if (isok)
            {
                //写统计表
                B_Analyze.GenerateAnalyze(answer);

                r.code    = AjaxResultCodeEnum.Success;
                r.message = "";
                r.data    = "";
                return(Json(r));
            }
            else
            {
                r.code    = AjaxResultCodeEnum.Error;
                r.message = "提交入库失败!";
                r.data    = "";
                return(Json(r));
            }
        }