课程场景参数设置页面新增课程管理多选字段,保存后要能反写到已发布的课程管理中的“课程场景”字段

将现在课程场景列表页的课程排序功能,更改为在课程场景新增或维护页面里设置课程排序及保存。
master
xiaochanghai 3 months ago
parent d51702ed26
commit cdc9cb5828
  1. 5
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  2. 7
      Tiobon.Core.Model/Base/Ghre/Ghre_CourseScene.Dto.Base.cs
  3. 68
      Tiobon.Core.Services/Ghre/Ghre_CourseSceneServices.cs
  4. 15
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs

@ -3120,6 +3120,11 @@
默认封面图Name
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseSceneBase.Courses">
<summary>
课程列表
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CourseSnapBase">
<summary>
Ghre_CourseSnap (Dto.Base)

@ -150,8 +150,6 @@ public class Ghre_CourseSceneBase
[Display(Name = "CoverUrl"), Description("封面图"), MaxLength(2000, ErrorMessage = "封面图 不能超过 2000 个字符")]
public string CoverUrl { get; set; }
public List<string> CourseIds { get; set; } = new List<string>();
/// <summary>
/// 是否使用默认封面
/// </summary>
@ -162,4 +160,9 @@ public class Ghre_CourseSceneBase
/// </summary>
[Display(Name = "DefaultCoverImageName"), Description("默认封面图Name"), MaxLength(32, ErrorMessage = "默认封面图Name 不能超过 32 个字符")]
public string DefaultCoverImageName { get; set; }
/// <summary>
/// 课程列表
/// </summary>
public List<Ghre_Course> Courses { get; set; } = new List<Ghre_Course>();
}

