课程分类栏位做成多选,课程分类2栏位拿掉

master
xiaochanghai 11 months ago
parent 92e61f25c1
commit 79119f7473
  1. 4853
      Model/Tiobon.Web.pdm
  2. 74
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. 54
      Tiobon.Core.Model/Base/Ghre/Ghre_Course.Dto.Base.cs
  4. 3
      Tiobon.Core.Model/Edit/Ghre/Ghre_Course.Dto.EditInput.cs
  5. 1
      Tiobon.Core.Model/Insert/Ghre/Ghre_Course.Dto.InsertInput.cs
  6. 54
      Tiobon.Core.Model/Models/Ghre/Ghre_Course.cs
  7. 1
      Tiobon.Core.Model/View/Ghre/Ghre_Course.Dto.View.cs
  8. 5
      Tiobon.Core.Model/View/Ghre/Ghre_Question.Dto.View.cs
  9. 114
      Tiobon.Core.Services/Ghre/Ghre_CourseServices.cs
  10. 3
      Tiobon.Core.Services/Ghre/Ghre_ExamServices.cs
  11. 49
      Tiobon.Core.Services/Ghre/Ghre_QuestionServices.cs
  12. 74
      Tiobon.Core/Tiobon.Core.Model.xml

File diff suppressed because it is too large Load Diff

@ -1045,11 +1045,6 @@
课程分类ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.CourseClassId2">
<summary>
课程分类ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.CourseSceneId">
<summary>
课程场景ID
@ -1062,7 +1057,7 @@
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.StandardHour">
<summary>
标准
标准
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.CreditPoints">
@ -1150,21 +1145,6 @@
课前准备
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.Status">
<summary>
状态
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.UseDefaultCoverImage">
<summary>
是否使用默认封面
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.DefaultCoverImageName">
<summary>
默认封面图Name
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.RemarkSz">
<summary>
备注
@ -1240,6 +1220,21 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.Status">
<summary>
状态
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.UseDefaultCoverImage">
<summary>
是否使用默认封面
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.DefaultCoverImageName">
<summary>
默认封面图Name
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CourseClassBase">
<summary>
课程分类 (Dto.Base)
@ -5636,11 +5631,6 @@
课程分类ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.CourseClassId2">
<summary>
课程分类ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.CourseSceneId">
<summary>
课程场景ID
@ -5653,7 +5643,7 @@
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.StandardHour">
<summary>
标准
标准
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.CreditPoints">
@ -5741,21 +5731,6 @@
课前准备
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.Status">
<summary>
状态
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.UseDefaultCoverImage">
<summary>
是否使用默认封面
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.DefaultCoverImageName">
<summary>
默认封面图Name
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.RemarkSz">
<summary>
备注
@ -5831,6 +5806,21 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.Status">
<summary>
状态
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.UseDefaultCoverImage">
<summary>
是否使用默认封面
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.DefaultCoverImageName">
<summary>
默认封面图Name
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CourseClass">
<summary>
课程分类 (Model)

