|
@@ -16,6 +16,7 @@ using System.Text;
|
|
|
using TEAMModelOS.SDK.DI.AzureCosmos.Inner;
|
|
|
using Microsoft.Extensions.Options;
|
|
|
using TEAMModelOS.Filter;
|
|
|
+using HTEXLib.COMM.Helpers;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers
|
|
|
{
|
|
@@ -24,7 +25,7 @@ namespace TEAMModelOS.Controllers
|
|
|
//[Authorize(Roles = "IES5")]
|
|
|
[Route("knowledges")]
|
|
|
[ApiController]
|
|
|
- public class KnowledgesController: ControllerBase
|
|
|
+ public class KnowledgesController : ControllerBase
|
|
|
{
|
|
|
private readonly SnowflakeId _snowflakeId;
|
|
|
private readonly AzureCosmosFactory _azureCosmos;
|
|
@@ -42,7 +43,7 @@ namespace TEAMModelOS.Controllers
|
|
|
/**
|
|
|
*
|
|
|
{
|
|
|
- "periodId": "ca484aa8-e7b5-4a7c-8ef3-bd9e7b7d4fp2",
|
|
|
+ "periodId": "ca484aa8-e7b5-4a7c-8ef3-bd9e7b7d4fp2",
|
|
|
"subjectId":"ac73f07d-2cc8-4174-85ae-b39cc5b6beef",
|
|
|
"scope":"school",
|
|
|
"owner":"hbcn",
|
|
@@ -97,11 +98,55 @@ namespace TEAMModelOS.Controllers
|
|
|
knowledge.id = Guid.NewGuid().ToString();
|
|
|
knowledge = await client.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync(knowledge, new PartitionKey($"{knowledge.code}"));
|
|
|
}
|
|
|
- var count= new { pcount = knowledge.points!=null ? knowledge.points.Count:0,bcount= knowledge.blocks!=null? knowledge.blocks.Count:0 };
|
|
|
+ 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());
|
|
|
return Ok(knowledge);
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ ///
|
|
|
+ /// "periodId": "ca484aa8-e7b5-4a7c-8ef3-bd9e7b7d4fp2",
|
|
|
+ /// "subjectId":"ac73f07d-2cc8-4174-85ae-b39cc5b6beef",
|
|
|
+ /// "owner":"hbcn",
|
|
|
+ /// "points":["11111"]
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="knowledge"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [ProducesDefaultResponseType]
|
|
|
+ [HttpPost("item-import")]
|
|
|
+ [AuthToken(Roles = "admin", Permissions = "knowledge-upd")]
|
|
|
+ public async Task<IActionResult> ItemImport(Knowledge dto)
|
|
|
+ {
|
|
|
+ var client = _azureCosmos.GetCosmosClient();
|
|
|
+ dto.code = $"Knowledge-{dto.owner}-{dto.subjectId}";
|
|
|
+ StringBuilder sql = new StringBuilder($"select value(c) from c where c.periodId = '{dto.periodId}'");
|
|
|
+ Knowledge knowledge = null;
|
|
|
+ await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<Knowledge>(
|
|
|
+ queryText: sql.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"{ dto.code}") }))
|
|
|
+ {
|
|
|
+ knowledge = item;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (knowledge != null)
|
|
|
+ {
|
|
|
+ var notin = dto.points.Where(x => !knowledge.points.Any(y => y.Equals(x))).ToList() ;
|
|
|
+ if (notin.IsNotEmpty()) {
|
|
|
+ knowledge.points.AddRange(notin);
|
|
|
+ knowledge = await client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(knowledge, knowledge.id, new PartitionKey($"{knowledge.code}"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ knowledge.id = Guid.NewGuid().ToString();
|
|
|
+ knowledge.points = dto.points;
|
|
|
+ knowledge = await client.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync(knowledge, new PartitionKey($"{knowledge.code}"));
|
|
|
+ }
|
|
|
+ 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());
|
|
|
+ return Ok(new { knowledge });
|
|
|
+ }
|
|
|
/// <summary>
|
|
|
/**
|
|
|
|