新增查看课程学习接口

master
xiaochanghai 11 months ago
parent a6778c8443
commit 81e1b63444
  1. 16
      Tiobon.Core.Api/Controllers/Ghre/Ghre_StudyRecordController.cs
  2. 8
      Tiobon.Core.Api/Tiobon.Core.xml
  3. 2
      Tiobon.Core.IServices/Ghre/IGhre_StudyRecordServices.cs
  4. 53
      Tiobon.Core.Model/ViewModels/Extend/Ghre_StudyRecordCourse.cs
  5. 10
      Tiobon.Core.Services/Ghre/Ghre_CourseServices.cs
  6. 150
      Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs
  7. 8
      Tiobon.Core/Tiobon.Core.xml

@ -38,4 +38,20 @@ public class Ghre_StudyRecordController : BaseController<IGhre_StudyRecordServic
return await _service.QueryESS(body, "");
}
#endregion
#region 获取课程
/// <summary>
/// 获取课程
/// </summary>
/// <param name="body"></param>
/// <param name="id"></param>
/// <returns></returns>
[HttpPost, Route("QueryCourse/{id}")]
public async Task<ServiceResult<Ghre_StudyRecordCourse>> QueryCourse([FromBody] QueryBody body, long id)
{
return await _service.QueryCourse(body, id);
}
#endregion
}

@ -947,6 +947,14 @@
<param name="body"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryCourse(Tiobon.Core.Common.QueryBody,System.Int64)">
<summary>
获取课程
</summary>
<param name="body"></param>
<param name="id"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_StudyRuleController">
<summary>
必选修规则(Controller)

@ -14,5 +14,7 @@ namespace Tiobon.Core.IServices
Task<ServicePageResult<Ghre_StudyRecordESS>> QueryESS(QueryBody filter, string condition, bool? IsEnable = true);
Task<ServiceResult<Ghre_StudyRecordCourse>> QueryCourse(QueryBody body, long id);
}
}

@ -0,0 +1,53 @@
using Tiobon.Core.Model.Models;
namespace Tiobon.Core.Model;
public class Ghre_StudyRecordCourse
{
public long Id { get; set; }
public long? CourseId { get; set; }
public long? CourseSceneId { get; set; }
public string CourseName { get; set; }
public bool UseDefaultCoverImage { get; set; }
public string DefaultCoverImageName { get; set; }
public string CoverUrl { get; set; }
public int StandardHour { get; set; }
public int CreditPoints { get; set; }
public string CourseDateString { get; set; }
public int StudyProgress { get; set; } = 0;
public string CourseRemarkSz { get; set; }
public string TeacherName { get; set; }
public string TeacherEName { get; set; }
public string TeacherPhotoUrl { get; set; }
public string DeptOrSchoolName { get; set; }
public string TeacherRemarkSz { get; set; }
public List<Ghre_StudyRecordCourseWare> CourseWareList { get; set; }
public List<Ghre_StudyRecordCourseTeacher> CourseTeacherList { get; set; }
}
public class Ghre_StudyRecordCourseWare
{
public long Id { get; set; }
public string CourseName { get; set; }
public long? CourseId { get; set; }
public string Source { get; set; }
public string Link { get; set; }
public List<Ghre_CourseWareAttachment> Attachments { get; set; }
}
public class Ghre_StudyRecordCourseTeacher
{
public long Id { get; set; }
public string TeacherName { get; set; }
public string TeacherEName { get; set; }
public string TeacherPhotoUrl { get; set; }
public string DeptOrSchoolName { get; set; }
public string TeacherRemarkSz { get; set; }
public string CourseName { get; set; }
}

@ -367,6 +367,16 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
entity.Status = Consts.DIC_COURSE_STATUS.DRAFT;
entity.DefaultCoverImageName = entity.DefaultCoverImageName ?? "defaultCourseCover1";
entity.UseDefaultCoverImage = entity.UseDefaultCoverImage ?? true;
if (entity.InOrOut == "In")
{
var teacher = await Db.Queryable<Ghre_Teacher>().FirstAsync(x => x.StaffId == entity.TeacherId);
if (!teacher.IsNull())
{
entity.SchoolTeacherId = teacher.Id;
//entity.SchoolId = teacher.SchoolId;
}
}
return await base.Add(entity);
}

