代码优化

master
xiaochanghai 1 year ago
parent 5d55f56da8
commit e8a9d65b91
  1. 15
      Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamPaperController.cs
  2. 50
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. 8
      Tiobon.Core.Api/Tiobon.Core.xml
  4. 26
      Tiobon.Core.Common/Attribute/QueryFilter.cs
  5. 1
      Tiobon.Core.IServices/Ghre/IGhre_ExamPaperServices.cs
  6. 5
      Tiobon.Core.Model/Base/Ghre/Ghre_ExamPaperQuestion.Dto.Base.cs
  7. 5
      Tiobon.Core.Model/Models/Ghre/Ghre_ExamPaperQuestion.cs
  8. 11
      Tiobon.Core.Model/View/Ghre/Ghre_ExamPaper.Dto.View.cs
  9. 11
      Tiobon.Core.Model/View/Ghre/Ghre_Question.Dto.View.cs
  10. 11
      Tiobon.Core.Model/ViewModels/Extend/FromGhre_QuestionInput.cs
  11. 2
      Tiobon.Core.Repository/BASE/BaseRepository.cs
  12. 382
      Tiobon.Core.Services/BASE/BaseServices.cs
  13. 336
      Tiobon.Core.Services/BASE/BaseServices1.cs
  14. 95
      Tiobon.Core.Services/Ghre/Ghre_ExamPaperServices.cs
  15. 32
      Tiobon.Core.Services/Ghre/Ghre_QuestionServices.cs
  16. 50
      Tiobon.Core/Tiobon.Core.Model.xml
  17. 8
      Tiobon.Core/Tiobon.Core.xml

@ -26,6 +26,7 @@ public class Ghre_ExamPaperController : BaseController<IGhre_ExamPaperServices,
return await _service.QueryDefault(Id); return await _service.QueryDefault(Id);
} }
#endregion #endregion
#region 新增 #region 新增
/// <summary> /// <summary>
@ -40,6 +41,20 @@ public class Ghre_ExamPaperController : BaseController<IGhre_ExamPaperServices,
} }
#endregion #endregion
#region 更新
/// <summary>
/// 更新
/// </summary>
/// <param name="id"></param>
/// <param name="insert"></param>
/// <returns></returns>
[HttpPost("Update1/{id}")]
public async Task<ServiceResult> Update1(long id, [FromBody] DefaultGhre_ExamPaperPageData insert)
{
return await _service.Update1(id, insert);
}
#endregion
#region 新增配置数据 #region 新增配置数据
/// <summary> /// <summary>

@ -853,6 +853,11 @@
试卷配置ID 试卷配置ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestionBase.TaxisNo">
<summary>
排序号
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestionBase.RemarkSz"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestionBase.RemarkSz">
<summary> <summary>
备注 备注
@ -2456,6 +2461,11 @@
试卷配置ID 试卷配置ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestion.TaxisNo">
<summary>
排序号
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestion.RemarkSz"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestion.RemarkSz">
<summary> <summary>
备注 备注
@ -3744,6 +3754,16 @@
附件(Dto.View) 附件(Dto.View)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_AttachmentDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_AttachmentDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CourseDto"> <member name="T:Tiobon.Core.Model.Models.Ghre_CourseDto">
<summary> <summary>
Ghre_Course(Dto.View) Ghre_Course(Dto.View)
@ -3764,6 +3784,16 @@
试卷(Dto.View) 试卷(Dto.View)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamPaperConfigDto"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamPaperConfigDto">
<summary> <summary>
试卷配置(Dto.View) 试卷配置(Dto.View)
@ -3794,6 +3824,16 @@
题目类型 题目类型
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_QuestionDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_QuestionDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_QuestionAnswerDto"> <member name="T:Tiobon.Core.Model.Models.Ghre_QuestionAnswerDto">
<summary> <summary>
题目答案(Dto.View) 题目答案(Dto.View)
@ -4977,5 +5017,15 @@
试卷配置ID 试卷配置ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.FromGhre_QuestionBaseData.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.FromGhre_QuestionBaseData.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
</members> </members>
</doc> </doc>

@ -662,6 +662,14 @@
<param name="insert"></param> <param name="insert"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamPaperController.Update1(System.Int64,Tiobon.Core.Model.DefaultGhre_ExamPaperPageData)">
<summary>
更新
</summary>
<param name="id"></param>
<param name="insert"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamPaperController.InsertConfig(Tiobon.Core.Model.Models.InsertGhre_ExamPaperConfigInput)"> <member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamPaperController.InsertConfig(Tiobon.Core.Model.Models.InsertGhre_ExamPaperConfigInput)">
<summary> <summary>
新增配置数据 新增配置数据

@ -66,22 +66,11 @@ public class QueryFilter
/// </summary> /// </summary>
public class QueryBody public class QueryBody
{ {
private int _pageNum;
/// <summary> /// <summary>
/// 起始位置(e.g. 0) /// 起始位置(e.g. 0)
/// </summary> /// </summary>
[Required] [Required]
public int pageNum public int pageNum { get; set; }
{
get { return _pageNum; }
set
{
//前端默认从分页显示默认1开始,所以后端需要-1
if (value >= 1)
value -= 1;
_pageNum = value;
}
}
/// <summary> /// <summary>
/// 每页数量(e.g. 10) /// 每页数量(e.g. 10)
/// </summary> /// </summary>
@ -103,17 +92,8 @@ public class QueryBody
/// <summary> /// <summary>
/// 排序条件表达式(e.g. LoginName ASC,Name DESC) /// 排序条件表达式(e.g. LoginName ASC,Name DESC)
/// </summary> /// </summary>
public string Sorting { get; set; } public string orderBy { get; set; }
/// <summary>
/// 缺省值
/// </summary>
public static QueryBody Default => new QueryBody
{
pageNum = 1,
pageSize = 100000,
Sorting = string.Empty,
jsonParam = default
};
} }
public class JsonParam public class JsonParam
{ {

@ -14,5 +14,6 @@ namespace Tiobon.Core.IServices
Task<ServiceResult<InsertExamPaperConfigInput>> InsertConfig(InsertGhre_ExamPaperConfigInput insert); Task<ServiceResult<InsertExamPaperConfigInput>> InsertConfig(InsertGhre_ExamPaperConfigInput insert);
Task<ServiceResult<long>> Insert1([FromBody] DefaultGhre_ExamPaperPageData insert); Task<ServiceResult<long>> Insert1([FromBody] DefaultGhre_ExamPaperPageData insert);
Task<ServiceResult> Update1(long id, DefaultGhre_ExamPaperPageData insertModel);
} }
} }

