Browse Source

资源文件增删改查接口

李思淳 5 years ago
parent
commit
4ca2fa45f5

+ 81 - 0
TEAMModelOS.Service/Models/Syllabus/SyllabusResource.cs

@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+using TEAMModelOS.SDK.Context.Attributes.Azure;
+
+namespace TEAMModelOS.Service.Models.Syllabus
+{
+    [CosmosDB(RU = 400, Name = "SyllabusResource")]
+    public class SyllabusResource
+   {
+
+        public string id { get; set; }
+
+        /// <summary>
+        /// 上传者醍摩豆id
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string teamModelId { get; set; }
+
+        /// <summary>
+        /// 文件名字
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string fileName { get; set; }
+
+        /// <summary>
+        /// 文件后缀
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string extension { get; set; }
+
+        /// <summary>
+        /// 文件类型
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string contentType { get; set; }
+
+        /// <summary>
+        /// 文件类型
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        [PartitionKey]
+        public string type { get; set; }
+
+        /// <summary>
+        /// 文件大小
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public long size { get; set; }
+
+        /// <summary>
+        /// 上传时间
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public long createTime { get; set; }
+
+        /// <summary>
+        /// 关联课纲数量
+        /// </summary>
+        public int relationNum { get; set; }
+
+        /// <summary>
+        /// 链接
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string blobUrl { get; set; }
+
+        /// <summary>
+        /// 可见性
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string range { get; set; }
+
+        /// <summary>
+        /// 判断是否唯一
+        /// </summary>
+        [Required(ErrorMessage = "{0} 必须填写")]
+        public string sha1Code { get; set; }
+    }
+}

+ 116 - 0
TEAMModelOS/Controllers/Syllabus/ResourceController.cs

@@ -0,0 +1,116 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
+using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
+using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
+using TEAMModelOS.SDK.Module.AzureCosmosDB.Interfaces;
+using TEAMModelOS.Service.Models.Syllabus;
+
+namespace TEAMModelOS.Controllers.Syllabus
+{
+    [Route("api/[controller]")]
+    [ApiController]
+    public class ResourceController : ControllerBase
+    {
+
+        private IAzureCosmosDBRepository _cosmos;
+
+        public ResourceController(IAzureCosmosDBRepository cosmos)
+        {
+            _cosmos = cosmos;
+        }
+
+        /// <summary>
+        /// 删除 代理
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="request"></param>
+        /// <param name="builder"></param>
+        /// <returns></returns>
+        delegate Task DeleteDelegate<T>(JosnRPCRequest<Dictionary<string, object>> request, JsonRPCResponseBuilder builder);
+
+        /// <summary>
+        /// 保存或更新SyllabusResource
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("SaveOrUpdateSyllabusResource")]
+        public async Task<BaseJosnRPCResponse> SaveOrUpdateSyllabusResource(JosnRPCRequest<List<SyllabusResource>> request)
+        {
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            if (request.@params.IsNotEmpty())// != null )
+            {
+                List<SyllabusResource> resource = request.@params;
+                foreach (SyllabusResource item in resource)
+                {
+                    if (item.id == null)
+                    {
+                        item.id = item.sha1Code + "-" + item.contentType + "-" + item.size;
+                        
+                    }
+                }
+                List<SyllabusResource> ts = await _cosmos.SaveAll(resource);
+                if (ts.Count > 0) builder.Data("保存或新增成功");
+                else builder.Error(false, ResponseCode.FAILED, "失败");
+            }
+            return builder.build();
+        }
+
+
+        /// <summary>
+        /// 获取SyllabusResource
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("FindSyllabusResourceByDict")]
+        public async Task<BaseJosnRPCResponse> FindSyllabusResourceByDict(JosnRPCRequest<Dictionary<string, object>> request)
+        {
+            // request.@params.TryAdd("PartitionKey", request.lang);
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            if (request.@params != null)
+            {
+                List<SyllabusResource> data = new List<SyllabusResource>();
+                data = await _cosmos.FindByParams<SyllabusResource>(request.@params);
+                if (data.IsNotEmpty()) {
+                return builder.Data(data.OrderBy(m => m.createTime)).Extend(new Dictionary<string, object> { { "count", data.Count } }).build();
+
+                }else return builder.Error(false, ResponseCode.NOT_FOUND, "资源未找到").build();
+
+            }
+            else return builder.Error(false,ResponseCode.PARAMS_ERROR,"参数为空").build();
+        }
+
+
+        /// <summary>
+        /// 删除 SyllabusResource
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("DeleteSyllabusResource")]
+        public async Task<BaseJosnRPCResponse> DeleteSyllabusResource(JosnRPCRequest<Dictionary<string, object>> request)
+        {
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            DeleteDelegate<SyllabusResource> deleteDelegate1 = Delete<SyllabusResource>;
+            await deleteDelegate1(request, builder);
+            return builder.build();
+        }
+
+        private async Task Delete<T>(JosnRPCRequest<Dictionary<string, object>> request, JsonRPCResponseBuilder builder)
+        {
+            List<T> schoolBlocks = await _cosmos.FindByParams<T>(request.@params);
+            if (schoolBlocks.IsNotEmpty())
+            {
+                schoolBlocks.ForEach(x => { _cosmos.DeleteAsync<T>(x); });
+                builder.Data("删除成功");
+            }
+            else
+            {
+                builder.Error(false, ResponseCode.NOT_FOUND, "未找到对应知识块");
+            }
+        }
+    }
+}