From 336ef63273987fd333fb1819168f6033d4edc38b Mon Sep 17 00:00:00 2001
From: "HK\\Administrator" <461671400@qq.com>
Date: Wed, 24 Nov 2021 15:19:17 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Edu.Common/Enum/Course/CourseRateEnum.cs      |  10 +-
 Edu.Common/Enum/Customer/TaskTypeEnum.cs      |  37 ++++++
 Edu.Model/Entity/Course/RB_Course_Subject.cs  |  66 +++++++++++
 .../Course/RB_Course_Subject_ViewModel.cs     |  33 ++++++
 Edu.Module.Course/CourseCategoryModule.cs     |  93 ++++++++++++++-
 .../Course/RB_Course_SubjectRepository.cs     |  80 +++++++++++++
 .../Controllers/Course/CourseController.cs    | 109 ++++++++++++++++--
 7 files changed, 408 insertions(+), 20 deletions(-)
 create mode 100644 Edu.Common/Enum/Customer/TaskTypeEnum.cs
 create mode 100644 Edu.Model/Entity/Course/RB_Course_Subject.cs
 create mode 100644 Edu.Model/ViewModel/Course/RB_Course_Subject_ViewModel.cs
 create mode 100644 Edu.Repository/Course/RB_Course_SubjectRepository.cs

diff --git a/Edu.Common/Enum/Course/CourseRateEnum.cs b/Edu.Common/Enum/Course/CourseRateEnum.cs
index f9ca82fd..e9cecd96 100644
--- a/Edu.Common/Enum/Course/CourseRateEnum.cs
+++ b/Edu.Common/Enum/Course/CourseRateEnum.cs
@@ -84,22 +84,18 @@ namespace Edu.Common.Enum.Course
         [EnumField("韩语")]
         Korean =2,
 
-        /// <summary>
-        /// 新媒体
-        /// </summary>
-        //[EnumField("新媒体")]
-        //NewMedia =3,
+
 
         /// <summary>
         /// 新媒体运营
         /// </summary>
         [EnumField("新媒体运营")]
-        NewMediaOperation = 4,
+        NewMediaOperation = 3,
 
         /// <summary>
         /// 智能工业
         /// </summary>
         [EnumField("智能工业")]
-        Robot = 5
+        Robot = 4
     }
 }
