Commit 16d5af72 authored by liudong1993's avatar liudong1993

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents 0dc7b093 2d730f50
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Exam
{
/// <summary>
/// 学员练习考试实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Student_Exam
{
/// <summary>
/// 主键编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 题库编号
/// </summary>
public int BankId { get; set; }
/// <summary>
/// 学员编号
/// </summary>
public int StudentId { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime EndTime { get; set; }
/// <summary>
/// 得分
/// </summary>
public decimal Score { get; set; }
/// <summary>
/// 测评次数
/// </summary>
public int Times { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int GroupId { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Exam
{
/// <summary>
/// 学员练习考试详情实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Student_ExamDetails
{
/// <summary>
/// 主键编号
/// </summary>
public int DetailId { get; set; }
/// <summary>
/// 考试编号
/// </summary>
public int ExamId { get; set; }
/// <summary>
/// 问题编号
/// </summary>
public int? QuestionId { get; set; }
/// <summary>
/// 问题名称(题干)
/// </summary>
public string Title { get; set; }
/// <summary>
/// 问题内容
/// </summary>
public string QuestionContent { get; set; }
/// <summary>
/// 问题类型编号
/// </summary>
public int QuestionTypeId { get; set; }
/// <summary>
/// 问题类型Key
/// </summary>
public string QuestionTypeKey { get; set; }
/// <summary>
/// 问题答案
/// </summary>
public string Answer { get; set; }
/// <summary>
/// 答案解析
/// </summary>
public string AnswerParse { get; set; }
/// <summary>
/// 是否作答(1-是)
/// </summary>
public int IsAnswer { get; set; }
/// <summary>
/// 是否作答错误(1-是)
/// </summary>
public int IsWrong { get; set; }
}
}
......@@ -52,7 +52,7 @@ namespace Edu.Model.Entity.Exam
/// <summary>
/// 问题类型编号
/// </summary>
public int? QuestionTypeId { get; set; }
public int QuestionTypeId { get; set; }
/// <summary>
/// 问题类型Key
......
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Exam
{
/// <summary>
/// 学员练习考试详情扩展实体类
/// </summary>
public class RB_Student_ExamDetails_Extend : RB_Student_ExamDetails
{
/// <summary>
/// 考试编号【查询使用】
/// </summary>
public string QExamIds { get; set; }
}
}
using Edu.Model.Entity.Exam;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Exam
{
/// <summary>
/// 学员练习考试扩展实体类
/// </summary>
public class RB_Student_Exam_Extend : RB_Student_Exam
{
/// <summary>
/// 题库编号【查询使用】
/// </summary>
public string QBankIds { get; set; }
/// <summary>
/// 学员考试详情列表
/// </summary>
public List<RB_Student_ExamDetails_Extend> ExamDetailsList { get; set; }
/// <summary>
/// 开始时间字符串
/// </summary>
public string StartTimeStr { get { return Common.ConvertHelper.FormatTime(this.StartTime); } }
/// <summary>
/// 结束时间字符串
/// </summary>
public string EndTimeStr { get { return Common.ConvertHelper.FormatTime(this.EndTime); } }
/// <summary>
/// 相差分钟数
/// </summary>
public int ExamMinutes { get { return Common.ConvertHelper.CalcMinutes(this.StartTime, this.EndTime); } }
}
}
......@@ -65,6 +65,16 @@ namespace Edu.Module.Exam
/// </summary>
private readonly RB_Student_PracticeRepository student_PracticeRepository = new RB_Student_PracticeRepository();
/// <summary>
/// 学员练习考试仓储层对象
/// </summary>
private readonly RB_Student_ExamRepository student_ExamRepository = new RB_Student_ExamRepository();
/// <summary>
/// 学员练习考试详情仓储层对象
/// </summary>
private readonly RB_Student_ExamDetailsRepository student_ExamDetailsRepository = new RB_Student_ExamDetailsRepository();
#region 单词测试和复习
/// <summary>
/// 生成课程复习和预习单词
......@@ -690,6 +700,11 @@ namespace Edu.Module.Exam
readingFinishCount = finishList?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ReadingChoose)?.Count() ?? 0;
listeningFinishCount = finishList?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.Listening)?.Count() ?? 0;
grammarFinishCount = finishList?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseGrammarUse)?.Count() ?? 0;
wordsTotalCount = finishList?.Where(qitem =>
qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseWord
|| qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseMean
|| qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseWordUse
)?.Count() ?? 0;
}
var list = questionRepository.GetQuestionCategoryListRepository(query);
if (list != null && list.Count > 0)
......@@ -697,6 +712,11 @@ namespace Edu.Module.Exam
readingTotalCount = list?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ReadingChoose)?.Sum(qitem => qitem.QuestionCount) ?? 0;
listeningTotalCount = list?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.Listening)?.Sum(qitem => qitem.QuestionCount) ?? 0;
grammarTotalCount = list?.Where(qitem => qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseGrammarUse)?.Sum(qitem => qitem.QuestionCount) ?? 0;
wordsTotalCount = list?.Where(qitem =>
qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseWord
|| qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseMean
|| qitem.Category == Common.Enum.Course.QuestionCategoryEnum.ChooseWordUse
)?.Sum(qitem => qitem.QuestionCount) ?? 0;
}
obj = new
{
......@@ -712,6 +732,14 @@ namespace Edu.Module.Exam
return obj;
}
/// <summary>
/// 根据题目分类获取题目分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<object> GetAppQuestionCategoryListModule(int pageIndex, int pageSize, out long rowsCount, RB_Question_ViewModel query)
{
List<object> list = new List<object>();
......@@ -805,14 +833,31 @@ namespace Edu.Module.Exam
var bankList = question_BankRepository.GetQuestionBankPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (bankList != null && bankList.Count > 0)
{
string bankIds = string.Join(",", bankList.Select(qitem => qitem.BankId));
List<RB_Student_Exam_Extend> stuExamList = new List<RB_Student_Exam_Extend>();
if (!string.IsNullOrEmpty(bankIds))
{
stuExamList= student_ExamRepository.GetStudentExamListRepository(new RB_Student_Exam_Extend()
{
GroupId = query.Group_Id,
QBankIds = bankIds
});
}
foreach (var item in bankList)
{
var tempList = stuExamList?.Where(qitem => qitem.BankId == item.BankId)?.ToList();
string LeastTime = "";
if (tempList != null)
{
var least = tempList?.OrderBy(qitem => qitem.ExamMinutes)?.FirstOrDefault();
}
var obj = new
{
item.BankId,
item.BankName,
JoinNum = new Random().Next(1, 100),
LeastTime = "30:55",
JoinNum = tempList?.Count(),
LeastTime,
HighestScore = new Random().Next(1, 100),
MyUseTime = "55:55",
MyScore = new Random().Next(1, 100),
......@@ -911,6 +956,16 @@ namespace Edu.Module.Exam
return result;
}
/// <summary>
/// 判断是否存在学生练习
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public bool ExistsStudentPracticeModule(RB_Student_Practice_Extend model)
{
return false;
}
/// <summary>
/// 新增修改学员练习
/// </summary>
......
......@@ -221,6 +221,7 @@ namespace Edu.Module.User
Password=extModel.Password,
Token = token,
UserRole = extModel.UserRole,
AuditStatus= Common.Enum.User.AccountStatusEnum.Pass,
});
break;
case Common.Enum.User.AccountTypeEnum.Assist:
......@@ -250,7 +251,8 @@ namespace Edu.Module.User
DirectSupervisor=extModel.DirectSupervisor,
AssistAccount=extModel.Account,
Password=extModel.Password,
Token = token
Token = token,
AuditStatus= Common.Enum.User.AccountStatusEnum.Pass,
});
break;
}
......
using Edu.Model.Entity.Exam;
using Edu.Model.ViewModel.Exam;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Exam
{
/// <summary>
/// 学员练习考试详情仓储层
/// </summary>
public class RB_Student_ExamDetailsRepository : BaseRepository<RB_Student_ExamDetails>
{
/// <summary>
/// 获取学员练习考试详情列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_ExamDetails_Extend> GetStudentExamDetailsListRepository(RB_Student_ExamDetails_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_ExamDetails AS A
WHERE 1=1
");
if (query != null)
{
if (query.ExamId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_ExamDetails_Extend.ExamId), query.ExamId);
}
if (!string.IsNullOrEmpty(query.QExamIds))
{
builder.AppendFormat(@" AND A.{0} IN ({1}) ", nameof(RB_Student_ExamDetails_Extend.ExamId), query.QExamIds);
}
}
return Get<RB_Student_ExamDetails_Extend>(builder.ToString()).ToList();
}
}
}
using Edu.Model.Entity.Exam;
using Edu.Model.ViewModel.Exam;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Exam
{
/// <summary>
/// 学员练习考试仓储层
/// </summary>
public class RB_Student_ExamRepository : BaseRepository<RB_Student_Exam>
{
/// <summary>
/// 获取学员练习考试分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Exam_Extend> GetStudentExamPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Student_Exam_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Exam AS A
WHERE 1=1
");
if (query != null)
{
if (query.GroupId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_Exam_Extend.GroupId), query.GroupId);
}
if (query.StudentId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_Exam_Extend.StudentId), query.StudentId);
}
if (query.BankId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_Exam_Extend.BankId), query.BankId);
}
if (!string.IsNullOrEmpty(query.QBankIds))
{
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Student_Exam_Extend.BankId), query.QBankIds);
}
}
return GetPage<RB_Student_Exam_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
/// 获取学员练习考试列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Exam_Extend> GetStudentExamListRepository( RB_Student_Exam_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Exam AS A
WHERE 1=1
");
if (query != null)
{
if (query.GroupId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_Exam_Extend.GroupId), query.GroupId);
}
if (query.StudentId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_Exam_Extend.StudentId), query.StudentId);
}
if (query.BankId > 0)
{
builder.AppendFormat(@" AND A.{0}={1} ", nameof(RB_Student_Exam_Extend.BankId), query.BankId);
}
if (!string.IsNullOrEmpty(query.QBankIds))
{
builder.AppendFormat(@" AND A.{0} IN({1}) ", nameof(RB_Student_Exam_Extend.BankId), query.QBankIds);
}
}
return Get<RB_Student_Exam_Extend>(builder.ToString()).ToList();
}
}
}
......@@ -528,6 +528,13 @@ WHERE o.OrderState=1 and og.`Status`=0 and sog.`Status`=0 and og.GuestState <>2
{
model.StuSourceId = 0;
}
else if (model.CreateType == Common.Enum.User.StuCreateTypeEnum.CustomerInput)
{
if (model.CustomerId <= 0 && model.StuSourceId > 0)
{
model.CustomerId = model.StuSourceId;
}
}
model.StuTel = Common.Plugin.StringHelper.ReplaceMobile(model.StuRealMobile);
if (model.StuId > 0)
......
......@@ -968,7 +968,7 @@ namespace Edu.WebApi.Controllers.Exam
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetAppQuestionStaticModule()
public ApiResult GetAppQuestionStatic()
{
var query = new RB_Question_ViewModel()
{
......@@ -984,13 +984,13 @@ namespace Edu.WebApi.Controllers.Exam
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetQuestionWordsList()
public ApiResult GetQuestionWords()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Question_ViewModel()
{
BankType = (LevelTypeEnum)base.ParmJObj.GetInt("BankType"),
QCategoryId = base.ParmJObj.GetStringValue("QCategoryId"),
QCategoryId = string.Format("{0},{1},{2}", (int)QuestionCategoryEnum.ChooseWord, (int)QuestionCategoryEnum.ChooseMean, (int)QuestionCategoryEnum.ChooseWordUse),
};
var list = courseExamModule.GetAppQuestionCategoryListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
......@@ -1090,5 +1090,32 @@ namespace Edu.WebApi.Controllers.Exam
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 学员提交联系结果
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetStudentPractice()
{
var model = new RB_Student_Practice_Extend()
{
Id=base.ParmJObj.GetInt("Id"),
StudentId=base.ParmJObj.GetInt("StudentId"),
Category=(QuestionCategoryEnum)base.ParmJObj.GetInt("Category"),
LevelType=(LevelTypeEnum)base.ParmJObj.GetInt("LevelType"),
QuestionId=base.ParmJObj.GetInt("QuestionId"),
Title=base.ParmJObj.GetStringValue("Title"),
QuestionContent=base.ParmJObj.GetStringValue("QuestionContent"),
QuestionTypeId=base.ParmJObj.GetInt("QuestionTypeId"),
QuestionTypeKey=base.ParmJObj.GetStringValue("QuestionTypeKey"),
Answer=base.ParmJObj.GetStringValue("Answer"),
AnswerParse=base.ParmJObj.GetStringValue("AnswerParse"),
IsAnswer=base.ParmJObj.GetInt("IsAnswer"),
IsWrong=base.ParmJObj.GetInt("IsWrong"),
};
bool flag = courseExamModule.SetStudentPracticeModule(model);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment