Procházet zdrojové kódy

1、修改删除资源引用时条件为空判断
2、blob删除共享访问策略改为try catch确保最终删除

李思淳 před 5 roky
rodič
revize
0b69933239

+ 16 - 6
TEAMModelOS.SDK/Module/AzureBlob/Implements/AzureBlobDBRepository.cs

@@ -732,14 +732,24 @@ namespace TEAMModelOS.SDK.Module.AzureBlob.Implements
             string ContainerName = a.Item1;
             string BlobName = a.Item2;
             string PolicyName = "DeletePolicy";
-            bool flg = await CreateSharedAccessPolicyAsync(PolicyName);
-            if (flg)
+            try
             {
-                string SAS = GetBlobSasUri(BlobName, null, PolicyName);
-                CloudBlockBlob blob = new CloudBlockBlob(new Uri(SAS));
-                await blob.DeleteAsync();
+                bool flg = await CreateSharedAccessPolicyAsync(PolicyName);
+                if (flg)
+                {
+                    string SAS = GetBlobSasUri(BlobName, null, PolicyName);
+                    CloudBlockBlob blob = new CloudBlockBlob(new Uri(SAS));
+                    await blob.DeleteAsync();
+                }
+                // await DeleteSharedAccessPolicyAsync(PolicyName);
+            }
+            catch (Exception e) {
+
+                throw new BizException(e.StackTrace);
+            }
+            finally {
+                await DeleteSharedAccessPolicyAsync(PolicyName);
             }
-            await DeleteSharedAccessPolicyAsync(PolicyName);
         }
 
         private static (string, string) BlobUrlString(string sasUrl)

+ 25 - 16
TEAMModelOS/Controllers/Syllabus/ResourceController.cs

@@ -3,6 +3,7 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
+using TEAMModelOS.SDK.Context.Exception;
 using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
 using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
 using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
@@ -79,10 +80,12 @@ namespace TEAMModelOS.Controllers.Syllabus
                 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.NOT_FOUND, "资源未找到").build();
+                    throw new BizException("未找到对应数据", ResponseCode.NOT_FOUND);
 
             }
-            else return builder.Error(false,ResponseCode.PARAMS_ERROR,"参数为空").build();
+            else //return builder.Error(false,ResponseCode.PARAMS_ERROR,"参数为空").build();
+                throw new BizException("参数异常", ResponseCode.PARAMS_ERROR);
         }
 
 
@@ -105,10 +108,12 @@ namespace TEAMModelOS.Controllers.Syllabus
                     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.NOT_FOUND, "资源未找到").build();
+                    throw new BizException("未找到对应数据", ResponseCode.NOT_FOUND);
 
             }
-            else return builder.Error(false, ResponseCode.PARAMS_ERROR, "参数为空").build();
+            else //return builder.Error(false, ResponseCode.PARAMS_ERROR, "参数为空").build();
+                throw new BizException("参数异常", ResponseCode.PARAMS_ERROR);
         }
 
 
@@ -141,20 +146,24 @@ namespace TEAMModelOS.Controllers.Syllabus
 
         private async Task<List<T>> Delete<T>(JosnRPCRequest<Dictionary<string, object>> request, JsonRPCResponseBuilder builder)where T:ID
         {
-            List<T> schoolBlocks = await _cosmos.FindByDict<T>(request.@params);
-            Type t = typeof(T);
-            if (schoolBlocks.IsNotEmpty())
+            if (request.@params.IsNotEmpty())
             {
-                schoolBlocks.ForEach(x => {
-                    _cosmos.DeleteAsync<T>(x); 
-                });
-                builder.Data("删除成功");
-            }
-            else
-            {
-                builder.Error(false, ResponseCode.NOT_FOUND, "未找到对应删除数据");
+                List<T> schoolBlocks = await _cosmos.FindByDict<T>(request.@params);
+                Type t = typeof(T);
+                if (schoolBlocks.IsNotEmpty())
+                {
+                    await _cosmos.DeleteAll<T>(schoolBlocks);
+                    builder.Data("删除成功");
+                }
+                else
+                {
+                    throw new BizException("未找到对应删除数据", ResponseCode.NOT_FOUND);
+                    //builder.Error(false, ResponseCode.NOT_FOUND, "未找到对应删除数据");
+                }
+                return schoolBlocks;
             }
-            return schoolBlocks;
+            else throw new BizException("参数异常", ResponseCode.PARAMS_ERROR);
+
         }