xf 2 жил өмнө
parent
commit
77bf9db06b

+ 21 - 0
src/Hotline.Repository.SqlSugar/BaseRepositoryWorkflow.cs

@@ -31,4 +31,25 @@ public abstract class BaseRepositoryWorkflow<TEntity> : BaseRepository<TEntity>,
             query = query.WorkflowDataFiltering(_dataPermissionFilterBuilder);
         return query;
     }
+
+    public async Task<string> AddAsync(TEntity entity, CancellationToken cancellationToken = default)
+    {
+        entity.InitDatePermission(_dataPermissionFilterBuilder.DataPermissionManager)
+            .AssignToCreator(_dataPermissionFilterBuilder.DataPermissionManager);
+        var excEntity = await Db.Insertable(entity).ExecuteReturnEntityAsync();
+        return excEntity.Id;
+    }
+
+    /// <summary>
+    /// 批量插入(应用场景:小数据量,超出1万条建议另行实现)
+    /// </summary>
+    /// <param name="entities"></param>
+    /// <param name="cancellationToken"></param>
+    /// <returns></returns>
+    public async Task AddRangeAsync(List<TEntity> entities, CancellationToken cancellationToken = default)
+    {
+        entities.ForEach(d => d.InitDatePermission(_dataPermissionFilterBuilder.DataPermissionManager)
+                .AssignToCreator(_dataPermissionFilterBuilder.DataPermissionManager));
+        await Db.Insertable(entities).ExecuteCommandAsync();
+    }
 }

+ 8 - 0
src/Hotline.Repository.SqlSugar/Extensions/DataPermissionExtensions.cs

@@ -25,5 +25,13 @@ namespace Hotline.Repository.SqlSugar.Extensions
             entity.CreateDataPermission(orgId, departmentCode, creatorId, areaId);
             return entity;
         }
+
+        public static TEntity AssignToCreator<TEntity>(this TEntity entity, IDataPermissionManager dataPermissionManager)
+            where TEntity : class, IEntity<string>, IDataPermission, IWorkflow, new()
+        {
+            var (orgId, departmentCode, creatorId, areaId) = dataPermissionManager.GetDataPermissionOptions();
+            entity.Assign(EFlowAssignType.User, creatorId);
+            return entity;
+        }
     }
 }