Browse Source

收藏接口

CrazyIter_Bin 3 years ago
parent
commit
3103f8c788

+ 3 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/LessonRecord.cs

@@ -102,6 +102,9 @@ namespace TEAMModelOS.SDK.Models
         /// 不填  ["混合学习","语文教研"]课例类别,tag标签,IES5维护
         /// 不填  ["混合学习","语文教研"]课例类别,tag标签,IES5维护
         /// </summary>
         /// </summary>
         public List<string> category { get; set; } = new List<string>();
         public List<string> category { get; set; } = new List<string>();
+        /// <summary>
+        /// 0 是否包含视频,1包含视频
+        /// </summary>
         public int hasVideo { get; set; }
         public int hasVideo { get; set; }
         /// <summary>
         /// <summary>
         /// 
         /// 

+ 16 - 4
TEAMModelOS.SDK/Models/Cosmos/Teacher/Favorite.cs

@@ -7,16 +7,16 @@ using TEAMModelOS.SDK.Models.Cosmos.Common;
 namespace TEAMModelOS.SDK.Models.Cosmos
 namespace TEAMModelOS.SDK.Models.Cosmos
 {
 {
     /// <summary>
     /// <summary>
-    /// 课纲-我喜欢的,我的收藏
+    /// 我喜欢的,我的收藏,可以收藏 试卷,题目,课例,课纲, 资源,活动。
     /// </summary>
     /// </summary>
     public class Favorite : CosmosEntity
     public class Favorite : CosmosEntity
     {
     {
         public Favorite() {
         public Favorite() {
             pk = "Favorite";
             pk = "Favorite";
             ttl = -1;
             ttl = -1;
+            // id 与fromid 相同
             //code ="Favorite-tmdid"
             //code ="Favorite-tmdid"
         }
         }
-        public SyllabusTree node { get; set; }
         /// <summary>
         /// <summary>
         /// 名称 默认选中节点名称,或者自定义输入名称
         /// 名称 默认选中节点名称,或者自定义输入名称
         /// </summary>
         /// </summary>
@@ -28,12 +28,24 @@ namespace TEAMModelOS.SDK.Models.Cosmos
         /// <summary>
         /// <summary>
         /// 引用来源课纲id
         /// 引用来源课纲id
         /// </summary>
         /// </summary>
-        [Required(ErrorMessage = "引用来源课纲id 必须设置")]
+        [Required(ErrorMessage = "必填")]
         public string fromId { get; set; }
         public string fromId { get; set; }
         /// <summary>
         /// <summary>
         /// 引用来源 课纲Code 分区键
         /// 引用来源 课纲Code 分区键
         /// </summary>
         /// </summary>
-        [Required(ErrorMessage = "引用来源课纲code 必须设置")]
+        [Required(ErrorMessage = "必填")]
         public string fromCode { get; set; }
         public string fromCode { get; set; }
+        [Required(ErrorMessage = "必填")]
+        public string type { get; set; }
+        /// <summary>
+        /// 数据所有者
+        /// </summary>
+        [Required(ErrorMessage = "必填")]
+        public string owner { get; set; }
+        /// <summary>
+        /// 数据
+        /// </summary>
+        [Required(ErrorMessage = "必填")]
+        public string scope { get; set; }
     }
     }
 }
 }

+ 1 - 1
TEAMModelOS/Controllers/Both/ShareController.cs

@@ -585,7 +585,7 @@ namespace TEAMModelOS.Controllers
         [ProducesDefaultResponseType]
         [ProducesDefaultResponseType]
         [HttpPost("qrcode")]
         [HttpPost("qrcode")]
         //[AuthToken(Roles = "teacher")]
         //[AuthToken(Roles = "teacher")]
-        public async Task<IActionResult> Qrcode(Favorite request)
+        public async Task<IActionResult> Qrcode(JsonElement request)
         {
         {
             return Ok();
             return Ok();
         }
         }

+ 17 - 32
TEAMModelOS/Controllers/Both/FavoriteController.cs

@@ -14,13 +14,13 @@ using TEAMModelOS.SDK.DI;
 using TEAMModelOS.SDK.Extension;
 using TEAMModelOS.SDK.Extension;
 using TEAMModelOS.SDK.Models.Cosmos;
 using TEAMModelOS.SDK.Models.Cosmos;
 using TEAMModelOS.SDK.Models.Cosmos.Common;
 using TEAMModelOS.SDK.Models.Cosmos.Common;
-
+using TEAMModelOS.SDK;
 
 
 namespace TEAMModelOS.Controllers
 namespace TEAMModelOS.Controllers
 {
 {
     [ProducesResponseType(StatusCodes.Status200OK)]
     [ProducesResponseType(StatusCodes.Status200OK)]
     [ProducesResponseType(StatusCodes.Status400BadRequest)]
     [ProducesResponseType(StatusCodes.Status400BadRequest)]
-    //
+    // 收藏结构
     [Route("teacher/favorite")]
     [Route("teacher/favorite")]
     [ApiController]
     [ApiController]
     public class FavoriteController: ControllerBase
     public class FavoriteController: ControllerBase
@@ -38,45 +38,32 @@ namespace TEAMModelOS.Controllers
             _option = option?.Value; 
             _option = option?.Value; 
         }
         }
         /// <summary>
         /// <summary>
