课程发布 新增判断课程编号在已发布中是否重复

课件维护链接支持维护多个
master
xiaochanghai 5 months ago
parent 7399b2aa8c
commit 450507a84b
  1. 5325
      Model/Tiobon.Web.pdm
  2. 2
      Tiobon.Core.Model/Edit/Ghre/Ghre_CourseWare.Dto.EditInput.cs
  3. 8
      Tiobon.Core.Model/Insert/Ghre/Ghre_CourseWare.Dto.InsertInput.cs
  4. 2
      Tiobon.Core.Model/View/Ghre/Ghre_CourseWare.Dto.View.cs
  5. 2
      Tiobon.Core.Model/ViewModels/Extend/Ghre_StudyRecordCourse.cs
  6. 4
      Tiobon.Core.Services/BASE/BaseServices.cs
  7. 6
      Tiobon.Core.Services/Ghre/Ghre_CourseServices.cs
  8. 108
      Tiobon.Core.Services/Ghre/Ghre_CourseWareServices.cs
  9. 10
      Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs

File diff suppressed because it is too large Load Diff

@ -26,4 +26,6 @@ public class EditGhre_CourseWareInput : Ghre_CourseWareBase
public List<long> CourseIds2 { get; set; }
public List<InsertGhre_CourseWareAttachmentInput> Attachments { get; set; }
public List<Ghre_CourseWareLink> Links { get; set; }
}

@ -26,4 +26,12 @@ public class InsertGhre_CourseWareInput : Ghre_CourseWareBase
public List<long> CourseIds2 { get; set; }
public List<InsertGhre_CourseWareAttachmentInput> Attachments { get; set; }
public List<Ghre_CourseWareLink> Links { get; set; }
}
public class Ghre_CourseWareLink
{
public string LinkName { get; set; }
public string LinkAddress { get; set; }
}

@ -40,4 +40,6 @@ public class Ghre_CourseWareDto : Ghre_CourseWare
public string SourceLabel { get; set; }
public List<Ghre_Course> Courses { get; set; }
public List<Ghre_CourseWareLink> Links { get; set; }
}

@ -45,6 +45,8 @@ public class Ghre_StudyRecordCourseWare
public List<Ghre_CourseWareAttachment> Attachments { get; set; }
public List<Ghre_CourseWareLink> Links { get; set; }
}