diff --git a/Edu.Common/Enum/Customer/TaskTypeEnum.cs b/Edu.Common/Enum/Customer/TaskTypeEnum.cs
new file mode 100644
index 00000000..e141c77e
--- /dev/null
+++ b/Edu.Common/Enum/Customer/TaskTypeEnum.cs
@@ -0,0 +1,37 @@
+using Edu.Common.Plugin;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Edu.Common.Enum.Customer
+{
+    /// <summary>
+    /// 任务类型
+    /// </summary>
+    public enum TaskTypeEnum
+    {
+        /// <summary>
+        /// 全局通用
+        /// </summary>
+        [EnumField("全局通用")]
+        GlobalUse =1,
+
+        /// <summary>
+        /// 科目
+        /// </summary>
+        [EnumField("科目")]
+        CourseSuject =2,
+
+        /// <summary>
+        /// 课程系列
+        /// </summary>
+        [EnumField("课程系列")]
+        CourseCate =3,
+
+        /// <summary>
+        /// 课程
+        /// </summary>
+        [EnumField("课程")]
+        Course = 4,
+    }
+}
diff --git a/Edu.Model/Entity/Course/RB_Course_Subject.cs b/Edu.Model/Entity/Course/RB_Course_Subject.cs
new file mode 100644
index 00000000..6030ca08
--- /dev/null
+++ b/Edu.Model/Entity/Course/RB_Course_Subject.cs
@@ -0,0 +1,66 @@
+using Edu.Common.Enum;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using VT.FW.DB;
+
+namespace Edu.Model.Entity.Course
+{
+    /// <summary>
+    /// 课程科目实体类
+    /// </summary>
+    [Serializable]
+    [DB(ConnectionName = "DefaultConnection")]
+    public class RB_Course_Subject
+    {
+		/// <summary>
+		/// 主键编号
+		/// </summary>
+		public int Id { get; set; }
+
+		/// <summary>
+		/// 科目名称
+		/// </summary>
+		public string SubjectName { get; set; }
+
+		/// <summary>
+		/// 科目图标
+		/// </summary>
+		public string SubjectIcon { get; set; }
+
+		/// <summary>
+		/// 创建人
+		/// </summary>
+		public int CreateBy { get; set; }
+
+		/// <summary>
+		/// 创建时间
+		/// </summary>
+		public DateTime CreateTime { get; set; }
+
+		/// <summary>
+		/// 修改人
+		/// </summary>
+		public int UpdateBy { get; set; }
+
+		/// <summary>
+		/// 更新时间
+		/// </summary>
+		public DateTime UpdateTime { get; set; }
+
+		/// <summary>
+		/// 学校Id
+		/// </summary>
+		public int School_Id { get; set; }
+
+		/// <summary>
+		/// 集团编号
+		/// </summary>
+		public int Group_Id { get; set; }
+
+		/// <summary>
+		/// 状态
+		/// </summary>
+		public DateStateEnum Status { get; set; }
+	}
+}
diff --git a/Edu.Model/ViewModel/Course/RB_Course_Subject_ViewModel.cs b/Edu.Model/ViewModel/Course/RB_Course_Subject_ViewModel.cs
new file mode 100644
index 00000000..20278e65
--- /dev/null
+++ b/Edu.Model/ViewModel/Course/RB_Course_Subject_ViewModel.cs
@@ -0,0 +1,33 @@
+using Edu.Model.Entity.Course;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Edu.Model.ViewModel.Course
+{
+    /// <summary>
+    /// 课程科目扩展实体类
+    /// </summary>
+    public class RB_Course_Subject_ViewModel: RB_Course_Subject
+    {
+        /// <summary>
+        /// 创建人
+        /// </summary>
+        public string CreateByName { get; set; }
+
+        /// <summary>
+        /// 修改人
+        /// </summary>
+        public string UpdateByName { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public string CreateTimeStr { get { return Common.ConvertHelper.FormatTime(this.CreateTime); } }
+
+        /// <summary>
+        /// 修改时间
+        /// </summary>
+        public string UpdateTimeStr { get { return Common.ConvertHelper.FormatTime(this.UpdateTime); } }
+    }
+}
diff --git a/Edu.Module.Course/CourseCategoryModule.cs b/Edu.Module.Course/CourseCategoryModule.cs
index c96cc63c..6df5474f 100644
--- a/Edu.Module.Course/CourseCategoryModule.cs
+++ b/Edu.Module.Course/CourseCategoryModule.cs
@@ -12,11 +12,17 @@ namespace Edu.Module.Course
     /// </summary>
     public class CourseCategoryModule
     {
+        /// <summary>
+        /// 科目仓储层对象
+        /// </summary>
+        private readonly RB_Course_SubjectRepository course_SubjectRepository = new RB_Course_SubjectRepository();
+
         /// <summary>
         /// 课程分类仓储对象
         /// </summary>
         private readonly RB_Course_CategoryRepository categoryRepository = new RB_Course_CategoryRepository();
 
+        #region 课程分类
         /// <summary>
         /// 获取课程分类列表
         /// </summary>
@@ -97,7 +103,7 @@ namespace Edu.Module.Course
                             CateId = fItem.CateId,
                             CateName = fItem.CateName,
                             ParentId = fItem.ParentId,
-                            CourseSubject=fItem.CourseSubject,
+                            CourseSubject = fItem.CourseSubject,
                             ChildList = new List<CourseCategoryTree_ViewModel>()
                         };
                         tModel.ChildList = GetCategoryTreeList(fItem.CateId, list);
@@ -123,7 +129,7 @@ namespace Edu.Module.Course
                     CateId = item.CateId,
                     CateName = item.CateName,
                     ParentId = item.ParentId,
-                    CourseSubject=item.CourseSubject,
+                    CourseSubject = item.CourseSubject,
                     ChildList = new List<CourseCategoryTree_ViewModel>(),
                 };
                 model.ChildList = GetCategoryTreeList(item.CateId, sourceList);
@@ -176,5 +182,88 @@ namespace Edu.Module.Course
             bool flag = categoryRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Category_ViewModel.CateId), CateId));
             return flag;
         }
