Browse Source

课纲接口提交

黄贺彬 6 years ago
parent
commit
b92e6c1740

+ 5 - 2
TEAMModelOS.Model/Syllabus/Models/KnowledgeBlock.cs

@@ -1,4 +1,5 @@
-using Microsoft.WindowsAzure.Storage.Table;
+using MessagePack;
+using Microsoft.WindowsAzure.Storage.Table;
 using System;
 using System.Collections.Generic;
 using System.Text;
@@ -6,7 +7,9 @@ using TEAMModelOS.SDK.Context.Attributes.Azure;
 
 namespace TEAMModelOS.Model.Syllabus.Models
 {
-    public class KnowledgeBlock //: TableEntity
+    [TableSpace(Name = "Syllabus")]
+    [MessagePackObject(keyAsPropertyName: true)]
+    public class KnowledgeBlock : TableEntity
     {
         public string Id { get; set; }
         public string Key { get; set; }

+ 7 - 4
TEAMModelOS.Model/Syllabus/Models/KnowledgeBlockPoint.cs

@@ -1,4 +1,5 @@
-using Microsoft.WindowsAzure.Storage.Table;
+using MessagePack;
+using Microsoft.WindowsAzure.Storage.Table;
 using System;
 using System.Collections.Generic;
 using System.Text;
@@ -6,7 +7,9 @@ using TEAMModelOS.SDK.Context.Attributes.Azure;
 
 namespace TEAMModelOS.Model.Syllabus.Models
 {
-    public class KnowledgeBlockPoint //: TableEntity
+    [TableSpace(Name = "Syllabus")]
+    [MessagePackObject(keyAsPropertyName: true)]
+    public class KnowledgeBlockPoint : TableEntity
     {
         public string Id { get; set; }
         public string PointId { get; set; }
@@ -19,8 +22,8 @@ namespace TEAMModelOS.Model.Syllabus.Models
         /// </summary>
         public string Alias { get; set; }
         public string BlockId { get; set; }
-        [PartitionKey]
-        public string Lang { get; set; }
+        //[PartitionKey]
+        //public string Lang { get; set; }
         
     }
 }

+ 11 - 8
TEAMModelOS.Model/Syllabus/Models/KnowledgePoint.cs

@@ -1,4 +1,5 @@
-using Microsoft.WindowsAzure.Storage.Table;
+using MessagePack;
+using Microsoft.WindowsAzure.Storage.Table;
 using System;
 using System.Collections.Generic;
 using System.Text;
@@ -9,9 +10,11 @@ namespace TEAMModelOS.Model.Syllabus.Models
     /// <summary>
     /// 知识点
     /// </summary>
-    public class KnowledgePoint //: TableEntity
+    [TableSpace(Name = "Syllabus")]
+    [MessagePackObject(keyAsPropertyName: true)]
+    public class KnowledgePoint : TableEntity
     {
-        public string Id { get; set; }
+       // public string Id { get; set; }
         public string Key { get; set; }
         /// <summary>
         /// 名称
@@ -21,11 +24,11 @@ namespace TEAMModelOS.Model.Syllabus.Models
         /// 描述
         /// </summary>
         public string Description { get; set; }
-        /// <summary>
-        /// 语言版本
-        /// </summary>
-        [PartitionKey]
-        public string Lang { get; set; }
+        ///// <summary>
+        ///// 语言版本
+        ///// </summary>
+        //[PartitionKey]
+        //public string Lang { get; set; }
         /// <summary>
         /// 学科
         /// </summary>

+ 25 - 20
TEAMModelOS.Service/Syllabus/Implements/SyllabusService.cs

@@ -10,28 +10,30 @@ using TEAMModelOS.SDK.Context.Exception;
 using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using TEAMModelOS.SDK.Helper.Common.JsonHelper;
 using TEAMModelOS.SDK.Module.AzureTable.Interfaces;
+using TEAMModelOS.Service.Core.Implements;
 using TEAMModelOS.Service.Syllabus.Interfaces;
 
 namespace TEAMModelOS.Service.Syllabus.Implements
 {
-    public class SyllabusService : ISyllabusService
+    public class SyllabusService : BaseService, ISyllabusService
     {
 
-        private readonly IAzureTableDBRepository _azureTableDBRepository;
-        public SyllabusService(IAzureTableDBRepository azureTableDBRepository) {
-            _azureTableDBRepository = azureTableDBRepository;
-        }
+        //private readonly IAzureTableDBRepository _azureTableDBRepository;
+        //public SyllabusService(IAzureTableDBRepository azureTableDBRepository) {
+        //    _azureTableDBRepository = azureTableDBRepository;
+        //}
 
 
-        public async Task<List<SyllabusTree>> SaveOrUpdateAll(List<SyllabusTree> trees)
+        public async Task<List<SyllabusTree>> SaveOrUpdateAll(List<SyllabusTree> trees ,string lang )
         {
             List<SyllabusTree> nodes = new List<SyllabusTree>();
             TreeToList(trees, nodes);
             List<SyllabusNode> nods = MessagePackHelper.JsonToObject<List<SyllabusNode>>(MessagePackHelper.ObjectToJson(nodes));
-            await _azureTableDBRepository.SaveOrUpdateAll<SyllabusNode>(nods);
+            nods.ForEach(m => { m.PartitionKey = lang; });
+            await SaveOrUpdateAll<SyllabusNode>(nods);
             List<SyllabusTree> treess = ListToTree(nods);
             return treess;
-           // return Task.Factory.StartNew(() => { return treess; });
+            // return Task.Factory.StartNew(() => { return treess; });
         }
 
         public List<SyllabusTree> TreeToList(List<SyllabusTree> trees, List<SyllabusTree> nodes)
@@ -47,33 +49,36 @@ namespace TEAMModelOS.Service.Syllabus.Implements
             return nodes;
         }
 
-        private  List<SyllabusTree> ListToTree(List<SyllabusNode> noes)
+        public async Task<List<SyllabusTree>> FindSyllabusTreeByDict(Dictionary<string, object> dict)
+        {
+            List<SyllabusNode> syllabusNodes = await FindListByDict<SyllabusNode>(dict);
+            return ListToTree(syllabusNodes);
+        }
+
+        private List<SyllabusTree> ListToTree(List<SyllabusNode> noes)
         {
             List<SyllabusTree> list = MessagePackHelper.JsonToObject<List<SyllabusTree>>(MessagePackHelper.ObjectToJson(noes));
- 
             var lookup = list.ToDictionary(n => n.RowKey, n => n);
             return GetChild(list, lookup);
         }
 
-        public List<SyllabusTree> GetChild(List<SyllabusTree> list ,Dictionary<string , SyllabusTree> dict) {
+        public List<SyllabusTree> GetChild(List<SyllabusTree> list, Dictionary<string, SyllabusTree> dict)
+        {
             List<SyllabusTree> trees = new List<SyllabusTree>();
-            foreach (SyllabusTree node in list) {
-              bool flag=  dict.TryGetValue(node.Pid, out SyllabusTree syllabus);
+            foreach (SyllabusTree node in list)
+            {
+                bool flag = dict.TryGetValue(node.Pid, out SyllabusTree syllabus);
                 if (flag && syllabus != null)
                 {
                     syllabus.Children.Add(node);
                 }
-                else {
+                else
+                {
                     trees.Add(node);
                 }
             }
-            return trees; 
+            return trees;
         }
 
-        public async  Task<SyllabusNode> SaveOrUpdate(SyllabusNode node )
-        {
-
-            return await _azureTableDBRepository.SaveOrUpdate<SyllabusNode>(node);
-        }
     }
 }

+ 7 - 6
TEAMModelOS.Service/Syllabus/Interfaces/ISyllabusService.cs

@@ -7,20 +7,21 @@ using TEAMModelOS.Service.Core.Interfaces;
 
 namespace TEAMModelOS.Service.Syllabus.Interfaces
 {
-    public interface ISyllabusService : IBusinessService
+    public interface ISyllabusService : IBusinessService, IBaseService
     {
         /// <summary>
         /// 批量保存课纲结构树形
         /// </summary>
         /// <param name="trees"></param>
         /// <returns></returns>
-        Task<List<SyllabusTree>> SaveOrUpdateAll(List<SyllabusTree> trees);
+        Task<List<SyllabusTree>> SaveOrUpdateAll(List<SyllabusTree> trees, string lang);
         /// <summary>
-        /// 保存单个课纲节点
+        /// 根据条件获取树形结构
         /// </summary>
-        /// <param name="node"></param>
+        /// <param name="dict"></param>
         /// <returns></returns>
-        Task<SyllabusNode> SaveOrUpdate(SyllabusNode node);
-       
+        Task<List<SyllabusTree>> FindSyllabusTreeByDict(Dictionary<string, object> dict);
+
+
     }
 }

+ 23 - 2
TEAMModelOS/Controllers/Syllabus/SyllabusController.cs

@@ -27,15 +27,36 @@ namespace TEAMModelOS.Controllers.Syllabus
         public async Task<BaseJosnRPCResponse> SaveOrUpdateAll(JosnRPCRequest<List<SyllabusTree>> request )
         {
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
-            List<SyllabusTree> data = await syllabusService.SaveOrUpdateAll(request.@params);
+            List<SyllabusTree> data = await syllabusService.SaveOrUpdateAll(request.@params , request.lang);
             return builder.Data(data).build(); 
         }
         [HttpPost("SaveOrUpdate")]
         public async Task<BaseJosnRPCResponse> SaveOrUpdate(JosnRPCRequest<SyllabusNode> request)
         {
+            if (request.@params != null) {
+                request.@params.PartitionKey = request.lang;
+                if (string.IsNullOrEmpty(request.@params.RowKey)) {
+                    request.@params.RowKey = Guid.NewGuid().ToString();
+                }
+            }
             JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
-            SyllabusNode data = await syllabusService.SaveOrUpdate(request.@params);
+            SyllabusNode data = await syllabusService.SaveOrUpdate<SyllabusNode>(request.@params);
             return builder.Data(data).build();
         }
+        [HttpPost("FindSyllabusByVolumeCode")]
+        public async Task<BaseJosnRPCResponse> FindSyllabusByVolumeCode(JosnRPCRequest<Dictionary<string,object>> request)
+        {
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            List<SyllabusTree> data = new List<SyllabusTree>();
+            if (request.@params != null && request.@params.TryGetValue("VolumeCode", out _))
+            {
+                data = await syllabusService.FindSyllabusTreeByDict(request.@params);
+            }
+            else {
+                builder.Error("VolumeCode is null or empty!", "VolumeCode is null or empty!");
+            }
+            return builder.Data(data).build();
+        }
+
     }
 }