zhouj1203@hotmail.com 6 anni fa
parent
commit
58b28976cd

+ 62 - 5
TEAMModelOS/Controllers/Evaluation/ImportExerciseController.cs

@@ -1,13 +1,20 @@
 using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
 using TEAMModelOS.Controllers.Core;
-using TEAMModelOS.Model.Evaluation.Dtos.Own;
+using TEAMModelOS.Model.Evaluation.Dtos;
 using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
 using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
+using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
+using TEAMModelOS.SDK.Helper.Security.ShaHash;
+using TEAMModelOS.SDK.Module.AzureBlob.Container;
+using TEAMModelOS.SDK.Module.AzureBlob.Interfaces;
+using TEAMModelOS.SDK.Module.AzureTable.Interfaces;
+using TEAMModelOS.Service.Core.Interfaces;
 using TEAMModelOS.Service.Evaluation.Interfaces;
 
 namespace TEAMModelOS.Controllers.Evaluation
@@ -19,10 +26,20 @@ namespace TEAMModelOS.Controllers.Evaluation
     [Authorize]
     public class ImportExerciseController : BaseController
     {
-        private readonly  IImportExerciseService importExerciseService;
-
-        public ImportExerciseController(IImportExerciseService _importExerciseService) {
+        private readonly IImportExerciseService importExerciseService;
+        private readonly IAzureBlobModelService _azureBlobModelService;
+        private readonly IAzureBlobDBRepository _azureBlobDBRepository;
+        private readonly IAzureTableDBRepository azureTableDBRepository;
+        private readonly IHtmlAnalyzeService htmlAnalyzeService;
+        public ImportExerciseController(IImportExerciseService _importExerciseService, IHtmlAnalyzeService _htmlAnalyzeService,
+            IAzureBlobModelService azureBlobModelService,
+            IAzureBlobDBRepository azureBlobDBRepository,
+            IAzureTableDBRepository _azureTableDBRepository) {
             importExerciseService = _importExerciseService;
+            _azureBlobModelService = azureBlobModelService;
+            _azureBlobDBRepository = azureBlobDBRepository;
+            azureTableDBRepository = _azureTableDBRepository;
+            htmlAnalyzeService = _htmlAnalyzeService;
         }
 
         /// <summary>
@@ -39,6 +56,46 @@ namespace TEAMModelOS.Controllers.Evaluation
             List<ExerciseDto> exercises=  await importExerciseService.AnalyzeWordAsync(request.@params ,request.lang);
             return builder.Data(exercises).build();
         }
-        
+
+        /// <summary>
+        /// docUrl
+        /// folder
+        /// shaCode
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("uploadWord")]
+        [RequestSizeLimit(102_400_000_00)] //最大10000m左右
+        public async Task<BaseJosnRPCResponse> UploadWord([FromForm] IFormFile file)
+        {
+            JsonRPCResponseBuilder responseBuilder = new JsonRPCResponseBuilder();
+            if (!FileType.GetExtention(file.FileName).ToLower().Equals("docx"))
+            {
+                return responseBuilder.Error("type is not docx").build();
+            }
+            Dictionary<string,object> model = await importExerciseService.UploadWord(file);
+           
+            return responseBuilder.Data(model).build();
+        }
+
+        /// <summary>
+        /// htmlString 
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost("AnalyzeHtml")]
+        public BaseJosnRPCResponse AnalyzeHtml(JosnRPCRequest<Dictionary<string,object>> request)
+        {
+            JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
+            bool flag= request.@params.TryGetValue("htmlString", out object htmlString);
+            if (flag && htmlString!=null && !string.IsNullOrEmpty(htmlString.ToString()))
+            {
+                List<ExerciseDto> exercises =  htmlAnalyzeService.AnalyzeWordAsync(htmlString.ToString(), request.lang);
+                return builder.Data(exercises).build();
+            }
+            else {
+                return builder.Data(null).build();
+            }
+        }
     }
 }