@ -6,7 +6,7 @@
*
* Ver
*
*V0.01 2024/6/7 10:21:28 SimonHsiao
*V0.01 2024/7/15 13:56:06 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
@ -42,12 +42,8 @@ namespace Tiobon.Core.Model.Models
/// <summary>
/// 课程分类ID
/// </summary>
public long? CourseClassId { get; set; }
/// <summary>
/// 课程分类ID
/// </summary>
public long? CourseClassId2 { get; set; }
[Display(Name = "CourseClassId"), Description("课程分类ID"), MaxLength(2000, ErrorMessage = "课程分类ID 不能超过 2000 个字符")]
public string CourseClassId { get; set; }
/// <summary>
/// 课程场景ID
@ -61,7 +57,7 @@ namespace Tiobon.Core.Model.Models
public string CourseWareId { get; set; }
/// <summary>
/// 标准
/// 标准
/// </summary>
public int? StandardHour { get; set; }
@ -73,12 +69,12 @@ namespace Tiobon.Core.Model.Models
/// <summary>
/// 课程负责人
/// </summary>
public int? ManagerId { get; set; }
public long? ManagerId { get; set; }
/// <summary>
/// 课程负责人部门ID
/// </summary>
public int? ManagerDeptId { get; set; }
public long? ManagerDeptId { get; set; }
/// <summary>
/// 内/外训
@ -89,12 +85,12 @@ namespace Tiobon.Core.Model.Models
/// <summary>
/// 讲师ID
/// </summary>
public int? TeacherId { get; set; }
public long? TeacherId { get; set; }
/// <summary>
/// 讲师部门ID
/// </summary>
public int? TeacherDeptId { get; set; }
public long? TeacherDeptId { get; set; }
/// <summary>
/// 培训机构ID
@ -157,23 +153,6 @@ namespace Tiobon.Core.Model.Models
[Display(Name = "BeforeReady"), Description("课前准备"), MaxLength(2000, ErrorMessage = "课前准备 不能超过 2000 个字符")]
public string BeforeReady { get; set; }
/// <summary>
/// 状态
/// </summary>
[Display(Name = "Status"), Description("状态"), MaxLength(32, ErrorMessage = "状态 不能超过 32 个字符")]
public string Status { get; set; }
/// <summary>
/// 是否使用默认封面
/// </summary>
public bool? UseDefaultCoverImage { get; set; }
/// <summary>
/// 默认封面图Name
/// </summary>
[Display(Name = "DefaultCoverImageName"), Description("默认封面图Name"), MaxLength(32, ErrorMessage = "默认封面图Name 不能超过 32 个字符")]
public string DefaultCoverImageName { get; set; }
/// <summary>
/// 备注
/// </summary>
@ -259,5 +238,22 @@ namespace Tiobon.Core.Model.Models
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
/// <summary>
/// 状态
/// </summary>
[Display(Name = "Status"), Description("状态"), MaxLength(32, ErrorMessage = "状态 不能超过 32 个字符")]
public string Status { get; set; }
/// <summary>
/// 是否使用默认封面
/// </summary>
public bool? UseDefaultCoverImage { get; set; }
/// <summary>
/// 默认封面图Name
/// </summary>
[Display(Name = "DefaultCoverImageName"), Description("默认封面图Name"), MaxLength(32, ErrorMessage = "默认封面图Name 不能超过 32 个字符")]
public string DefaultCoverImageName { get; set; }
}
}

@ -23,7 +23,8 @@ namespace Tiobon.Core.Model.Models
/// </summary>
public class EditGhre_CourseInput : Ghre_CourseBase
{
public List<long> ExamPaperIds { get; set; }
public List<long> CourseClassIds { get; set; }
}
}

@ -24,5 +24,6 @@ namespace Tiobon.Core.Model.Models
public class InsertGhre_CourseInput : Ghre_CourseBase
{
public List<long> ExamPaperIds { get; set;}
public List<long> CourseClassIds { get; set; }
}
}