@ -42,6 +42,11 @@ namespace Tiobon.Core.Model.Models
/// </summary> /// </summary>
public long? ConfigId { get; set; } public long? ConfigId { get; set; }
/// <summary>
/// 排序号
/// </summary>
public int? TaxisNo { get; set; }
/// <summary> /// <summary>
/// 备注 /// 备注
/// </summary> /// </summary>

@ -44,6 +44,11 @@ namespace Tiobon.Core.Model.Models
/// </summary> /// </summary>
public long? ConfigId { get; set; } public long? ConfigId { get; set; }
/// <summary>
/// 排序号
/// </summary>
public int? TaxisNo { get; set; }
/// <summary> /// <summary>
/// 备注 /// 备注
/// </summary> /// </summary>

@ -23,5 +23,16 @@ namespace Tiobon.Core.Model.Models
/// </summary> /// </summary>
public class Ghre_ExamPaperDto : Ghre_ExamPaper public class Ghre_ExamPaperDto : Ghre_ExamPaper
{ {
/// <summary>
/// 创建信息
/// </summary>
public string CreateDataInfo { get; set; }
/// <summary>
/// 修改信息
/// </summary>
public string UpdateDataInfo { get; set; }
} }
} }

@ -45,5 +45,16 @@ namespace Tiobon.Core.Model.Models
/// 题目类型 /// 题目类型
/// </summary> /// </summary>
public string QuestionTypeLabel { get; set; } public string QuestionTypeLabel { get; set; }
/// <summary>
/// 创建信息
/// </summary>
public string CreateDataInfo { get; set; }
/// <summary>
/// 修改信息
/// </summary>
public string UpdateDataInfo { get; set; }
} }
} }