+
+        #endregion
+
+        #region 科目管理
+
+        /// <summary>
+        /// 获取科目分页列表
+        /// </summary>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="rowsCount"></param>
+        /// <param name="query"></param>
+        /// <returns></returns>
+        public List<RB_Course_Subject_ViewModel> GetCourseSubjectPageModule(int pageIndex, int pageSize, out long rowsCount, RB_Course_Subject_ViewModel query)
+        {
+            var list = course_SubjectRepository.GetCourseSubjectPageRepository(pageIndex, pageSize, out rowsCount, query);
+            return list;
+        }
+
+        /// <summary>
+        /// 获取科目列表
+        /// </summary>
+        /// <param name="query"></param>
+        /// <returns></returns>
+        public List<RB_Course_Subject_ViewModel> GetCourseSubjectListModule(RB_Course_Subject_ViewModel query)
+        {
+            return course_SubjectRepository.GetCourseSubjectListRepository(query);
+        }
+
+        /// <summary>
+        /// 新增修改科目
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public bool SetCourseSubjectModule(RB_Course_Subject_ViewModel model)
+        {
+            bool flag = false;
+            if (model.Id > 0)
+            {
+                Dictionary<string, object> fileds = new Dictionary<string, object>()
+                {
+                    { nameof(RB_Course_Subject_ViewModel.SubjectName),model.SubjectName},
+                    { nameof(RB_Course_Subject_ViewModel.SubjectIcon),model.SubjectIcon},
+                    { nameof(RB_Course_Subject_ViewModel.UpdateBy),model.UpdateBy},
+                    { nameof(RB_Course_Subject_ViewModel.UpdateTime),model.UpdateTime},
+                };
+                flag = course_SubjectRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Subject_ViewModel.Id), model.Id));
+            }
+            else
+            {
+                var newId = course_SubjectRepository.Insert(model);
+                model.Id = newId;
+                flag = newId > 0;
+            }
+            return flag;
+        }
+
+        /// <summary>
+        /// 根据编号获取科目详情
+        /// </summary>
+        /// <param name="Id"></param>
+        /// <returns></returns>
+        public RB_Course_Subject_ViewModel GetCourseSubjectModule(object Id)
+        {
+            var extModel = course_SubjectRepository.GetEntity<RB_Course_Subject_ViewModel>(Id);
+            return extModel;
+        }
+
+        /// <summary>
+        /// 根据编号删除科目
+        /// </summary>
+        /// <param name="Id"></param>
+        /// <returns></returns>
+        public bool RemoveCourseSubjectModule(object Id)
+        {
+            Dictionary<string, object> fileds = new Dictionary<string, object>()
+            {
+                { nameof(RB_Course_Subject_ViewModel.Status),(int)DateStateEnum.Delete},
+            };
+            var flag = course_SubjectRepository.Update(fileds, new WhereHelper(nameof(RB_Course_Subject_ViewModel.Id), Id));
+            return flag;
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/Edu.Repository/Course/RB_Course_SubjectRepository.cs b/Edu.Repository/Course/RB_Course_SubjectRepository.cs
new file mode 100644
index 00000000..5b076863
--- /dev/null
+++ b/Edu.Repository/Course/RB_Course_SubjectRepository.cs
@@ -0,0 +1,80 @@
+using Edu.Common.Enum;
+using Edu.Model.Entity.Course;
+using Edu.Model.ViewModel.Course;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using VT.FW.DB.Dapper;
+
+namespace Edu.Repository.Course
+{
+    /// <summary>
+    /// 课程科目仓储层对象
+    /// </summary>
+    public class RB_Course_SubjectRepository : BaseRepository<RB_Course_Subject>
+    {
+        /// <summary>
+        /// 获取科目分页列表
+        /// </summary>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="rowsCount"></param>
+        /// <param name="query"></param>
+        /// <returns></returns>
+        public List<RB_Course_Subject_ViewModel> GetCourseSubjectPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Course_Subject_ViewModel query)
+        {
+            var parameters = new DynamicParameters();
+            StringBuilder builder = new StringBuilder();
+            builder.AppendFormat(@" 
+SELECT A.*
+FROM  RB_Course_Subject AS A
+WHERE 1=1
+");
+            builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Course_Subject_ViewModel.Status), (int)DateStateEnum.Normal);
+            if (query != null)
+            {
+                if (query.Group_Id > 0)
+                {
+                    builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Course_Subject_ViewModel.Group_Id), query.Group_Id);
+                }
+                if (!string.IsNullOrEmpty(query.SubjectName))
+                {
+                    builder.AppendFormat(" AND A.{0} LIKE @SubjectName ", nameof(RB_Course_Subject_ViewModel.SubjectName));
+                    parameters.Add("SubjectName", "%" + query.SubjectName.Trim() + "%");
+                }
+            }
+            return GetPage<RB_Course_Subject_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
+        }
+
+        /// <summary>
+        /// 获取科目列表
+        /// </summary>
+        /// <param name="query"></param>
+        /// <returns></returns>
+        public List<RB_Course_Subject_ViewModel> GetCourseSubjectListRepository(RB_Course_Subject_ViewModel query)
+        {
+            var parameters = new DynamicParameters();
+            StringBuilder builder = new StringBuilder();
+            builder.AppendFormat(@" 
+SELECT A.*
+FROM  RB_Course_Subject AS A
+WHERE 1=1
+");
+            builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Course_Subject_ViewModel.Status), (int)DateStateEnum.Normal);
+            if (query != null)
+            {
+                if (query.Group_Id > 0)
+                {
+                    builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Course_Subject_ViewModel.Group_Id), query.Group_Id);
+                }
+                if (!string.IsNullOrEmpty(query.SubjectName))
+                {
+                    builder.AppendFormat(" AND A.{0} LIKE @SubjectName ", nameof(RB_Course_Subject_ViewModel.SubjectName));
+                    parameters.Add("SubjectName", "%" + query.SubjectName.Trim() + "%");
+                }
+            }
+            return Get<RB_Course_Subject_ViewModel>(builder.ToString(), parameters).ToList();
+        }
+    }
+}
diff --git a/Edu.WebApi/Controllers/Course/CourseController.cs b/Edu.WebApi/Controllers/Course/CourseController.cs
index bcc55c14..392e20b4 100644
--- a/Edu.WebApi/Controllers/Course/CourseController.cs
+++ b/Edu.WebApi/Controllers/Course/CourseController.cs
@@ -33,6 +33,104 @@ namespace Edu.WebApi.Controllers.Course
         /// </summary>
         private readonly CourseModule courseModule = AOP.AOPHelper.CreateAOPObject<CourseModule>();
 