-        /// 保存或更新 
+        /// 保存或更新 收藏
         /// </summary>
         /// </summary>
         /// <param name="request"></param>
         /// <param name="request"></param>
         /// <returns></returns>
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [ProducesDefaultResponseType]
         [HttpPost("upsert")]
         [HttpPost("upsert")]
         [Authorize(Roles = "IES")]
         [Authorize(Roles = "IES")]
-        [AuthToken(Roles = "teacher")]
-        public async Task<IActionResult> Upsert(Favorite request)
+        [AuthToken(Roles = "teacher,admin")]
+        public async Task<IActionResult> Upsert(JsonElement data  )
         {
         {
             try
             try
             {
             {
+                if (!data.TryGetProperty("favorite", out JsonElement _favorite)) return BadRequest() ;
+                Favorite request = _favorite.ToObject<Favorite>();
+                var val = request.IsValid();
+                if (!val.isVaild  || string.IsNullOrEmpty(request.id)) {
+                    return BadRequest(val);
+                }
                 var client = _azureCosmos.GetCosmosClient();
                 var client = _azureCosmos.GetCosmosClient();
                 request.pk = "Favorite";
                 request.pk = "Favorite";
-                request.code = request.pk + "-" + request.code;
+                request.code = request.code.StartsWith("Favorite-") ? request.code : request.pk + "-" + request.code;
                 request.ttl = -1;
                 request.ttl = -1;
                 long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                 long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                 request.createTime = now;
                 request.createTime = now;
-                if (string.IsNullOrEmpty(request.id))
-                {
-
-                    request.id = Guid.NewGuid().ToString();
-                    request = await client.GetContainer(Constant.TEAMModelOS, "Teacher").CreateItemAsync(request, new PartitionKey($"{request.code}"));
-                }
-                else
-                {
-                    var response = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemStreamAsync(request.id, new PartitionKey($"{request.code}"));
-                    if (response.Status == 200)
-                    {
-                        using var json = await JsonDocument.ParseAsync(response.ContentStream);
-                        var info = json.ToObject<Favorite>();
-                        request = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync(request, info.id, new PartitionKey($"{info.code}"));
-                    }
-                    else
-                    {
-                        request = await client.GetContainer(Constant.TEAMModelOS, "Teacher").CreateItemAsync(request, new PartitionKey($"{request.code}"));
-                    }
-                }
-                return Ok(new { room = request });
+                request = await client.GetContainer(Constant.TEAMModelOS, "Teacher").UpsertItemAsync(request, new PartitionKey($"{request.code}"));
+                return Ok(new { favorite = request });
             }
             }
             catch (Exception e)
             catch (Exception e)
             {
             {
@@ -90,7 +77,7 @@ namespace TEAMModelOS.Controllers
         /// <param name="requert"></param>
         /// <param name="requert"></param>
         /// <returns></returns>
         /// <returns></returns>
         [ProducesDefaultResponseType]
         [ProducesDefaultResponseType]
-        [AuthToken(Roles = "teacher")]
+        [AuthToken(Roles = "teacher,admin")]
         [HttpPost("find")]
         [HttpPost("find")]
         public async Task<IActionResult> Find(JsonElement request)
         public async Task<IActionResult> Find(JsonElement request)
         {
         {
@@ -99,7 +86,6 @@ namespace TEAMModelOS.Controllers
                 List<Favorite> favorites = new List<Favorite>();
                 List<Favorite> favorites = new List<Favorite>();
                 if (!request.TryGetProperty("code", out JsonElement code)) { return BadRequest(); }
                 if (!request.TryGetProperty("code", out JsonElement code)) { return BadRequest(); }
                 var client = _azureCosmos.GetCosmosClient();
                 var client = _azureCosmos.GetCosmosClient();
-              
                 await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<Favorite>(queryText: $"select value(c) from c ",
                 await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<Favorite>(queryText: $"select value(c) from c ",
                 requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Favorite-{code}") }))
                 requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Favorite-{code}") }))
                 {
                 {
@@ -121,17 +107,16 @@ namespace TEAMModelOS.Controllers
         [ProducesDefaultResponseType]
         [ProducesDefaultResponseType]
         [HttpPost("delete")]
         [HttpPost("delete")]
         [Authorize(Roles = "IES")]
         [Authorize(Roles = "IES")]
+        [AuthToken(Roles = "teacher,admin")]
         public async Task<IActionResult> Delete(JsonElement requert)
         public async Task<IActionResult> Delete(JsonElement requert)
         {
         {
             try
             try
             {
             {
                 var client = _azureCosmos.GetCosmosClient();
                 var client = _azureCosmos.GetCosmosClient();
-                //id
                 if (!requert.TryGetProperty("id", out JsonElement id)) return BadRequest();
                 if (!requert.TryGetProperty("id", out JsonElement id)) return BadRequest();
-                //
                 if (!requert.TryGetProperty("code", out JsonElement code)) return BadRequest();
                 if (!requert.TryGetProperty("code", out JsonElement code)) return BadRequest();
                 var room = await client.GetContainer(Constant.TEAMModelOS, "Teacher").DeleteItemAsync<Favorite>(id.GetString(), new PartitionKey($"Favorite-{code}"));
                 var room = await client.GetContainer(Constant.TEAMModelOS, "Teacher").DeleteItemAsync<Favorite>(id.GetString(), new PartitionKey($"Favorite-{code}"));
-                return Ok();
+                return Ok(new { status=200});
             }
             }
             catch (Exception ex)
             catch (Exception ex)
             {
             {