@ -300,5 +300,155 @@ namespace Tiobon.Core.Services
}
#endregion
#region 获取课程
/// <summary>
/// 获取课程
/// </summary>
/// <param name="courseId"></param>
/// <returns></returns>
public async Task<ServiceResult<Ghre_StudyRecordCourse>> QueryCourse(QueryBody body, long id)
{
var course = new Ghre_StudyRecordCourse();
string sql = @$"SELECT A.Id,
A.CourseId,
A.CourseSceneId,
ISNULL (B.CourseName, G.SceneName) CourseName,
B.UseDefaultCoverImage,
B.DefaultCoverImageName,
B.CoverUrl,
B.SchoolTeacherId,
B.SchoolId,
B.InOrOut,
E.TeacherName,
-- E.TeacherEName,
CASE B.InOrOut
WHEN 'In' THEN C.StaffEname
WHEN 'Out' THEN NULL
ELSE NULL
END AS TeacherEName,
E.PhotoUrl TeacherPhotoUrl,
CASE B.InOrOut
WHEN 'In'
THEN
dbo.FO_DeptInfo (E.DeptID,
getdate (),
1,
'DeptFullPateName')
WHEN 'Out'
THEN
F.SchoolName
ELSE
NULL
END AS DeptOrSchoolName,
E.SkillPoints TeacherRemarkSz,
B.StandardHour,
B.CreditPoints,
B.Outline CourseRemarkSz,
A.StudyProgress
FROM Ghre_StudyRecord A
LEFT JOIN Ghre_Course B ON A.CourseId = B.Id
LEFT JOIN Ghra_Staff c ON B.TeacherId = c.StaffID
LEFT JOIN Ghre_Teacher E ON B.SchoolTeacherId = E.Id
LEFT JOIN Ghre_School F ON B.SchoolId = F.Id
LEFT JOIN Ghre_CourseScene G ON A.CourseSceneId = G.Id
WHERE A.Id = '{id}'";
course = await Db.Ado.SqlQuerySingleAsync<Ghre_StudyRecordCourse>(sql);
if (course.CourseSceneId.IsNull())
{
sql = @$"SELECT A.Id, A.Source, A.Link
FROM Ghre_CourseWare A
WHERE A.CourseIds LIKE '%{course.CourseId}%' AND A.IsEnable = 1";
course.CourseWareList = await Db.Ado.SqlQueryAsync<Ghre_StudyRecordCourseWare>(sql);
course.CourseWareList.ForEach(x =>
{
x.CourseId = course.CourseId;
x.CourseName = course.CourseName;
});
course.CourseTeacherList =
[
new Ghre_StudyRecordCourseTeacher() {
TeacherName = course.TeacherName,
TeacherEName = course.TeacherEName,
TeacherPhotoUrl = course.TeacherPhotoUrl,
DeptOrSchoolName = course.DeptOrSchoolName,
TeacherRemarkSz = course.TeacherRemarkSz
}
];
}
else
{
course.CourseWareList = new List<Ghre_StudyRecordCourseWare>();
course.CourseTeacherList = new List<Ghre_StudyRecordCourseTeacher>();
var courses = await Db.Queryable<Ghre_Course>().Where(x => x.CourseSceneId == course.CourseSceneId && x.Status == Consts.DIC_COURSE_STATUS.RELEASED).ToListAsync();
for (int i = 0; i < courses.Count; i++)
{
var course1 = courses[i];
sql = @$"SELECT A.Id, A.Source, A.Link
FROM Ghre_CourseWare A
WHERE A.CourseIds LIKE '%{course1.Id}%' AND A.IsEnable = 1";
var courseWareList = await Db.Ado.SqlQueryAsync<Ghre_StudyRecordCourseWare>(sql);
courseWareList.ForEach(x =>
{
x.CourseId = course.CourseId;
x.CourseName = course.CourseName;
});
course.CourseWareList.AddRange(courseWareList);
sql = $@"SELECT a.ID,
C.TeacherName,
CASE A.InOrOut
WHEN 'In' THEN B.StaffEname
WHEN 'Out' THEN NULL
ELSE NULL
END AS TeacherEName,
C.PhotoUrl TeacherPhotoUrl,
CASE A.InOrOut
WHEN 'In'
THEN
dbo.FO_DeptInfo (b.DeptID,
getdate (),
1,
'DeptFullPateName')
WHEN 'Out'
THEN
D.SchoolName
ELSE
NULL
END AS DeptOrSchoolName,
c.SkillPoints TeacherRemarkSz,
a.CourseName
FROM Ghre_Course A
LEFT JOIN Ghra_Staff B ON A.TeacherId = B.StaffID
LEFT JOIN Ghre_Teacher C ON A.SchoolTeacherId = C.Id
LEFT JOIN Ghre_School D ON C.SchoolId = D.Id
WHERE a.id = '{course1.Id}'";
course.CourseTeacherList.Add(await Db.Ado.SqlQuerySingleAsync<Ghre_StudyRecordCourseTeacher>(sql));
}
}
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();
}
return ServiceResult<Ghre_StudyRecordCourse>.OprateSuccess("查询成功!", course);
}
#endregion
}
}

@ -947,6 +947,14 @@
<param name="body"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryCourse(Tiobon.Core.Common.QueryBody,System.Int64)">
<summary>
获取课程
</summary>
<param name="body"></param>
<param name="id"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_StudyRuleController">
<summary>
必选修规则(Controller)

Loading…
Cancel
Save