@ -6,7 +6,7 @@
*
* Ver
*
*V0.01 2024/6/7 10:21:28 SimonHsiao
*V0.01 2024/7/15 13:56:06 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
*
@ -44,12 +44,8 @@ namespace Tiobon.Core.Model.Models
/// <summary>
/// 课程分类ID
/// </summary>
public long? CourseClassId { get; set; }
/// <summary>
/// 课程分类ID
/// </summary>
public long? CourseClassId2 { get; set; }
[Display(Name = "CourseClassId"), Description("课程分类ID"), MaxLength(2000, ErrorMessage = "课程分类ID 不能超过 2000 个字符")]
public string CourseClassId { get; set; }
/// <summary>
/// 课程场景ID
@ -63,7 +59,7 @@ namespace Tiobon.Core.Model.Models
public string CourseWareId { get; set; }
/// <summary>
/// 标准
/// 标准
/// </summary>
public int? StandardHour { get; set; }
@ -75,12 +71,12 @@ namespace Tiobon.Core.Model.Models
/// <summary>
/// 课程负责人
/// </summary>
public int? ManagerId { get; set; }
public long? ManagerId { get; set; }
/// <summary>
/// 课程负责人部门ID
/// </summary>
public int? ManagerDeptId { get; set; }
public long? ManagerDeptId { get; set; }
/// <summary>
/// 内/外训
@ -91,12 +87,12 @@ namespace Tiobon.Core.Model.Models
/// <summary>
/// 讲师ID
/// </summary>
public int? TeacherId { get; set; }
public long? TeacherId { get; set; }
/// <summary>
/// 讲师部门ID
/// </summary>
public int? TeacherDeptId { get; set; }
public long? TeacherDeptId { get; set; }
/// <summary>
/// 培训机构ID
@ -159,23 +155,6 @@ namespace Tiobon.Core.Model.Models
[Display(Name = "BeforeReady"), Description("课前准备"), MaxLength(2000, ErrorMessage = "课前准备 不能超过 2000 个字符")]
public string BeforeReady { get; set; }
/// <summary>
/// 状态
/// </summary>
[Display(Name = "Status"), Description("状态"), MaxLength(32, ErrorMessage = "状态 不能超过 32 个字符")]
public string Status { get; set; }
/// <summary>
/// 是否使用默认封面
/// </summary>
public bool? UseDefaultCoverImage { get; set; }
/// <summary>
/// 默认封面图Name
/// </summary>
[Display(Name = "DefaultCoverImageName"), Description("默认封面图Name"), MaxLength(32, ErrorMessage = "默认封面图Name 不能超过 32 个字符")]
public string DefaultCoverImageName { get; set; }
/// <summary>
/// 备注
/// </summary>
@ -261,5 +240,22 @@ namespace Tiobon.Core.Model.Models
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
/// <summary>
/// 状态
/// </summary>
[Display(Name = "Status"), Description("状态"), MaxLength(32, ErrorMessage = "状态 不能超过 32 个字符")]
public string Status { get; set; }
/// <summary>
/// 是否使用默认封面
/// </summary>
public bool? UseDefaultCoverImage { get; set; }
/// <summary>
/// 默认封面图Name
/// </summary>
[Display(Name = "DefaultCoverImageName"), Description("默认封面图Name"), MaxLength(32, ErrorMessage = "默认封面图Name 不能超过 32 个字符")]
public string DefaultCoverImageName { get; set; }
}
}

@ -49,5 +49,6 @@ public class Ghre_CourseDto : Ghre_Course
public string UpdateDataInfo { get; set; }
public List<long> ExamPaperIds { get; set; } = new List<long>();
public List<long> CourseClassIds { get; set; } = new List<long>();
}

@ -32,7 +32,10 @@ namespace Tiobon.Core.Model.Models
[Display(Name = "CourseName"), Description("课程名称")]
public string CourseName { get; set; }
public long CourseTypeId { get; set; }
//public long CourseTypeId { get; set; }
public string CourseClassId { get; set; }
public string CourseType { get; set; }