@ -28,6 +28,17 @@ public class FromGhre_QuestionBaseData
public List<long?> courseID { get; set; } = new List<long?> { }; public List<long?> courseID { get; set; } = new List<long?> { };
public string questionNo { get; set; } public string questionNo { get; set; }
/// <summary>
/// 创建信息
/// </summary>
public string CreateDataInfo { get; set; }
/// <summary>
/// 修改信息
/// </summary>
public string UpdateDataInfo { get; set; }
} }
public class FromGhre_QuestionQuestionType public class FromGhre_QuestionQuestionType
{ {

@ -513,7 +513,7 @@ namespace Tiobon.Core.Repository.Base
filter.pageSize = 10000; filter.pageSize = 10000;
query = query.Where(conditions); query = query.Where(conditions);
var list = await query var list = await query
.OrderByIF(!string.IsNullOrEmpty(filter.Sorting), filter.Sorting) .OrderByIF(!string.IsNullOrEmpty(filter.orderBy), filter.orderBy)
.ToPageListAsync(filter.pageNum, filter.pageSize, totalCount); .ToPageListAsync(filter.pageNum, filter.pageSize, totalCount);
return new ServicePageResult<TEntity>(filter.pageNum, totalCount, filter.pageSize, list); return new ServicePageResult<TEntity>(filter.pageNum, totalCount, filter.pageSize, list);

@ -1,10 +1,8 @@
using System.Data; using System.Data;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Reflection;
using AgileObjects.AgileMapper; using AgileObjects.AgileMapper;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using MySqlX.XDevAPI.Common;
using SqlSugar; using SqlSugar;
using Tiobon.Core.Common; using Tiobon.Core.Common;
using Tiobon.Core.Common.DB.Dapper; using Tiobon.Core.Common.DB.Dapper;
@ -15,338 +13,13 @@ using Tiobon.Core.Common.Helper;
using Tiobon.Core.Common.UserManager; using Tiobon.Core.Common.UserManager;
using Tiobon.Core.DataAccess; using Tiobon.Core.DataAccess;
using Tiobon.Core.IRepository.Base; using Tiobon.Core.IRepository.Base;
using Tiobon.Core.IServices;
using Tiobon.Core.IServices.BASE; using Tiobon.Core.IServices.BASE;
using Tiobon.Core.Model; using Tiobon.Core.Model;
using Tiobon.Core.Model.Models.RootTkey;
namespace Tiobon.Core.Services.BASE; namespace Tiobon.Core.Services.BASE;
public class BaseServices<TEntity> : IBaseServices<TEntity> where TEntity : class, new()
{
public BaseServices(IBaseRepository<TEntity> BaseDal = null)
{
this.BaseDal = BaseDal;
}
//public IBaseRepository<TEntity> baseDal = new BaseRepository<TEntity>();
public IBaseRepository<TEntity> BaseDal { get; set; } //通过在子类的构造函数中注入,这里是基类,不用构造函数
public ISqlSugarClient Db => BaseDal.Db;
public async Task<TEntity> QueryById(object objId)
{
return await BaseDal.QueryById(objId);
}
/// <summary>
/// 根据ID查询一条数据
/// </summary>
/// <param name="objId">id(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件</param>
/// <param name="blnUseCache">是否使用缓存</param>
/// <returns>数据实体</returns>
public async Task<TEntity> QueryById(object objId, bool blnUseCache = false)
{
return await BaseDal.QueryById(objId, blnUseCache);
}
/// <summary>
/// 根据ID查询数据
/// </summary>
/// <param name="lstIds">id列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件</param>
/// <returns>数据实体列表</returns>
public async Task<List<TEntity>> QueryByIDs(object[] lstIds)
{
return await BaseDal.QueryByIDs(lstIds);
}
/// <summary>
/// 写入实体数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<long> Add(TEntity entity)
{
return await BaseDal.Add(entity);
}
/// <summary>
/// 批量插入实体(速度快)
/// </summary>
/// <param name="listEntity">实体集合</param>
/// <returns>影响行数</returns>
public async Task<List<long>> Add(List<TEntity> listEntity)
{
return await BaseDal.Add(listEntity);
}
/// <summary>
/// 更新实体数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<bool> Update(TEntity entity)
{
return await BaseDal.Update(entity);
}
/// <summary>
/// 更新实体数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<bool> Update(List<TEntity> entity)
{
return await BaseDal.Update(entity);
}
public async Task<bool> Update(TEntity entity, string where)
{
return await BaseDal.Update(entity, where);
}
public async Task<bool> Update(object operateAnonymousObjects)
{
return await BaseDal.Update(operateAnonymousObjects);
}
public async Task<bool> Update(TEntity entity, List<string> lstColumns = null, List<string> lstIgnoreColumns = null, string where = "")
{
return await BaseDal.Update(entity, lstColumns, lstIgnoreColumns, where);
}
/// <summary>
/// 根据实体删除一条数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<bool> Delete(TEntity entity)
{
return await BaseDal.Delete(entity);
}
/// <summary>
/// 删除指定ID的数据
/// </summary>
/// <param name="id">主键ID</param>
/// <returns></returns>
public async Task<bool> DeleteById(object id)
{
return await BaseDal.DeleteById(id);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids">主键ID集合</param>
/// <returns></returns>
public async Task<bool> DeleteByIds(object[] ids)
{
return await BaseDal.DeleteByIds(ids);
}
/// <summary>
/// 查询所有数据
/// </summary>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query()
{
return await BaseDal.Query();
}
/// <summary>
/// 查询数据列表
/// </summary>
/// <param name="where">条件</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(string where)
{
return await BaseDal.Query(where);
}
/// <summary>
/// 查询数据列表
/// </summary>
/// <param name="whereExpression">whereExpression</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression)
{
return await BaseDal.Query(whereExpression);
}
/// <summary>
/// 按照特定列查询数据列表
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="expression"></param>
/// <returns></returns>
public async Task<List<TResult>> Query<TResult>(Expression<Func<TEntity, TResult>> expression)
{
return await BaseDal.Query(expression);
}
/// <summary>
/// 按照特定列查询数据列表带条件排序
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="whereExpression">过滤条件</param>
/// <param name="expression">查询实体条件</param>
/// <param name="orderByFileds">排序条件</param>
/// <returns></returns>
public async Task<List<TResult>> Query<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFileds)
{
return await BaseDal.Query(expression, whereExpression, orderByFileds);
}
/// <summary>
/// 查询一个列表
/// </summary>
/// <param name="whereExpression">条件表达式</param>
/// <param name="strOrderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
{
return await BaseDal.Query(whereExpression, orderByExpression, isAsc);
}
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string orderByFileds)
{
return await BaseDal.Query(whereExpression, orderByFileds);
}
/// <summary>
/// 查询一个列表
/// </summary>
/// <param name="where">条件</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(string where, string orderByFileds)
{
return await BaseDal.Query(where, orderByFileds);
}
/// <summary>
/// 根据sql语句查询
/// </summary>
/// <param name="sql">完整的sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>泛型集合</returns>
public async Task<List<TEntity>> QuerySql(string sql, SugarParameter[] parameters = null)
{
return await BaseDal.QuerySql(sql, parameters);
}
/// <summary>
/// 根据sql语句查询
/// </summary>
/// <param name="sql">完整的sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>DataTable</returns>
public async Task<DataTable> QueryTable(string sql, SugarParameter[] parameters = null)
{
return await BaseDal.QueryTable(sql, parameters);
}
/// <summary>
/// 查询前N条数据
/// </summary>
/// <param name="whereExpression">条件表达式</param>
/// <param name="top">前N条</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFileds)
{
return await BaseDal.Query(whereExpression, top, orderByFileds);
}
/// <summary>
/// 查询前N条数据
/// </summary>
/// <param name="where">条件</param>
/// <param name="top">前N条</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(string where, int top, string orderByFileds)
{
return await BaseDal.Query(where, top, orderByFileds);
}
/// <summary>
/// 分页查询
/// </summary>
/// <param name="whereExpression">条件表达式</param>
/// <param name="pageIndex">页码(下标0)</param>
/// <param name="pageSize">页大小</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFileds)
{
return await BaseDal.Query(whereExpression, pageIndex, pageSize, orderByFileds);
}
/// <summary>
/// 分页查询
/// </summary>
/// <param name="where">条件</param>
/// <param name="pageIndex">页码(下标0)</param>
/// <param name="pageSize">页大小</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(string where, int pageIndex, int pageSize, string orderByFileds)
{
return await BaseDal.Query(where, pageIndex, pageSize, orderByFileds);
}
public async Task<PageModel<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex = 1, int pageSize = 20, string orderByFileds = null)
{
return await BaseDal.QueryPage(whereExpression, pageIndex, pageSize, orderByFileds);
}
public async Task<List<TResult>> QueryMuch<T, T2, T3, TResult>(Expression<Func<T, T2, T3, object[]>> joinExpression, Expression<Func<T, T2, T3, TResult>> selectExpression, Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new()
{
return await BaseDal.QueryMuch(joinExpression, selectExpression, whereLambda);
}
public async Task<PageModel<TEntity>> QueryPage(PaginationModel pagination)
{
var express = DynamicLinqFactory.CreateLambda<TEntity>(pagination.Conditions);
return await QueryPage(express, pagination.PageIndex, pagination.PageSize, pagination.OrderByFileds);
}
#region 分表
public async Task<List<long>> AddSplit(TEntity entity)
{
return await BaseDal.AddSplit(entity);
}
public async Task<bool> UpdateSplit(TEntity entity, DateTime dateTime)
{
return await BaseDal.UpdateSplit(entity, dateTime);
}
/// <summary>
/// 根据实体删除一条数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<bool> DeleteSplit(TEntity entity, DateTime dateTime)
{
return await BaseDal.DeleteSplit(entity, dateTime);
}
public async Task<TEntity> QueryByIdSplit(object objId)
{
return await BaseDal.QueryByIdSplit(objId);
}
public async Task<PageModel<TEntity>> QueryPageSplit(Expression<Func<TEntity, bool>> whereExpression, DateTime beginTime, DateTime endTime, int pageIndex = 1, int pageSize = 20, string orderByFields = null)
{
return await BaseDal.QueryPageSplit(whereExpression, beginTime, endTime, pageIndex, pageSize, orderByFields);
}
#endregion
}
/// <summary> /// <summary>
/// 增删改查基础服务 /// 增删改查基础服务
/// </summary> /// </summary>
@ -380,7 +53,50 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
public async Task<TEntityDto> QueryById(object objId) public async Task<TEntityDto> QueryById(object objId)
{ {
var data = await BaseDal.QueryById(objId); var data = await BaseDal.QueryById(objId);
return Mapper.Map(data).ToANew<TEntityDto>(); var dto = Mapper.Map(data).ToANew<TEntityDto>();
#region 系统信息
var getType = typeof(TEntityDto).GetProperties();
if (getType.Any(p => p.Name == "CreateDataInfo") && getType.Any(p => p.Name == "UpdateDataInfo"))
{
var userIds = new List<int?>();
var CreateDataInfo = getType.Where(p => p.Name == "CreateDataInfo").FirstOrDefault();
var UpdateDataInfo = getType.Where(p => p.Name == "UpdateDataInfo").FirstOrDefault();
var CreateBy = getType.Where(p => p.Name == "CreateBy").FirstOrDefault();
var UpdateBy = getType.Where(p => p.Name == "UpdateBy").FirstOrDefault();
var CreateTime = getType.Where(p => p.Name == "CreateTime").FirstOrDefault();
var UpdateTime = getType.Where(p => p.Name == "UpdateTime").FirstOrDefault();
var createBy = CreateBy.GetValue(dto, null);
var updateBy = UpdateBy.GetValue(dto, null);
DateTime? createTime = CreateTime.GetValue(dto, null) != null ? Convert.ToDateTime(CreateTime.GetValue(dto, null)) : null;
DateTime? updateTime = UpdateTime.GetValue(dto, null) != null ? Convert.ToDateTime(UpdateTime.GetValue(dto, null)) : null;
if (createBy != null)
{
var dt = await Db.Ado.GetDataTableAsync($"SELECT UserId, UserName FROM Ghrs_User WHERE UserId='{createBy}'");
if (dt.Rows.Count > 0)
CreateDataInfo.SetValue(dto, $"创建信息 {dt.Rows[0]["UserName"]} 于 {(createTime != null ? createTime.Value.ToString(@"yyyy\/MM\/dd HH:mm") : null)} 创建");
}
if (updateBy != null)
{
var dt = await Db.Ado.GetDataTableAsync($"SELECT UserId, UserName FROM Ghrs_User WHERE UserId='{updateBy}'");
UpdateDataInfo.SetValue(dto, $"修改信息 {dt.Rows[0]["UserName"]} 于 {(updateTime != null ? updateTime.Value.ToString(@"yyyy\/MM\/dd HH:mm") : null)} 最后修改");
}
}
//if (exampaper.CreateBy != null)
// userIds.Add(Convert.ToInt32(exampaper.CreateBy.Value));
//if (exampaper.UpdateBy != null)
// userIds.Add(Convert.ToInt32(exampaper.UpdateBy.Value));
//var users = await _ghrs_UserServices.Query(x => userIds.Contains(x.UserId));
//if (exampaper.CreateBy != null)
// input.CreateDataInfo =
//if (exampaper.UpdateBy != null)
// input.CreateDataInfo = ;
#endregion
return dto;
} }
/// <summary> /// <summary>
@ -879,7 +595,7 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
/// <returns></returns> /// <returns></returns>
protected void ConvertTEditDto2TEntity(TEditDto source, TEntity dest) protected void ConvertTEditDto2TEntity(TEditDto source, TEntity dest)
{ {
foreach (PropertyInfo mItem in typeof(TEditDto).GetProperties()) foreach (System.Reflection.PropertyInfo mItem in typeof(TEditDto).GetProperties())
{ {
if (dest.HasField(mItem.Name)) if (dest.HasField(mItem.Name))
dest.SetValueForField(mItem.Name, mItem.GetValue(source, null)); dest.SetValueForField(mItem.Name, mItem.GetValue(source, null));
@ -926,7 +642,7 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
entity.GetOnlyList(out names, out values, out descriptions); entity.GetOnlyList(out names, out values, out descriptions);
for (int i = 0; i < names.Count; i++) for (int i = 0; i < names.Count; i++)
{ {
CheckCodeExist(tableName, names[i], values[i], id != null ? ModifyType.Edit : ModifyType.Add, descriptions[i]); CheckCodeExist(tableName, names[i], values[i], id != null ? ModifyType.Edit : ModifyType.Add, descriptions[i], id);
} }
} }
/// <summary> /// <summary>

@ -0,0 +1,336 @@
using System.Data;
using System.Linq.Expressions;
using SqlSugar;
using Tiobon.Core.Common.Helper;
using Tiobon.Core.IRepository.Base;
using Tiobon.Core.IServices.BASE;
using Tiobon.Core.Model;
namespace Tiobon.Core.Services.BASE;
public class BaseServices<TEntity> : IBaseServices<TEntity> where TEntity : class, new()
{
public BaseServices(IBaseRepository<TEntity> BaseDal = null)
{
this.BaseDal = BaseDal;
}
//public IBaseRepository<TEntity> baseDal = new BaseRepository<TEntity>();
public IBaseRepository<TEntity> BaseDal { get; set; } //通过在子类的构造函数中注入,这里是基类,不用构造函数
public ISqlSugarClient Db => BaseDal.Db;
public async Task<TEntity> QueryById(object objId)
{
return await BaseDal.QueryById(objId);
}
/// <summary>
/// 根据ID查询一条数据
/// </summary>
/// <param name="objId">id(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件</param>
/// <param name="blnUseCache">是否使用缓存</param>
/// <returns>数据实体</returns>
public async Task<TEntity> QueryById(object objId, bool blnUseCache = false)
{
return await BaseDal.QueryById(objId, blnUseCache);
}
/// <summary>
/// 根据ID查询数据
/// </summary>
/// <param name="lstIds">id列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件</param>
/// <returns>数据实体列表</returns>
public async Task<List<TEntity>> QueryByIDs(object[] lstIds)
{
return await BaseDal.QueryByIDs(lstIds);
}
/// <summary>
/// 写入实体数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<long> Add(TEntity entity)
{
return await BaseDal.Add(entity);
}
/// <summary>
/// 批量插入实体(速度快)
/// </summary>
/// <param name="listEntity">实体集合</param>
/// <returns>影响行数</returns>
public async Task<List<long>> Add(List<TEntity> listEntity)
{
return await BaseDal.Add(listEntity);
}
/// <summary>
/// 更新实体数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<bool> Update(TEntity entity)
{
return await BaseDal.Update(entity);
}
/// <summary>
/// 更新实体数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<bool> Update(List<TEntity> entity)
{
return await BaseDal.Update(entity);
}
public async Task<bool> Update(TEntity entity, string where)
{
return await BaseDal.Update(entity, where);
}
public async Task<bool> Update(object operateAnonymousObjects)
{
return await BaseDal.Update(operateAnonymousObjects);
}
public async Task<bool> Update(TEntity entity, List<string> lstColumns = null, List<string> lstIgnoreColumns = null, string where = "")
{
return await BaseDal.Update(entity, lstColumns, lstIgnoreColumns, where);
}
/// <summary>
/// 根据实体删除一条数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<bool> Delete(TEntity entity)
{
return await BaseDal.Delete(entity);
}
/// <summary>
/// 删除指定ID的数据
/// </summary>
/// <param name="id">主键ID</param>
/// <returns></returns>
public async Task<bool> DeleteById(object id)
{
return await BaseDal.DeleteById(id);
}
/// <summary>
/// 删除指定ID集合的数据(批量删除)
/// </summary>
/// <param name="ids">主键ID集合</param>
/// <returns></returns>
public async Task<bool> DeleteByIds(object[] ids)
{
return await BaseDal.DeleteByIds(ids);
}
/// <summary>
/// 查询所有数据
/// </summary>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query()
{
return await BaseDal.Query();
}
/// <summary>
/// 查询数据列表
/// </summary>
/// <param name="where">条件</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(string where)
{
return await BaseDal.Query(where);
}
/// <summary>
/// 查询数据列表
/// </summary>
/// <param name="whereExpression">whereExpression</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression)
{
return await BaseDal.Query(whereExpression);
}
/// <summary>
/// 按照特定列查询数据列表
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="expression"></param>
/// <returns></returns>
public async Task<List<TResult>> Query<TResult>(Expression<Func<TEntity, TResult>> expression)
{
return await BaseDal.Query(expression);
}
/// <summary>
/// 按照特定列查询数据列表带条件排序
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="whereExpression">过滤条件</param>
/// <param name="expression">查询实体条件</param>
/// <param name="orderByFileds">排序条件</param>
/// <returns></returns>
public async Task<List<TResult>> Query<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFileds)
{
return await BaseDal.Query(expression, whereExpression, orderByFileds);
}
/// <summary>
/// 查询一个列表
/// </summary>
/// <param name="whereExpression">条件表达式</param>
/// <param name="strOrderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
{
return await BaseDal.Query(whereExpression, orderByExpression, isAsc);
}
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string orderByFileds)
{
return await BaseDal.Query(whereExpression, orderByFileds);
}
/// <summary>
/// 查询一个列表
/// </summary>
/// <param name="where">条件</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(string where, string orderByFileds)
{
return await BaseDal.Query(where, orderByFileds);
}
/// <summary>
/// 根据sql语句查询
/// </summary>
/// <param name="sql">完整的sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>泛型集合</returns>
public async Task<List<TEntity>> QuerySql(string sql, SugarParameter[] parameters = null)
{
return await BaseDal.QuerySql(sql, parameters);
}
/// <summary>
/// 根据sql语句查询
/// </summary>
/// <param name="sql">完整的sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>DataTable</returns>
public async Task<DataTable> QueryTable(string sql, SugarParameter[] parameters = null)
{
return await BaseDal.QueryTable(sql, parameters);
}
/// <summary>
/// 查询前N条数据
/// </summary>
/// <param name="whereExpression">条件表达式</param>
/// <param name="top">前N条</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFileds)
{
return await BaseDal.Query(whereExpression, top, orderByFileds);
}
/// <summary>
/// 查询前N条数据
/// </summary>
/// <param name="where">条件</param>
/// <param name="top">前N条</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(string where, int top, string orderByFileds)
{
return await BaseDal.Query(where, top, orderByFileds);
}
/// <summary>
/// 分页查询
/// </summary>
/// <param name="whereExpression">条件表达式</param>
/// <param name="pageIndex">页码(下标0)</param>
/// <param name="pageSize">页大小</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFileds)
{
return await BaseDal.Query(whereExpression, pageIndex, pageSize, orderByFileds);
}
/// <summary>
/// 分页查询
/// </summary>
/// <param name="where">条件</param>
/// <param name="pageIndex">页码(下标0)</param>
/// <param name="pageSize">页大小</param>
/// <param name="orderByFileds">排序字段,如name asc,age desc</param>
/// <returns>数据列表</returns>
public async Task<List<TEntity>> Query(string where, int pageIndex, int pageSize, string orderByFileds)
{
return await BaseDal.Query(where, pageIndex, pageSize, orderByFileds);
}
public async Task<PageModel<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex = 1, int pageSize = 20, string orderByFileds = null)
{
return await BaseDal.QueryPage(whereExpression, pageIndex, pageSize, orderByFileds);
}
public async Task<List<TResult>> QueryMuch<T, T2, T3, TResult>(Expression<Func<T, T2, T3, object[]>> joinExpression, Expression<Func<T, T2, T3, TResult>> selectExpression, Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new()
{
return await BaseDal.QueryMuch(joinExpression, selectExpression, whereLambda);
}
public async Task<PageModel<TEntity>> QueryPage(PaginationModel pagination)
{
var express = DynamicLinqFactory.CreateLambda<TEntity>(pagination.Conditions);
return await QueryPage(express, pagination.PageIndex, pagination.PageSize, pagination.OrderByFileds);
}
#region 分表
public async Task<List<long>> AddSplit(TEntity entity)
{
return await BaseDal.AddSplit(entity);
}
public async Task<bool> UpdateSplit(TEntity entity, DateTime dateTime)
{
return await BaseDal.UpdateSplit(entity, dateTime);
}
/// <summary>
/// 根据实体删除一条数据
/// </summary>
/// <param name="entity">博文实体类</param>
/// <returns></returns>
public async Task<bool> DeleteSplit(TEntity entity, DateTime dateTime)
{
return await BaseDal.DeleteSplit(entity, dateTime);
}
public async Task<TEntity> QueryByIdSplit(object objId)
{
return await BaseDal.QueryByIdSplit(objId);
}
public async Task<PageModel<TEntity>> QueryPageSplit(Expression<Func<TEntity, bool>> whereExpression, DateTime beginTime, DateTime endTime, int pageIndex = 1, int pageSize = 20, string orderByFields = null)
{
return await BaseDal.QueryPageSplit(whereExpression, beginTime, endTime, pageIndex, pageSize, orderByFields);
}
#endregion
}

@ -303,28 +303,17 @@ namespace Tiobon.Core.Services
baseData.CourseId = exampaper.LinkId; baseData.CourseId = exampaper.LinkId;
baseData.CourseSceneId = exampaper.LinkId; baseData.CourseSceneId = exampaper.LinkId;
input.pageData.baseData = baseData; input.pageData.baseData = baseData;
input.CreateDataInfo = exampaper.CreateDataInfo;
#region 系统信息 input.UpdateDataInfo = exampaper.UpdateDataInfo;
var userIds = new List<int?>();
if (exampaper.CreateBy != null)
userIds.Add(Convert.ToInt32(exampaper.CreateBy.Value));
if (exampaper.UpdateBy != null)
userIds.Add(Convert.ToInt32(exampaper.UpdateBy.Value));
var users = await _ghrs_UserServices.Query(x => userIds.Contains(x.UserId));
if (exampaper.CreateBy != null)
input.CreateDataInfo = $"创建信息 {users.FirstOrDefault(x => x.UserId == exampaper.CreateBy)?.UserName} 于 {(exampaper.CreateTime != null ? exampaper.CreateTime.Value.ToString(@"yyyy\/MM\/dd HH:mm") : null)} 创建";
if (exampaper.UpdateBy != null)
input.CreateDataInfo = $"修改信息 {users.FirstOrDefault(x => x.UserId == exampaper.UpdateBy)?.UserName} 于 {(exampaper.UpdateTime != null ? exampaper.UpdateTime.Value.ToString(@"yyyy\/MM\/dd HH:mm") : null)} 最后修改";
#endregion
input.pageData.styleInfo.coverImage = exampaper.CoverUrl; input.pageData.styleInfo.coverImage = exampaper.CoverUrl;
input.pageData.styleInfo.paperStyle = exampaper.Style; input.pageData.styleInfo.paperStyle = exampaper.Style;
input.pageData.examPaperSetType = exampaper.SetMethod; input.pageData.examPaperSetType = exampaper.SetMethod;
input.pageData.examPaperSetData = await _ghre_ExamPaperConfigServices.Query(x => x.ExamPaperId == Id); input.pageData.examPaperSetData = await _ghre_ExamPaperConfigServices.Query(x => x.ExamPaperId == Id, "TaxisNo ASC");
var questions = await _ghre_ExamPaperQuestionServices.Query(x => x.ExamPaperId == Id); var questions = await _ghre_ExamPaperQuestionServices.Query(x => x.ExamPaperId == Id, "TaxisNo ASC");
var previews = questions.Where(x => x.QuestionId != null).Select(x => new DefaultGhre_ExamPaperPreview() var previews = questions.Where(x => x.QuestionId != null).Select(x => new DefaultGhre_ExamPaperPreview()
{ {
Id = x.Id, Id = x.Id,
@ -367,9 +356,11 @@ namespace Tiobon.Core.Services
//}); //});
var detail = new FromGhre_QuestionQuestionTypeDetail(); var detail = new FromGhre_QuestionQuestionTypeDetail();
detail.content = x.QuestionContent;
detail.difficulty = questions1.FirstOrDefault(a => a.Id == x.QuestionId)?.DifficultyLevel;
detail.answer = answers1.Where(x => x.IsCorrect == true).FirstOrDefault()?.QuestionNo; detail.answer = answers1.Where(x => x.IsCorrect == true).FirstOrDefault()?.QuestionNo;
detail.answer1 = answers1.Where(x => x.IsCorrect == true).Select(x => x.QuestionNo).ToList(); detail.answer1 = answers1.Where(x => x.IsCorrect == true).Select(x => x.QuestionNo).ToList();
detail.answerList = answers.Select(x => new FromGhre_QuestionQuestionAnswerList() detail.answerList = answers1.Select(x => new FromGhre_QuestionQuestionAnswerList()
{ {
No = x.QuestionNo, No = x.QuestionNo,
label = x.AnswerContent, label = x.AnswerContent,
@ -460,10 +451,61 @@ namespace Tiobon.Core.Services
insert.LinkId = insertModel.baseData.LinkType == "CourseId" ? insertModel.baseData.CourseId : insertModel.baseData.CourseSceneId; insert.LinkId = insertModel.baseData.LinkType == "CourseId" ? insertModel.baseData.CourseId : insertModel.baseData.CourseSceneId;
insert.CoverUrl = insertModel.styleInfo.coverImage; insert.CoverUrl = insertModel.styleInfo.coverImage;
insert.Style = insertModel.styleInfo.paperStyle; insert.Style = insertModel.styleInfo.paperStyle;
insert.ScoreMethod = insertModel.examPaperSetType; insert.SetMethod = insertModel.examPaperSetType;
insert.Status = "Draft"; insert.Status = "Draft";
var id = await Add(insert); var id = await Add(insert);
var configs = Mapper.Map(insertModel.examPaperSetData).ToANew<List<Ghre_ExamPaperConfig>>();
configs.ForEach(x => x.ExamPaperId = id);
var insertConfigs = Db.Insertable(configs);
string sql = insertConfigs.ToSqlString();
long row = await Db.Ado.ExecuteCommandAsync(sql);
var questions = insertModel.previewList
.Select(x =>
new InsertGhre_ExamPaperQuestionInput
{
ExamPaperId = id,
QuestionId = x.QuestionId,
ConfigId = x.parentId,
}).ToList();
await _ghre_ExamPaperQuestionServices.Add(questions);
await Db.Ado.CommitTranAsync();
return ServiceResult<long>.OprateSuccess("新增成功!", id);
}
catch (Exception)
{
await Db.Ado.RollbackTranAsync();
throw;
}
}
public async Task<ServiceResult> Update1(long id, DefaultGhre_ExamPaperPageData insertModel)
{
await Db.Ado.BeginTranAsync();
try
{
Db.Ado.ExecuteCommand($@"delete from Ghre_ExamPaperConfig WHERE ExamPaperId='{id}';
delete from Ghre_ExamPaperQuestion WHERE ExamPaperId='{id}';");
var insert = new EditGhre_ExamPaperInput();
insert = Mapper.Map(insertModel.baseData).ToANew<EditGhre_ExamPaperInput>();
insert.PaperNo = await GenerateContinuousSequence("Ghre_ExamPaper", "PaperNo", "P");
insert.LinkId = insertModel.baseData.LinkType == "CourseId" ? insertModel.baseData.CourseId : insertModel.baseData.CourseSceneId;
insert.CoverUrl = insertModel.styleInfo.coverImage;
insert.Style = insertModel.styleInfo.paperStyle;
insert.SetMethod = insertModel.examPaperSetType;
insert.Status = "Draft";
await Update(id, insert);
var configs = Mapper.Map(insertModel.examPaperSetData).ToANew<List<Ghre_ExamPaperConfig>>(); var configs = Mapper.Map(insertModel.examPaperSetData).ToANew<List<Ghre_ExamPaperConfig>>();
configs.ForEach(x => x.ExamPaperId = id); configs.ForEach(x => x.ExamPaperId = id);
var insertConfigs = Db.Insertable(configs); var insertConfigs = Db.Insertable(configs);
@ -482,7 +524,7 @@ namespace Tiobon.Core.Services
await _ghre_ExamPaperQuestionServices.Add(questions); await _ghre_ExamPaperQuestionServices.Add(questions);
await Db.Ado.CommitTranAsync(); await Db.Ado.CommitTranAsync();
return ServiceResult<long>.OprateSuccess("保存成功!", id); return ServiceResult.OprateSuccess("修改成功!");
} }
catch (Exception) catch (Exception)
{ {
@ -491,5 +533,22 @@ namespace Tiobon.Core.Services
} }
} }
public static string ConvertQuestionType(string type)
{
string questionTypeName = string.Empty;
if (type == "Single")
questionTypeName = "单选题";
else if (type == "Multiple")
questionTypeName = "多选题";
else if (type == "TrueOrFalse")
questionTypeName = "判断题";
else if (type == "Completion")
questionTypeName = "填空题";
else if (type == "ShortAnswer")
questionTypeName = "简答题";
return questionTypeName;
}
} }
} }

@ -41,6 +41,9 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
RefAsync<int> totalCount = 0; RefAsync<int> totalCount = 0;
var query = Db.Queryable<Ghre_Question>(); var query = Db.Queryable<Ghre_Question>();
if (string.IsNullOrWhiteSpace(filter.orderBy))
filter.orderBy = "CreateTime DESC";
string conditions = "1=1"; string conditions = "1=1";
if (filter.jsonParam != null) if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties()) foreach (JProperty jProperty in filter.jsonParam.Properties())
@ -120,7 +123,7 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
filter.pageSize = 10000; filter.pageSize = 10000;
query = query.Where(conditions); query = query.Where(conditions);
var list = await query var list = await query
.OrderByIF(!string.IsNullOrEmpty(filter.Sorting), filter.Sorting) .OrderByIF(!string.IsNullOrEmpty(filter.orderBy), filter.orderBy)
.ToPageListAsync(filter.pageNum, filter.pageSize, totalCount); .ToPageListAsync(filter.pageNum, filter.pageSize, totalCount);
var data1 = new ServicePageResult<Ghre_Question>(filter.pageNum, totalCount, filter.pageSize, list); var data1 = new ServicePageResult<Ghre_Question>(filter.pageNum, totalCount, filter.pageSize, list);
@ -185,6 +188,7 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
#region PageData #region PageData
var answerList = new List<FromGhre_QuestionQuestionAnswerList> var answerList = new List<FromGhre_QuestionQuestionAnswerList>
{ {
new FromGhre_QuestionQuestionAnswerList() new FromGhre_QuestionQuestionAnswerList()
@ -209,10 +213,12 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
new FromGhre_QuestionQuestionAnswerList() new FromGhre_QuestionQuestionAnswerList()
{ {
No = "A", No = "A",
label="对"
}, },
new FromGhre_QuestionQuestionAnswerList() new FromGhre_QuestionQuestionAnswerList()
{ {
No = "B", No = "B",
label="错"
} }
}; };
data.PageData.questionType = new List<FromGhre_QuestionQuestionType> data.PageData.questionType = new List<FromGhre_QuestionQuestionType>
@ -252,12 +258,31 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
label = "填空题", label = "填空题",
type = "Completion", type = "Completion",
isActive = 0, isActive = 0,
detail = new FromGhre_QuestionQuestionTypeDetail()
{
content = "演示演示____演示",
answerList= new List<FromGhre_QuestionQuestionAnswerList>
{
new FromGhre_QuestionQuestionAnswerList()
{
No = "A",
}
}
}
}, },
new FromGhre_QuestionQuestionType() new FromGhre_QuestionQuestionType()
{ {
label = "简答题", label = "简答题",
type = "ShortAnswer", type = "ShortAnswer",
isActive = 0, isActive = 0,
detail = new FromGhre_QuestionQuestionTypeDetail()
{
answerList= new List<FromGhre_QuestionQuestionAnswerList>(),
answer1 = new List<string>
{
""
}
}
} }
}; };
@ -267,6 +292,8 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
data.PageData.questionType.ForEach(x => x.isActive = 0); data.PageData.questionType.ForEach(x => x.isActive = 0);
data.PageData.baseData.questionNo = question.QuestionNo; data.PageData.baseData.questionNo = question.QuestionNo;
data.PageData.baseData.courseID.Add(question.CourseId); data.PageData.baseData.courseID.Add(question.CourseId);
data.PageData.baseData.CreateDataInfo = question.CreateDataInfo;
data.PageData.baseData.UpdateDataInfo = question.UpdateDataInfo;
var questionType = data.PageData.questionType.Where(x => x.type == question.QuestionType).FirstOrDefault(); var questionType = data.PageData.questionType.Where(x => x.type == question.QuestionType).FirstOrDefault();
if (questionType != null) if (questionType != null)
@ -622,6 +649,9 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
if (questionType.detail.answer1 != null && !questionType.detail.answer1.Any() && string.IsNullOrWhiteSpace(questionType.detail.answer) && (questionType.detail.answer is null || (questionType.detail.answer != null && !questionType.detail.answerList.Any()))) if (questionType.detail.answer1 != null && !questionType.detail.answer1.Any() && string.IsNullOrWhiteSpace(questionType.detail.answer) && (questionType.detail.answer is null || (questionType.detail.answer != null && !questionType.detail.answerList.Any())))
throw new Exception("正确答案未标记!"); throw new Exception("正确答案未标记!");
if (questionType.type == "Multiple" && questionType.detail.answer1.Count < 2)
throw new Exception("答案至少需标记处两个正确答案!");
if (string.IsNullOrWhiteSpace(questionType.detail.RemarkSz)) if (string.IsNullOrWhiteSpace(questionType.detail.RemarkSz))
throw new Exception("题目解析必填!"); throw new Exception("题目解析必填!");
} }