@ -1,7 +1,4 @@
using NPOI.SS.UserModel;
using Tiobon.Core.IServices;
namespace Tiobon.Core.Services;
namespace Tiobon.Core.Services;
/// <summary>
/// 课程场景 (服务)
@ -46,31 +43,70 @@ public class Ghre_CourseSceneServices : BaseServices<Ghre_CourseScene, Ghre_Cour
public override async Task<long> Add(InsertGhre_CourseSceneInput entity)
{
if (entity.CourseIds != null && entity.CourseIds.Any())
var courseIds = new List<long>();
if (entity.Courses != null && entity.Courses.Any())
{
courseIds = entity.Courses.Select(x => x.Id).ToList();
entity.CourseId = JsonHelper.ObjToJson(courseIds);
entity.CourseId = JsonHelper.ObjToJson(entity.CourseIds);
var list = Db.Queryable<Ghre_Course>().Where(x => entity.CourseIds.Contains(x.Id.ToString())).Select(x => x.CourseName).ToList();
var list = Db.Queryable<Ghre_Course>().Where(x => courseIds.Contains(x.Id)).Select(x => x.CourseName).ToList();
entity.CourseName = string.Join("、", list.Select(x => x).ToArray());
entity.CourseName = string.Join("、", list.ToArray());
}
var id = await base.Add(entity);
var courses = Db.Queryable<Ghre_Course>().Where(x => courseIds.Contains(x.Id)).ToList();
for (int i = 0; i < courses.Count; i++)
{
var courseSceneIds = new List<long>();
if (courses[i].CourseSceneIds.IsNotEmptyOrNull())
courseSceneIds = JsonHelper.JsonToObj<List<long>>(courses[i].CourseSceneIds);
courseSceneIds.Add(id);
courses[i].CourseSceneIds = JsonHelper.ObjToJson(courseSceneIds);
await Db.Updateable(courses).UpdateColumns(it => new { it.CourseSceneIds }, true)//true表示追加AOP赋值列
.ExecuteCommandAsync();
}
return await base.Add(entity);
return id;
}
public override async Task<bool> Update(long Id, EditGhre_CourseSceneInput editModel)
{
if (editModel.CourseIds != null && editModel.CourseIds.Any())
var courseIds = new List<long>();
if (editModel.Courses != null && editModel.Courses.Any())
{
courseIds = editModel.Courses.Select(x => x.Id).ToList();
editModel.CourseId = JsonHelper.ObjToJson(courseIds);
editModel.CourseId = JsonHelper.ObjToJson(editModel.CourseIds);
var list = Db.Queryable<Ghre_Course>().Where(x => editModel.CourseIds.Contains(x.Id.ToString())).Select(x => x.CourseName).ToList();
var list = Db.Queryable<Ghre_Course>().Where(x => courseIds.Contains(x.Id)).Select(x => x.CourseName).ToList();
editModel.CourseName = string.Join("、", list.Select(x => x).ToArray());
}
return await base.Update(Id, editModel);
var result = await base.Update(Id, editModel);
var courses = await Db.Queryable<Ghre_Course>().Where(x => x.CourseSceneIds != null && x.CourseSceneIds.Contains(Id.ObjToString())).ToListAsync();
for (int j = 0; j < courses.Count; j++)
{
var courseSceneIds = new List<long>();
if (courses[j].CourseSceneIds.IsNotEmptyOrNull())
courseSceneIds = JsonHelper.JsonToObj<List<long>>(courses[j].CourseSceneIds);
courseSceneIds = courseSceneIds.Where(x => x != Id).ToList();
courses[j].CourseSceneIds = JsonHelper.ObjToJson(courseSceneIds);
await Db.Updateable(courses).UpdateColumns(it => new { it.CourseSceneIds }, true)//true表示追加AOP赋值列
.ExecuteCommandAsync();
}
courses = Db.Queryable<Ghre_Course>().Where(x => courseIds.Contains(x.Id)).ToList();
for (int i = 0; i < courses.Count; i++)
{
var courseSceneIds = new List<long>();
if (courses[i].CourseSceneIds.IsNotEmptyOrNull())
courseSceneIds = JsonHelper.JsonToObj<List<long>>(courses[i].CourseSceneIds);
courseSceneIds.Add(Id);
courses[i].CourseSceneIds = JsonHelper.ObjToJson(courseSceneIds);
await Db.Updateable(courses).UpdateColumns(it => new { it.CourseSceneIds }, true)//true表示追加AOP赋值列
.ExecuteCommandAsync();
}
return result;
}
#region Excel导入

@ -1114,12 +1114,17 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
public async Task DealPass(ISqlSugarClient Db, long studyRecordId)
{
try
{
var record = await Db.Queryable<Ghre_ExamRecord>().FirstAsync(x => x.Id == studyRecordId);
_logger.LogInformation($"【DealPass:{studyRecordId}】1");
var studyRecord = await Db.Queryable<Ghre_StudyRecord>().FirstAsync(x => x.Id == record.StudyRecordId);
var examPaper = await Db.Queryable<Ghre_ExamPaper>().FirstAsync(x => x.Id == record.ExamPaperId);
_logger.LogInformation($"【DealPass:{studyRecordId}】PassScore:{examPaper.PassScore},Score:{record.Score},PassScore:{record.AdjustScore},");
record.IsPass = examPaper.PassScore > ((record.Score ?? 0) + (record.AdjustScore ?? 0)) ? false : true;
_logger.LogInformation($"【DealPass:{studyRecordId}】IsPass:{record.IsPass}");
record.FinallyIsPass = record.IsPass;
@ -1197,6 +1202,14 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
}
}
#endregion
_logger.LogInformation($"【DealPass:{studyRecordId}】2");
}
catch (Exception E)
{
_logger.LogInformation($"【DealPass:{studyRecordId}】Message:{E.Message}");
_logger.LogInformation($"【DealPass:{studyRecordId}】StackTrace:{E.StackTrace}");
}
}
public async Task<ServiceResult> ViewExamPaperCallBackAsync(long examRecordId)

Loading…
Cancel
Save