|
@@ -18,6 +18,9 @@ using Microsoft.Extensions.Options;
|
|
|
using TEAMModelOS.Filter;
|
|
|
using HTEXLib.COMM.Helpers;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
+using TEAMModelOS.SDK;
|
|
|
+using static TEAMModelOS.SDK.ValidatorHelper;
|
|
|
+using System.ComponentModel.DataAnnotations;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers
|
|
|
{
|
|
@@ -41,6 +44,8 @@ namespace TEAMModelOS.Controllers
|
|
|
_option = option?.Value;
|
|
|
_azureRedis = azureRedis;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
*
|
|
|
{
|
|
@@ -81,7 +86,17 @@ namespace TEAMModelOS.Controllers
|
|
|
[HttpPost("upsert")]
|
|
|
[Authorize(Roles = "IES")]
|
|
|
[AuthToken(Roles = "admin", Permissions = "knowledge-upd")]
|
|
|
- public async Task<IActionResult> Upsert(Knowledge knowledge) {
|
|
|
+ public async Task<IActionResult> Upsert(JsonElement json) {
|
|
|
+
|
|
|
+ Knowledge knowledge = json.GetProperty("knowledge").ToObject<Knowledge>();
|
|
|
+ List<OldNew> old_new = null;
|
|
|
+ if (json.TryGetProperty("old_new",out JsonElement _old_new )) {
|
|
|
+ old_new = _old_new.ToObject<List<OldNew>>();
|
|
|
+ }
|
|
|
+ ValidResult validResult = knowledge.IsValid();
|
|
|
+ if (!validResult.isVaild) {
|
|
|
+ return BadRequest(validResult);
|
|
|
+ }
|
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
|
knowledge.code = $"Knowledge-{knowledge.owner}-{knowledge.subjectId}";
|
|
|
StringBuilder sql = new StringBuilder($"select value(c) from c where c.periodId = '{knowledge.periodId}'");
|
|
@@ -103,6 +118,19 @@ namespace TEAMModelOS.Controllers
|
|
|
var count = new { pcount = knowledge.points != null ? knowledge.points.Count : 0, bcount = knowledge.blocks != null ? knowledge.blocks.Count : 0 };
|
|
|
//处理知识点,知识块计数问题
|
|
|
await _azureRedis.GetRedisClient(8).HashSetAsync($"Knowledge:Count:{knowledge.owner}-{knowledge.subjectId}", knowledge.periodId, count.ToJsonString());
|
|
|
+ if (old_new.IsNotEmpty() && old!= null && knowledge!=null) {
|
|
|
+ var _old = old_new.Select(x => x._old).ToList();
|
|
|
+ var notinold= _old.Except(old.points);
|
|
|
+ if (notinold!= null && notinold.Count()>0) {
|
|
|
+ return BadRequest($"{notinold.ToJsonString()} 不存在原来的知识点中");
|
|
|
+ }
|
|
|
+ var _new = old_new.Select(x => x._new).ToList();
|
|
|
+ var notinnew = _old.Except(knowledge.points);
|
|
|
+ if (notinnew != null && notinnew.Count() > 0)
|
|
|
+ {
|
|
|
+ return BadRequest($"{notinnew.ToJsonString()} 不存在新的知识点中");
|
|
|
+ }
|
|
|
+ }
|
|
|
return Ok(knowledge);
|
|
|
}
|
|
|
|