@ -853,6 +853,11 @@
试卷配置ID 试卷配置ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestionBase.TaxisNo">
<summary>
排序号
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestionBase.RemarkSz"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestionBase.RemarkSz">
<summary> <summary>
备注 备注
@ -2456,6 +2461,11 @@
试卷配置ID 试卷配置ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestion.TaxisNo">
<summary>
排序号
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestion.RemarkSz"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperQuestion.RemarkSz">
<summary> <summary>
备注 备注
@ -3744,6 +3754,16 @@
附件(Dto.View) 附件(Dto.View)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_AttachmentDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_AttachmentDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CourseDto"> <member name="T:Tiobon.Core.Model.Models.Ghre_CourseDto">
<summary> <summary>
Ghre_Course(Dto.View) Ghre_Course(Dto.View)
@ -3764,6 +3784,16 @@
试卷(Dto.View) 试卷(Dto.View)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamPaperDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamPaperConfigDto"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamPaperConfigDto">
<summary> <summary>
试卷配置(Dto.View) 试卷配置(Dto.View)
@ -3794,6 +3824,16 @@
题目类型 题目类型
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_QuestionDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_QuestionDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_QuestionAnswerDto"> <member name="T:Tiobon.Core.Model.Models.Ghre_QuestionAnswerDto">
<summary> <summary>
题目答案(Dto.View) 题目答案(Dto.View)
@ -4977,5 +5017,15 @@
试卷配置ID 试卷配置ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.FromGhre_QuestionBaseData.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.FromGhre_QuestionBaseData.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
</members> </members>
</doc> </doc>

@ -662,6 +662,14 @@
<param name="insert"></param> <param name="insert"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamPaperController.Update1(System.Int64,Tiobon.Core.Model.DefaultGhre_ExamPaperPageData)">
<summary>
更新
</summary>
<param name="id"></param>
<param name="insert"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamPaperController.InsertConfig(Tiobon.Core.Model.Models.InsertGhre_ExamPaperConfigInput)"> <member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamPaperController.InsertConfig(Tiobon.Core.Model.Models.InsertGhre_ExamPaperConfigInput)">
<summary> <summary>
新增配置数据 新增配置数据

Loading…
Cancel
Save