|
@@ -14,6 +14,7 @@ using System.Linq;
|
|
|
using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
|
|
|
using Newtonsoft.Json;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
+using TEAMModelOS.Service.Services.Syllabus.Interface;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers.Syllabus
|
|
|
{
|
|
@@ -22,7 +23,9 @@ namespace TEAMModelOS.Controllers.Syllabus
|
|
|
//[Authorize]
|
|
|
public class SyllabusController : BaseController
|
|
|
{
|
|
|
- private readonly IAzureCosmosDBV3Repository azureCosmosDBRepository;
|
|
|
+ private IAzureCosmosDBV3Repository azureCosmosDBRepository;
|
|
|
+ private ISyllabusService syllabusService;
|
|
|
+
|
|
|
public SyllabusController(IAzureCosmosDBV3Repository _azureCosmosDBRepository)
|
|
|
{
|
|
|
azureCosmosDBRepository = _azureCosmosDBRepository;
|
|
@@ -36,35 +39,13 @@ namespace TEAMModelOS.Controllers.Syllabus
|
|
|
public async Task<BaseJosnRPCResponse> SaveOrUpdateAsTree(JosnRPCRequest<List<SyllabusTree>> request)
|
|
|
{
|
|
|
JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
|
|
|
- List<SyllabusNode> nodes = new List<SyllabusNode>();
|
|
|
- Syllabuses syllabus = new Syllabuses();
|
|
|
-
|
|
|
- TreeToList(request.@params, nodes);
|
|
|
- // List<SyllabusNode> nods = nodes.ToJson().FromJson<List<SyllabusNode>>() ;
|
|
|
- syllabus.children = nodes;
|
|
|
- syllabus.id = request.@params[0].volumeCode;
|
|
|
- syllabus.volumeCode = request.@params[0].volumeCode;
|
|
|
- await azureCosmosDBRepository.SaveOrUpdate<Syllabuses>(syllabus);
|
|
|
- List<SyllabusTree> treess = ListToTree(nodes);
|
|
|
+ List<SyllabusTree> treess = await syllabusService.SaveOrUpdateAsTree(request.@params);
|
|
|
return builder.Data(treess).build();
|
|
|
}
|
|
|
- public static List<SyllabusNode> TreeToList(List<SyllabusTree> trees, List<SyllabusNode> nodes)
|
|
|
- {
|
|
|
- trees = trees.OrderBy(x => x.order).ToList();
|
|
|
- nodes.AddRange(trees.ToJson().FromJson<List<SyllabusNode>>());
|
|
|
|
|
|
- foreach (SyllabusTree tree in trees)
|
|
|
- {
|
|
|
- if (null != tree.children && tree.children.Count > 0)
|
|
|
- {
|
|
|
- TreeToList(tree.children, nodes);
|
|
|
- }
|
|
|
- }
|
|
|
- return nodes;
|
|
|
- }
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 批量保存或更新课纲
|
|
|
+ /// 按节点新增课纲
|
|
|
/// </summary>
|
|
|
/// <param name="request"></param>
|
|
|
/// <returns></returns>
|
|
@@ -72,76 +53,11 @@ namespace TEAMModelOS.Controllers.Syllabus
|
|
|
public async Task<BaseJosnRPCResponse> SaveOrUpdateAsNodes(JosnRPCRequest<List<SyllabusNode>> request)
|
|
|
{
|
|
|
JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
|
|
|
- List<SyllabusNode> syllabusNodes = request.@params;
|
|
|
- List<Syllabuses> data = await azureCosmosDBRepository.FindByDict<Syllabuses>(new Dictionary<string, object> { { "id", syllabusNodes[0].volumeCode } });
|
|
|
- List<SyllabusNode> syllabusNodes1 = new List<SyllabusNode>();
|
|
|
- if (data.Count > 0) {
|
|
|
-
|
|
|
- syllabusNodes1.AddRange(data[0].children);
|
|
|
- //replace
|
|
|
- for (int i = 0; i < data[0].children.Count; i++)
|
|
|
- {
|
|
|
- for (int j = 0; j < syllabusNodes.Count; j++)
|
|
|
- {
|
|
|
- if (data[0].children[i].id == syllabusNodes[j].id && data[0].children[i].volumeCode == syllabusNodes[j].volumeCode)
|
|
|
- {
|
|
|
- syllabusNodes1.Remove(data[0].children[i]);
|
|
|
- syllabusNodes1.Add(syllabusNodes[j]);
|
|
|
- syllabusNodes.Remove(syllabusNodes[j]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- data[0].children = syllabusNodes1;
|
|
|
-
|
|
|
- //新增
|
|
|
- data[0].children.AddRange(syllabusNodes);
|
|
|
-
|
|
|
-
|
|
|
- List<Syllabuses> syllabuses = await azureCosmosDBRepository.SaveOrUpdateAll<Syllabuses>(data);
|
|
|
- if (syllabuses != null) return builder.Data(request.@params).build();
|
|
|
- else return builder.Data(syllabuses).build();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- throw new BizException("保存失败", ResponseCode.FAILED);
|
|
|
- //return builder.Error(false, ResponseCode.FAILED, "保存失败").build();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- private static List<SyllabusTree> ListToTree(List<SyllabusNode> noes)
|
|
|
- {
|
|
|
- List<SyllabusTree> list = noes.ToJson().FromJson<List<SyllabusTree>>();
|
|
|
- //var lookup = list.ToDictionary(n => n.RowKey, n => n);
|
|
|
-
|
|
|
- var res = from r in list group r by r.id into g select g;
|
|
|
- Dictionary<string, SyllabusTree> blockDict = new Dictionary<string, SyllabusTree>();
|
|
|
- foreach (var s in res)
|
|
|
- {
|
|
|
- blockDict.TryAdd(s.First().id, s.First());
|
|
|
- }
|
|
|
- return GetChild(list, blockDict);
|
|
|
+ List<Syllabuses> syllabuses = await syllabusService.SaveOrUpdateAsNodes(request.@params);
|
|
|
+ if (syllabuses.IsNotEmpty()) return builder.Data(request.@params).build();
|
|
|
+ else return builder.Data(syllabuses).build();
|
|
|
}
|
|
|
|
|
|
- public static List<SyllabusTree> GetChild(List<SyllabusTree> list, Dictionary<string, SyllabusTree> dict)
|
|
|
- {
|
|
|
- // list = list.OrderBy(m => m.Order).ToList();
|
|
|
- List<SyllabusTree> trees = new List<SyllabusTree>();
|
|
|
- foreach (SyllabusTree node in list)
|
|
|
- {
|
|
|
-
|
|
|
- bool flag = dict.TryGetValue(node.pid, out SyllabusTree syllabus);
|
|
|
- if (flag && syllabus != null)
|
|
|
- {
|
|
|
- syllabus.children.Add(node);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- trees.Add(node);
|
|
|
- }
|
|
|
- }
|
|
|
- return trees;
|
|
|
- }
|
|
|
/// <summary>
|
|
|
/// 删除课纲
|
|
|
/// </summary>
|
|
@@ -151,79 +67,26 @@ namespace TEAMModelOS.Controllers.Syllabus
|
|
|
public async Task<BaseJosnRPCResponse> Delete(JosnRPCRequest<Dictionary<string, object>> request)
|
|
|
{
|
|
|
JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
|
|
|
- Dictionary<string, object> dict = new Dictionary<string, object>();
|
|
|
- foreach (KeyValuePair<string, object> keyValuePair in request.@params)
|
|
|
- {
|
|
|
- dict.Add("children[*]." + keyValuePair.Key, keyValuePair.Value);
|
|
|
- }
|
|
|
+ List<Syllabuses> syllabuses = await syllabusService.DeleteSyllabus(request.@params);
|
|
|
|
|
|
- List<Syllabuses> data = await azureCosmosDBRepository.FindByDict<Syllabuses>(dict);
|
|
|
- Dictionary<string, Syllabuses> syllabuses = new Dictionary<string, Syllabuses>();
|
|
|
-
|
|
|
- if (data.Count > 0)
|
|
|
+ if (syllabuses.IsNotEmpty())
|
|
|
{
|
|
|
- data.ForEach(x => syllabuses.TryAdd(x.id, x));
|
|
|
- data = new List<Syllabuses>(syllabuses.Values);
|
|
|
-
|
|
|
- //是否全删
|
|
|
- bool flg = false;
|
|
|
- foreach (Syllabuses item in data)
|
|
|
- {
|
|
|
- List<SyllabusNode> nodedata = item.children;
|
|
|
- if (request.@params.TryGetValue("id", out object id))
|
|
|
- {
|
|
|
- foreach (SyllabusNode syllabus in nodedata)
|
|
|
- {
|
|
|
- if (syllabus.id == id.ToString())
|
|
|
- {
|
|
|
- List<SyllabusNode> nodes = new List<SyllabusNode>();
|
|
|
- nodes.Add(syllabus);
|
|
|
- await FindByPid(syllabus, nodes, nodedata);
|
|
|
- nodedata = nodes;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- List<SyllabusNode> syllabusNodes = new List<SyllabusNode>();
|
|
|
- syllabusNodes.AddRange(item.children);
|
|
|
- for (int i = 0; i < item.children.Count; i++)
|
|
|
- {
|
|
|
- for (int j = 0; j < nodedata.Count; j++)
|
|
|
- {
|
|
|
- if (item.children[i].id == nodedata[j].id)
|
|
|
- {
|
|
|
- syllabusNodes.Remove(item.children[i]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- item.children = syllabusNodes;
|
|
|
- if (item.children.Count == 0)
|
|
|
- {
|
|
|
- await azureCosmosDBRepository.DeleteAsync<Syllabuses>(item.id, item.volumeCode);
|
|
|
- flg = true;
|
|
|
- }
|
|
|
- }
|
|
|
- if (flg)
|
|
|
- {
|
|
|
-
|
|
|
- return builder.Data("全部删除成功").build();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- List<Syllabuses> data1 = await azureCosmosDBRepository.SaveOrUpdateAll<Syllabuses>(data);
|
|
|
- return builder.Data(data1).build();
|
|
|
- }
|
|
|
+ return builder.Data(syllabuses).build();
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- return builder.Data(null).build();
|
|
|
- //throw new BizException("数据不存在", ResponseCode.DATA_EMPTY_NULL);
|
|
|
+ else {
|
|
|
+ return builder.Data("全部删除成功").build();
|
|
|
+
|
|
|
}
|
|
|
+ //else
|
|
|
+ //{
|
|
|
+ // return builder.Data(null).build();
|
|
|
+ // //throw new BizException("数据不存在", ResponseCode.DATA_EMPTY_NULL);
|
|
|
+ //}
|
|
|
|
|
|
//return builder.Data(flag).Extend(new Dictionary<string, object>() { { "deleteData", nodes } }).build();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
public static async Task<List<SyllabusNode>> FindByPid(SyllabusNode data, List<SyllabusNode> nodes, List<SyllabusNode> nodedata)
|
|
|
{
|
|
@@ -249,50 +112,9 @@ namespace TEAMModelOS.Controllers.Syllabus
|
|
|
public async Task<BaseJosnRPCResponse> Find(JosnRPCRequest<Dictionary<string, object>> request)
|
|
|
{
|
|
|
JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
|
|
|
- Dictionary<string, object> dict = new Dictionary<string, object>();
|
|
|
- foreach (KeyValuePair<string, object> keyValuePair in request.@params)
|
|
|
- {
|
|
|
- dict.Add("children[*]." + keyValuePair.Key, keyValuePair.Value);
|
|
|
- }
|
|
|
-
|
|
|
- List<Syllabuses> data = await azureCosmosDBRepository.FindByDict<Syllabuses>(dict);
|
|
|
- if (data.IsNotEmpty())
|
|
|
- {
|
|
|
- Dictionary<string, Syllabuses> syllabuses = new Dictionary<string, Syllabuses>();
|
|
|
- data.ForEach(x => syllabuses.TryAdd(x.id, x));
|
|
|
- data = new List<Syllabuses>(syllabuses.Values);
|
|
|
- List <SyllabusTree> treess = new List<SyllabusTree> ();
|
|
|
- foreach (Syllabuses item in data)
|
|
|
- {
|
|
|
-
|
|
|
- List<SyllabusNode> nodedata = item.children;
|
|
|
- if (request.@params.TryGetValue("id", out object id))
|
|
|
- {
|
|
|
- foreach (SyllabusNode syllabus in nodedata)
|
|
|
- {
|
|
|
- if (syllabus.id == id.ToString())
|
|
|
- {
|
|
|
- List<SyllabusNode> nodes = new List<SyllabusNode>();
|
|
|
- nodes.Add(syllabus);
|
|
|
- await FindByPid(syllabus, nodes, nodedata);
|
|
|
- nodedata = nodes;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- List<SyllabusTree> treess1 = ListToTree(nodedata);
|
|
|
- treess.AddRange(treess1);
|
|
|
-
|
|
|
- //treess.AddRange(treess1);
|
|
|
- }
|
|
|
-
|
|
|
- return builder.Data(treess).build();
|
|
|
- }
|
|
|
- else return builder.Data(data).build();
|
|
|
- //throw new BizException("资源未找到", ResponseCode.NOT_FOUND);
|
|
|
-
|
|
|
- //return builder.Error(false, ResponseCode.NOT_FOUND, "资源未找到").build();
|
|
|
- //throw new BizException("sss");
|
|
|
+ List<SyllabusTree> treess = await syllabusService.Find(request.@params);
|
|
|
+ return builder.Data(treess).build();
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|