@ -1196,11 +1196,11 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
/// <param name="modifyType">ModifyType.Add,ModifyType.Edit</param>
/// <param name="rowid">ModifyType.Edit时修改记录的ROW_ID值</param>
/// <param name="promptName">判断栏位的提示名称</param>
public static void CheckCodeExist(string tableName, string fieldName, object fieldValue, ModifyType modifyType, string promptName, long? rowid = null)
public static void CheckCodeExist(string tableName, string fieldName, object fieldValue, ModifyType modifyType, string promptName, long? rowid = null, string whereCondition = null)
{
try
{
CheckCodeExist(tableName, fieldName, fieldValue, modifyType, rowid, promptName, null);
CheckCodeExist(tableName, fieldName, fieldValue, modifyType, rowid, promptName, whereCondition);
}
catch (Exception)
{

@ -371,9 +371,8 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
}
BasePoco ent = entity;
ent.UpdateIP = ip;
ent.UpdateProg = api;
entity.UpdateIP = ip;
entity.UpdateProg = api;
if (status == Consts.DIC_COURSE_STATUS.RELEASED || status == Consts.DIC_COURSE_STATUS.DISABLED || status == Consts.DIC_COURSE_STATUS.DRAFT)
{
entity.Status = status;
@ -383,6 +382,7 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
#region 生成课程快照
if (status == Consts.DIC_COURSE_STATUS.RELEASED)
{
CheckCodeExist("Ghre_Course", "CourseNo", entity.CourseNo, ModifyType.Add, "【已发布】中课程编号", id, $"Status='{DIC_COURSE_STATUS.RELEASED}'");
var sql = $"UPDATE Ghre_CourseSnap SET IsEnable = 0 WHERE CourseId = '{id}' AND IsEnable = 1";
await Db.Ado.ExecuteCommandAsync(sql);

@ -40,6 +40,18 @@ public class Ghre_CourseWareServices : BaseServices<Ghre_CourseWare, Ghre_Course
x.RelativePath = x.RelativePath.Replace("/Advanced", null);
});
await _ghre_CourseWareAttachmentServices.Add(entity.Attachments);
if (entity.Links != null && entity.Links.Any())
{
var attachments = entity.Links.Select(x => new InsertGhre_CourseWareAttachmentInput()
{
CourseWareId = result,
AttachmentName = x.LinkName,
RelativePath = x.LinkAddress,
AttachFileExtension = "http"
}).ToList();
await _ghre_CourseWareAttachmentServices.Add(attachments);
}
return result;
}
@ -69,7 +81,17 @@ public class Ghre_CourseWareServices : BaseServices<Ghre_CourseWare, Ghre_Course
});
await _ghre_CourseWareAttachmentServices.Add(editModel.Attachments);
if (editModel.Links != null && editModel.Links.Any())
{
var attachments = editModel.Links.Select(x => new InsertGhre_CourseWareAttachmentInput()
{
CourseWareId = Id,
AttachmentName = x.LinkName,
RelativePath = x.LinkAddress,
AttachFileExtension = "http"
}).ToList();
await _ghre_CourseWareAttachmentServices.Add(attachments);
}
return await base.Update(Id, editModel);
}
@ -77,22 +99,23 @@ public class Ghre_CourseWareServices : BaseServices<Ghre_CourseWare, Ghre_Course
{
var result = await base.QueryForm(body);
string courseIds = result.result.DT_TableDataT1[0].CourseIds;
if (!string.IsNullOrWhiteSpace(courseIds))
{
if (courseIds.IsNotEmptyOrNull())
result.result.DT_TableDataT1[0].CourseIds2 = JsonConvert.DeserializeObject<List<long>>(courseIds);
if (result.result.DT_TableDataT1[0].CourseIds2.Any())
{
}
}
else result.result.DT_TableDataT1[0].CourseIds2 = new List<long>();
result.result.DT_TableDataT1[0].Attachments = await _ghre_CourseWareAttachmentServices.Query(x => x.CourseWareId == body.id);
var attachments = await _ghre_CourseWareAttachmentServices.Query(x => x.CourseWareId == body.id);
result.result.DT_TableDataT1[0].Attachments = attachments.Where(x => x.AttachFileExtension != "http").ToList();
if (result.result.DT_TableDataT1[0].Attachments.Any())
{
result.result.DT_TableDataT1[0].Attachments.ForEach(x => x.RelativePath = "/Advanced" + x.RelativePath);
}
result.result.DT_TableDataT1[0].Links = attachments.Where(x => x.AttachFileExtension == "http").Select(x => new Ghre_CourseWareLink()
{
LinkName = x.AttachmentName,
LinkAddress = x.RelativePath,
}).ToList();
var IDS = result.result.DT_TableDataT1[0].CourseIds2;
result.result.DT_TableDataT1[0].Courses = await _ghre_CourseServices.Query(x => IDS.Contains(x.Id));
@ -101,48 +124,6 @@ public class Ghre_CourseWareServices : BaseServices<Ghre_CourseWare, Ghre_Course
result.result.DT_TableDataT1[0].CourseWareNo = null;
result.result.DT_TableDataT1[0].CourseWareName = null;
}
// string sql = "SELECT Id,QuestionId from Ghre_QuestionAnswer where AnswerContent='单选题'";
// var questionAnswers = await Db.Ado.SqlQueryAsync<Ghre_QuestionAnswer>(sql);
// for (int i = 0; i < questionAnswers.Count; i++)
// {
// await Db.Deleteable(new Ghre_QuestionAnswer() { Id = questionAnswers[i].Id }).ExecuteCommandAsync();
// sql = $@"UPDATE A
//SET A.TaxisNo = B.NUM
//FROM Ghre_QuestionAnswer A
// JOIN
// (SELECT ID, NUM * 100 NUM
// FROM (SELECT *, ROW_NUMBER () OVER (ORDER BY TaxisNo) NUM
// FROM (SELECT *
// FROM (SELECT *
// FROM Ghre_QuestionAnswer
// WHERE QuestionId = '{questionAnswers[i].QuestionId}') A) B) C) B
// ON A.ID = b.ID;
//UPDATE Ghre_QuestionAnswer
//SET QuestionNo =
// CASE TaxisNo
// WHEN 100 THEN 'A'
// WHEN 200 THEN 'B'
// WHEN 300 THEN 'C'
// WHEN 400 THEN 'D'
// WHEN 500 THEN 'E'
// WHEN 600 THEN 'F'
// WHEN 700 THEN 'G'
// WHEN 800 THEN 'H'
// WHEN 900 THEN 'I'
// WHEN 1000 THEN 'J'
// WHEN 1100 THEN 'K'
// WHEN 1200 THEN 'L'
// END
//WHERE QuestionId = '{questionAnswers[i].QuestionId}'";
// await Db.Ado.SqlQueryAsync<Ghre_QuestionAnswer>(sql);
// }
return result;
}
@ -177,7 +158,7 @@ public class Ghre_CourseWareServices : BaseServices<Ghre_CourseWare, Ghre_Course
string sql = @$"SELECT DISTINCT B.Id
FROM Ghre_CourseWareAttachment A
JOIN Ghre_CourseWare B ON A.CourseWareId = B.Id AND B.IsEnable = 1
WHERE A.IsEnable = 1 AND A.IsAllowDownload = '{IsAllowDownload}'";
WHERE A.IsEnable = 1 AND A.AttachFileExtension != 'http' AND A.IsAllowDownload = '{IsAllowDownload}'";
var entitys = await Db.Ado.SqlQueryAsync<long>(sql);
if (entitys.Any())
condition = "Id IN (" + string.Join(",", entitys.Select(x => x)) + ")";
@ -198,29 +179,35 @@ public class Ghre_CourseWareServices : BaseServices<Ghre_CourseWare, Ghre_Course
x.StudyDuration = $"{x.Hours}小时{x.Minutes}分钟";
x.SourceLabel = await GetParaLabel("CourseWareSource", x.Source);
x.Attachments = attachments.Where(a => a.CourseWareId == x.Id).ToList();
x.Attachments = attachments.Where(a => a.CourseWareId == x.Id && a.AttachFileExtension != "http").ToList();
x.Links = attachments.Where(x => x.AttachFileExtension == "http")
.Select(x => new Ghre_CourseWareLink()
{
LinkName = x.AttachmentName,
LinkAddress = x.RelativePath,
}).ToList();
});
courseIds = courseIds.Distinct().ToList();
var courses = await _ghre_CourseServices.Query(x => courseIds.Contains(x.Id));
data.ForEach(x =>
{
if (!string.IsNullOrWhiteSpace(x.CourseIds))
x.CourseNames = string.Join("、", courses.Where(o => x.CourseIds2.Contains(o.Id)).Select(o => o.CourseNo + " " + o.CourseName));
});
{
if (!string.IsNullOrWhiteSpace(x.CourseIds))
x.CourseNames = string.Join("、", courses.Where(o => x.CourseIds2.Contains(o.Id)).Select(o => o.CourseNo + " " + o.CourseName));
});
result.result.DT_TableDataT1 = data;
return result;
}
#region 打包下载
public async Task<ServiceResult<string>> DownZip(long id)
{
var result = await base.QueryById(id);
if (result is null)
return ServiceResult<string>.OprateFailed("无效的课件ID!");
var attachments = await _ghre_CourseWareAttachmentServices.Query(x => x.CourseWareId == id);
var attachments = await _ghre_CourseWareAttachmentServices.Query(x => x.CourseWareId == id && x.AttachFileExtension != "http");
var webRootPath = _hostingEnvironment.WebRootPath;
var outPath = $"/files/upload/{result.CourseWareName}_{result.VersionNo}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.zip";
if (attachments.Any())
@ -268,6 +255,7 @@ public class Ghre_CourseWareServices : BaseServices<Ghre_CourseWare, Ghre_Course
}
}
}
#endregion
#region 删除
// <summary>

@ -1233,9 +1233,17 @@ WHERE A.Id = '{id}'";
for (int j = 0; j < course.CourseWareList.Count; j++)
{
course.CourseWareList[j].Attachments = await Db.Queryable<Ghre_CourseWareAttachment>().Where(x => x.CourseWareId == course.CourseWareList[j].Id).ToListAsync();
var attachments = await Db.Queryable<Ghre_CourseWareAttachment>().Where(x => x.CourseWareId == course.CourseWareList[j].Id).ToListAsync();
course.CourseWareList[j].Attachments = attachments.Where(x => x.AttachFileExtension != "http").ToList();
if (course.CourseWareList[j].Attachments != null && course.CourseWareList[j].Attachments.Any())
course.CourseWareList[j].Attachments.ForEach(x => x.RelativePath = "/Advanced" + x.RelativePath);
course.CourseWareList[j].Links = attachments.Where(x => x.AttachFileExtension == "http")
.Select(x => new Ghre_CourseWareLink()
{
LinkName = x.AttachmentName,
LinkAddress = x.RelativePath,
}).ToList();
}
if (course.CourseBeginTime != null && course.CourseEndTime != null)

Loading…
Cancel
Save