@ -13,7 +13,6 @@ using System.Data;
using Microsoft.AspNetCore.Http;
using Tiobon.Core.Common.UserManager;
using Tiobon.Core.Common.Helper;
using Org.BouncyCastle.Crypto;
namespace Tiobon.Core.Services;
@ -34,100 +33,11 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
base._caching = caching;
}
public override async Task<ServicePageResult<Ghre_CourseDto>> QueryFilterPage(QueryBody filter)
{
RefAsync<int> totalCount = 0;
string sql = @"SELECT *
FROM (SELECT A.*,
B.ClassName CourseClassName,
C.ClassName CourseClassName2,
D.SceneName CourseSceneName,
E.CourseWareName,
F.StaffName ManagerStaffName,
G.UserName CreateName,
G.UserName UpdateName,
CASE A.InOrOut
WHEN 'In' THEN F.StaffName
WHEN 'Out' THEN J.TeacherName
END TeacherName, ISNULL(A.UpdateTime, A.CreateTime) CreateTime1
FROM Ghre_Course A
LEFT JOIN Ghre_CourseClass B ON A.CourseClassId = B.Id
LEFT JOIN Ghre_CourseClass C ON A.CourseClassId2 = C.Id
LEFT JOIN Ghre_CourseScene D ON A.CourseSceneId = D.Id
LEFT JOIN Ghre_CourseWare E ON A.CourseWareId = E.Id
LEFT JOIN Ghra_Staff F ON A.ManagerId = F.StaffID
LEFT JOIN Ghrs_User G ON A.CreateBy = G.UserId
LEFT JOIN Ghrs_User H ON A.UpdateBy = H.UserId
LEFT JOIN Ghra_Staff I ON A.TeacherId = I.StaffID
LEFT JOIN Ghre_Teacher J ON A.SchoolTeacherId = I.StaffID
WHERE A.IsEnable = 1) A";
if (string.IsNullOrWhiteSpace(filter.orderBy))
filter.orderBy = "CreateTime1 DESC";
string conditions = "1=1";
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
{
var name = jProperty.Name;
var value = jProperty.Value.ToString();
if (name == "page" || name == "pageSize")
continue;
if (!string.IsNullOrWhiteSpace(value))
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
switch (jsonParam.operationKey)
{
case "Include":
conditions += $" AND {name} LIKE '%{jsonParam.columnValue}%'";
break;
case "NotInclude":
conditions += $" AND {name} NOT LIKE '%{jsonParam.columnValue}%'";
break;
case "IsNull":
conditions += $" AND {name} IS NULL";
break;
case "NotNull":
conditions += $" AND {name} IS NOT NULL";
break;
case "Equal":
conditions += $" AND {name} ='{jsonParam.columnValue}'";
break;
case "NotEqual":
conditions += $" AND {name} !='{jsonParam.columnValue}'";
break;
default:
break;
}
}
}
if (filter.pageSize == 0)
filter.pageSize = 10000;
var data = await Db.SqlQueryable<Ghre_CourseDto>(sql)
.OrderBy(filter.orderBy)
.ToPageListAsync(filter.pageNum, filter.pageSize, totalCount);
data.ForEach(async x =>
{
x.ChargeMethodLabel = await GetParaLabel("CourseChargeMethod", x.ChargeMethod);
x.InOrOutLabel = await GetParaLabel("CourseInOrOut", x.InOrOut);
x.IsOPenLabel = x.IsOPen == true ? "是" : "否";
});
return new ServicePageResult<Ghre_CourseDto>(filter.pageNum, totalCount, filter.pageSize, data);
}
public async Task<ServicePageResult<Ghre_CourseDto>> QueryList(QueryBody filter, string status, List<long> ids)
{
RefAsync<int> totalCount = 0;
string sql = @"SELECT *
FROM (SELECT A.*,
B.ClassName CourseClassName,
C.ClassName CourseClassName2,
D.SceneName CourseSceneName,
E.CourseWareName,
F.StaffName ManagerStaffName,
@ -138,8 +48,6 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
WHEN 'Out' THEN J.TeacherName
END TeacherName, ISNULL(A.UpdateTime, A.CreateTime) CreateTime1
FROM Ghre_Course A
LEFT JOIN Ghre_CourseClass B ON A.CourseClassId = B.Id
LEFT JOIN Ghre_CourseClass C ON A.CourseClassId2 = C.Id
LEFT JOIN Ghre_CourseScene D ON A.CourseSceneId = D.Id
LEFT JOIN Ghre_CourseWare E ON A.CourseWareId = E.Id
LEFT JOIN Ghra_Staff F ON A.ManagerId = F.StaffID
@ -211,11 +119,27 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
.OrderBy(filter.orderBy)
.ToPageListAsync(filter.pageNum, filter.pageSize, totalCount);
var classsIds1 = data.Select(x => x.CourseClassId).Distinct().ToList();
var classsIds = new List<long>();
classsIds1.ForEach(x =>
{
if (!string.IsNullOrWhiteSpace(x))
{
var courseClassIds = JsonConvert.DeserializeObject<List<long>>(x);
classsIds = classsIds.Concat(courseClassIds).ToList();
}
});
classsIds = classsIds.Distinct().ToList();
var classs = await _ghre_CourseClassServices.Query(x => classsIds.Contains(x.Id));
data.ForEach(async x =>
{
x.ChargeMethodLabel = await GetParaLabel("CourseChargeMethod", x.ChargeMethod);
x.InOrOutLabel = await GetParaLabel("CourseInOrOut", x.InOrOut);
x.IsOPenLabel = x.IsOPen == true ? "是" : "否";
var courseClass = classs.Where(a => x.CourseClassId.Contains(a.Id.ToString())).ToList();
x.CourseClassName = string.Join(",", courseClass.Select(a => a.ClassName));
});
return new ServicePageResult<Ghre_CourseDto>(filter.pageNum, totalCount, filter.pageSize, data);
@ -291,6 +215,10 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
if (!string.IsNullOrWhiteSpace(examPaperId))
result.result.DT_TableDataT1[0].ExamPaperIds = JsonConvert.DeserializeObject<List<long>>(examPaperId);
string courseClassId = result.result.DT_TableDataT1[0].CourseClassId;
if (!string.IsNullOrWhiteSpace(courseClassId))
result.result.DT_TableDataT1[0].CourseClassIds = JsonConvert.DeserializeObject<List<long>>(courseClassId);
else result.result.DT_TableDataT1[0].ExamPaperIds = new List<long>();
if (body.doType == "Copy")
@ -355,6 +283,7 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
public override async Task<long> Add(InsertGhre_CourseInput entity)
{
entity.ExamPaperId = JsonHelper.ObjToJson(entity.ExamPaperIds);
entity.CourseClassId = JsonHelper.ObjToJson(entity.CourseClassIds);
entity.Status = "Draft";
entity.DefaultCoverImageName = entity.DefaultCoverImageName ?? "defaultCourseCover1";
entity.UseDefaultCoverImage = entity.UseDefaultCoverImage ?? true;
@ -365,6 +294,7 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
{
editModel.ExamPaperId = JsonHelper.ObjToJson(editModel.ExamPaperIds);
editModel.CourseClassId = JsonHelper.ObjToJson(editModel.CourseClassIds);
return await base.Update(Id, editModel);
}

@ -478,12 +478,9 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
WHEN A.LinkType = 'CourseId' THEN B.CourseName
WHEN A.LinkType = 'CourseSceneId' THEN D.SceneName
END CourseName,
C.Id CourseTypeId,
C.ClassName CourseType,
E.PaperName ExamPaperName, ISNULL(A.UpdateTime, A.CreateTime) CreateTime1
FROM Ghre_Exam A
LEFT JOIN Ghre_Course B ON A.CourseId = B.Id
LEFT JOIN Ghre_CourseClass C ON B.CourseClassId = C.Id
LEFT JOIN Ghre_CourseScene D ON A.CourseSceneId = D.Id
LEFT JOIN Ghre_ExamPaper E ON A.ExamPaperId = E.Id
WHERE A.IsEnable = 1) A";

@ -6,18 +6,14 @@ using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.HSSF.UserModel;
using NPOI.OpenXmlFormats.Spreadsheet;
using NPOI.SS.Formula.Functions;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
using SharpCompress.Common;
using SqlSugar;
using Tiobon.Core.Common;
using Tiobon.Core.Common.Caches;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using Tiobon.Core.Common.Helper;
using Tiobon.Core.Common.UserManager;
using Tiobon.Core.IRepository.Base;
using Tiobon.Core.IServices;
using Tiobon.Core.Model;
@ -148,7 +144,18 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
var courseIds = data.Where(x => x.CourseId != null).Select(x => x.CourseId).Distinct().ToList();
var courses = await _ghre_CourseServices.Query(x => courseIds.Contains(x.Id));
var classsIds = courses.Select(x => x.CourseClassId).Distinct().ToList();
var classsIds1 = courses.Select(x => x.CourseClassId).Distinct().ToList();
var classsIds = new List<long>();
classsIds1.ForEach(x =>
{
if (!string.IsNullOrWhiteSpace(x))
{
var courseClassIds = JsonConvert.DeserializeObject<List<long>>(x);
classsIds = classsIds.Concat(courseClassIds).ToList();
}
});
classsIds = classsIds.Distinct().ToList();
var classs = await _ghre_CourseClassServices.Query(x => classsIds.Contains(x.Id));
data.ForEach(async x =>
{
@ -159,9 +166,9 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
{
var course = courses.Where(a => a.Id == x.CourseId).FirstOrDefault();
x.CourseName = course?.CourseName;
var courseClass = classs.Where(a => a.Id == course.CourseClassId).FirstOrDefault();
x.CourseType = courseClass.ClassName;
x.CourseTypeId = courseClass.Id;
var courseClass = classs.Where(a => course.CourseClassId.Contains(a.Id.ToString())).ToList();
x.CourseType = string.Join(",", courseClass.Select(a => a.ClassName));
//x.CourseTypeId = courseClass.Id;
}
});
@ -174,13 +181,12 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
string sql = @"SELECT *
FROM (SELECT A.*,
B.CourseName,
C.Id CourseTypeId,
B.CourseClassId CourseTypeId,
G.UserName CreateDataInfo,
H.UserName UpdateDataInfo,
C.ClassName CourseType, ISNULL(A.UpdateTime, A.CreateTime) CreateTime1
H.UserName UpdateDataInfo,
ISNULL(A.UpdateTime, A.CreateTime) CreateTime1
FROM Ghre_Question A
LEFT JOIN Ghre_Course B ON A.CourseId = B.Id
LEFT JOIN Ghre_CourseClass C ON B.CourseClassId = C.Id
LEFT JOIN Ghre_Course B ON A.CourseId = B.Id
LEFT JOIN Ghrs_User G ON A.CreateBy = G.UserId
LEFT JOIN Ghrs_User H ON A.UpdateBy = H.UserId
WHERE A.IsEnable = 1) A";
@ -232,12 +238,29 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
var data = await Db.SqlQueryable<Ghre_QuestionDto>(sql)
.OrderBy(filter.orderBy)
.ToPageListAsync(filter.pageNum, filter.pageSize, totalCount);
var classsIds1 = data.Select(x => x.CourseClassId).Distinct().ToList();
var classsIds = new List<long>();
classsIds1.ForEach(x =>
{
if (!string.IsNullOrWhiteSpace(x))
{
var courseClassIds = JsonConvert.DeserializeObject<List<long>>(x);
classsIds = classsIds.Concat(courseClassIds).ToList();
}
});
classsIds = classsIds.Distinct().ToList();
var classs = await _ghre_CourseClassServices.Query(x => classsIds.Contains(x.Id));
data.ForEach(async x =>
{
x.DifficultyLevelLabel = await GetParaLabel("DifficultyLevel", x.DifficultyLevel);
x.QuestionTypeLabel = await GetParaLabel("QuestionType", x.QuestionType);
if (!string.IsNullOrEmpty(x.QuestionContent))
x.QuestionContent = WebUtility.HtmlDecode(x.QuestionContent);
var courseClass = classs.Where(a => x.CourseClassId.Contains(a.Id.ToString())).ToList();
x.CourseType = string.Join(",", courseClass.Select(a => a.ClassName));
});

@ -1045,11 +1045,6 @@
课程分类ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.CourseClassId2">
<summary>
课程分类ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.CourseSceneId">
<summary>
课程场景ID
@ -1062,7 +1057,7 @@
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.StandardHour">
<summary>
标准
标准
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.CreditPoints">
@ -1150,21 +1145,6 @@
课前准备
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.Status">
<summary>
状态
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.UseDefaultCoverImage">
<summary>
是否使用默认封面
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.DefaultCoverImageName">
<summary>
默认封面图Name
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.RemarkSz">
<summary>
备注
@ -1240,6 +1220,21 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.Status">
<summary>
状态
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.UseDefaultCoverImage">
<summary>
是否使用默认封面
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseBase.DefaultCoverImageName">
<summary>
默认封面图Name
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CourseClassBase">
<summary>
课程分类 (Dto.Base)
@ -5636,11 +5631,6 @@
课程分类ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.CourseClassId2">
<summary>
课程分类ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.CourseSceneId">
<summary>
课程场景ID
@ -5653,7 +5643,7 @@
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.StandardHour">
<summary>
标准
标准
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.CreditPoints">
@ -5741,21 +5731,6 @@
课前准备
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.Status">
<summary>
状态
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.UseDefaultCoverImage">
<summary>
是否使用默认封面
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.DefaultCoverImageName">
<summary>
默认封面图Name
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.RemarkSz">
<summary>
备注
@ -5831,6 +5806,21 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.Status">
<summary>
状态
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.UseDefaultCoverImage">
<summary>
是否使用默认封面
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Course.DefaultCoverImageName">
<summary>
默认封面图Name
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CourseClass">
<summary>
课程分类 (Model)

Loading…
Cancel
Save