+        #region 科目管理
+        /// <summary>
+        /// 获取课程科目分页列表
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public ApiResult GetCourseSubjectPage()
+        {
+            var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
+            var query = new RB_Course_Subject_ViewModel()
+            {
+                SubjectName=base.ParmJObj.GetStringValue("SubjectName"),
+            };
+            query.Group_Id = base.UserInfo.Group_Id;
+            query.School_Id = base.UserInfo.School_Id;
+            var list = categoryModule.GetCourseSubjectPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
+            foreach (var item in list)
+            {
+                if (item.CreateBy > 0)
+                {
+                    item.CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "";
+                }
+                if (item.UpdateBy > 0)
+                {
+                    item.UpdateByName = UserReidsCache.GetUserLoginInfo(item.UpdateBy)?.AccountName ?? "";
+                }
+            }
+            pageModel.Count = rowsCount;
+            pageModel.PageData = list;
+            return ApiResult.Success(data: pageModel);
+        }
+
+        /// <summary>
+        /// 获取课程科目列表
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public ApiResult GetCourseSubjectList()
+        {
+            var query = new RB_Course_Subject_ViewModel()
+            {
+                SubjectName = base.ParmJObj.GetStringValue("SubjectName"),
+            };
+            query.Group_Id = base.UserInfo.Group_Id;
+            var list = categoryModule.GetCourseSubjectListModule(query);
+            return ApiResult.Success(data: list);
+        }
+ 
+
+        /// <summary>
+        /// 添加修改课程科目
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public ApiResult SetCourseSubject()
+        {
+            var extModel = new RB_Course_Subject_ViewModel()
+            {
+                Id = base.ParmJObj.GetInt("Id"),
+                SubjectName = base.ParmJObj.GetStringValue("SubjectName"),
+                SubjectIcon = base.ParmJObj.GetStringValue("SubjectIcon"),
+            };
+            extModel.CreateTime = DateTime.Now;
+            extModel.CreateBy = UserInfo.Id;
+            extModel.UpdateBy = UserInfo.Id;
+            extModel.UpdateTime = DateTime.Now;
+            extModel.Group_Id = this.UserInfo.Group_Id;
+            extModel.School_Id = this.UserInfo.School_Id;
+            bool flag = categoryModule.SetCourseSubjectModule(extModel);
+            return flag ? ApiResult.Success() : ApiResult.Failed();
+        }
+
+        /// <summary>
+        /// 获取课程科目详情
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public ApiResult GetCourseSubject()
+        {
+            var Id = base.ParmJObj.GetInt("Id", 0);
+            var extModel = categoryModule.GetCourseSubjectModule(Id);
+            return ApiResult.Success(data: extModel);
+        }
+
+        /// <summary>
+        /// 删除课程科目
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public ApiResult RemoveCourseSubject()
+        {
+            var Id = base.ParmJObj.GetInt("Id", 0);
+            var flag = categoryModule.RemoveCourseSubjectModule(Id);
+            return flag ? ApiResult.Success() : ApiResult.Failed();
+        }
+
+        #endregion
+
         #region 课程分类管理
         /// <summary>
         /// 获取课程分类分页列表
@@ -576,17 +674,6 @@ namespace Edu.WebApi.Controllers.Course
             return ApiResult.Success(data: list);
         }
 
-        /// <summary>
-        /// 获取课程科目列表
-        /// </summary>
-        /// <returns></returns>
-        [HttpPost]
-        public ApiResult GetCourseSubjectList()
-        {
-            var list = Common.Plugin.EnumHelper.EnumToList(typeof(CourseSubjectEnum)).OrderBy(qitem => qitem.Id);
-            return ApiResult.Success(data: list);
-        }
-
         /// <summary>
         /// 删除课程章节
         /// </summary>
-- 
2.18.1