using Edu.AOP.CustomerAttribute; using Edu.Common.Enum; using Edu.Common.Enum.Question; using Edu.Model.ViewModel.Question; using Edu.Repository.Question; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using VT.FW.DB; namespace Edu.Module.Question { /// /// 题库处理类 /// public class QuestionModule { /// /// 题目类型仓储层对象 /// private readonly RB_Question_TypeRepository question_TypeRepository = new RB_Question_TypeRepository(); /// /// 问题仓储层对象 /// private readonly RB_QuestionRepository questionRepository = new RB_QuestionRepository(); /// /// 知识点仓储层对象 /// private readonly RB_Question_PointRepository question_PointRepository = new RB_Question_PointRepository(); /// /// 问题解析处理类 /// private readonly AnalysisQuestionTypeModule analysisQuestion = new AnalysisQuestionTypeModule(); /// /// 题库仓储层对象 /// private readonly RB_Question_BankRepository question_BankRepository = new RB_Question_BankRepository(); /// /// 获取题库分页列表 /// /// /// /// /// /// public List GetQuestionBankPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_Bank_ViewModel query) { return question_BankRepository.GetQuestionBankPageListRepository(pageIndex, pageSize, out rowsCount, query); } /// /// 新增修改题库 /// /// /// public bool SetQuestionBankModule(RB_Question_Bank_ViewModel model) { bool flag; if (model.BankId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Question_Bank_ViewModel.BankName), model.BankName }, {nameof(RB_Question_Bank_ViewModel.BankNo), model.BankNo }, }; flag = question_BankRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Bank_ViewModel.BankId), model.BankId)); } else { var newId = question_BankRepository.Insert(model); model.BankId = newId; flag = newId > 0; } return flag; } /// /// 根据编号获取题库 /// /// /// public RB_Question_Bank_ViewModel GetQuestionBankModule(object BankId) { return question_BankRepository.GetEntity(BankId); } /// /// 删除题库 /// /// /// /// public bool RemoveQuestionBankModule(int bankId, int status) { Dictionary fileds = new Dictionary() { {nameof(RB_Question_Bank_ViewModel.Status),status } }; return question_BankRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Bank_ViewModel.BankId), bankId)); } /// /// 获取题目类型列表 /// /// /// public List GetQuestionTypeListModule(RB_Question_Type_ViewModel query) { return question_TypeRepository.GetQuestionTypeListRepository(query); } /// /// 获取问题分页列表 /// /// /// /// /// /// public List GetQuestionPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_ViewModel query) { return questionRepository.GetQuestionPageListRepository(pageIndex, pageSize, out rowsCount, query); } /// /// 获取问题列表 /// /// /// public List GetQuestionListModule(RB_Question_ViewModel query) { return questionRepository.GetQuestionListRepository(query); } /// /// 新增修改题目 /// /// /// public virtual bool SetQuestionModule(RB_Question_ViewModel model) { bool flag; if (model.QuestionId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Question_ViewModel.Title),model.Title }, {nameof(RB_Question_ViewModel.QuestionContent),(!string.IsNullOrEmpty(model.QuestionContent)?model.QuestionContent:"") }, {nameof(RB_Question_ViewModel.DifficultyType),(int)model.DifficultyType }, {nameof(RB_Question_ViewModel.AnswerParse),model.AnswerParse }, {nameof(RB_Question_ViewModel.QuestionTypeId),model.QuestionTypeId }, {nameof(RB_Question_ViewModel.QuestionTypeKey),model.QuestionTypeKey }, {nameof(RB_Question_ViewModel.Knowledge),model.Knowledge }, {nameof(RB_Question_ViewModel.IsUpdateJobExam),model.IsUpdateJobExam }, {nameof(RB_Question_ViewModel.UpdateBy),model.UpdateBy }, {nameof(RB_Question_ViewModel.UpdateTime),model.UpdateTime }, {nameof(RB_Question_ViewModel.Answer),model.Answer }, {nameof(RB_Question_ViewModel.IsMutex),model.IsMutex }, {nameof(RB_Question_ViewModel.Category),model.Category }, {nameof(RB_Question_ViewModel.LevelType),model.LevelType }, }; flag = questionRepository.Update(fileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), model.QuestionId)); } else { var newId = questionRepository.Insert(model); model.QuestionId = newId; flag = newId > 0; if (flag) { Dictionary sortFileds = new Dictionary() { {nameof(RB_Question_ViewModel.SortNum),newId }, }; flag = questionRepository.Update(sortFileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), newId)); } } return flag; } /// /// 批量修改问题考级程度 /// /// /// /// public bool SetBatchQuestionLevelModule(LevelTypeEnum levelTypeEnum, List questionIdList) { return questionRepository.SetBatchQuestionLevelRepository(levelTypeEnum, questionIdList); } /// /// 批量添加问题 /// /// /// public virtual bool SetQuestionBatchModule(List list) { return questionRepository.InsertBatch(list); } /// /// 删除问题 /// /// /// public bool RemoveQuestionModule(object QuestionId) { Dictionary fileds = new Dictionary() { {nameof(RB_Question_ViewModel.Status),(int)DateStateEnum.Delete}, }; bool flag = questionRepository.Update(fileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), QuestionId)); return flag; } /// /// 更新问题排序 /// /// [TransactionCallHandler] public virtual bool UpdateQuestionSortModule(int curQId, int targetQId) { var currentModel = GetQuestionModule(curQId); var targetModel = GetQuestionModule(targetQId); Dictionary fileds = new Dictionary() { {nameof(RB_Question_ViewModel.SortNum),targetModel.SortNum}, }; bool flag = questionRepository.Update(fileds, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), curQId)); if (flag) { //排序修改 Dictionary fileds2 = new Dictionary() { {nameof(RB_Question_ViewModel.SortNum),currentModel.SortNum}, }; flag = questionRepository.Update(fileds2, new WhereHelper(nameof(RB_Question_ViewModel.QuestionId), targetQId)); } return flag; } /// /// 根据编号获取问题实体 /// /// /// public RB_Question_ViewModel GetQuestionModule(object QuestionId,int isReplaceClozeTitle=0) { var extModel = questionRepository.GetEntity(QuestionId); if (extModel != null) { if (extModel.QuestionTypeId > 0) { extModel.QuestionTypeName= question_TypeRepository.GetEntity(extModel.QuestionTypeId)?.Name ?? ""; } extModel.QuestionContentObj = ParsingQuestionModule(extModel.QuestionTypeKey, extModel.QuestionContent); if (!string.IsNullOrEmpty(extModel.Knowledge)) { extModel.QuestionPointList = GetPointListModule(new RB_Question_Point_ViewModel() { QPointIds = extModel.Knowledge }); } if (extModel.QuestionTypeKey == "cloze" && !string.IsNullOrEmpty(extModel.Title)&& isReplaceClozeTitle==1) { string categoryRule1 = @"##[1234567890]##"; Regex categoryReg = new Regex(categoryRule1); MatchCollection matchs = categoryReg.Matches(extModel.Title); foreach (var item in matchs) { if (item != null && !string.IsNullOrEmpty(item.ToString())) { var content = item.ToString().Replace("#", ""); extModel.Title = extModel.Title.Replace(item.ToString(), Common.ConvertHelper.GetSpanString(content, isAddNbsp: true)); } } } } return extModel; } /// /// 获取问题选项相关信息 /// /// /// /// public object ParsingQuestionModule(string questionKey, string questionContent) { return analysisQuestion.ParsingQuestion(questionKey, questionContent); } /// /// 获取问题知识点列表 /// /// /// public List GetPointListModule(RB_Question_Point_ViewModel query) { return question_PointRepository.GetPointListRepository(query); } /// /// 获取知识点分页列表 /// /// /// /// /// /// public List GetPointPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_Point_ViewModel query) { return question_PointRepository.GetPointPageListRepository(pageIndex, pageSize, out rowsCount, query); } /// /// 根据知识点编号获取知识点 /// /// /// public RB_Question_Point_ViewModel GetQuestionPointModule(object PointId) { return question_PointRepository.GetEntity(PointId); } /// /// 新增修改知识点 /// /// /// public bool SetQuestionPointModule(RB_Question_Point_ViewModel model) { bool flag; if (model.PointId > 0) { Dictionary fileds = new Dictionary() { {nameof(RB_Question_Point_ViewModel.PointName),model.PointName.Trim() } }; flag = question_PointRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Point_ViewModel.PointId), model.PointId)); } else { var newId = question_PointRepository.Insert(model); model.PointId = newId; flag = newId > 0; } return flag; } /// /// 根据编号删除知识点 /// /// /// public bool RemoveQuestionPointModule(object PointId) { Dictionary fileds = new Dictionary() { {nameof(RB_Question_Point_ViewModel.Status), (int)DateStateEnum.Delete } }; bool flag = question_PointRepository.Update(fileds, new WhereHelper(nameof(RB_Question_Point_ViewModel.PointId), PointId)); return flag; } } }