예제 #1
0
        /// <summary>
        /// 根据实体的操作类型,修改IAudit,ISoftDelete,ITenant等字段
        /// </summary>
        /// <typeparam name="TKey"></typeparam>
        /// <param name="entity"></param>
        /// <param name="operType"></param>
        /// <param name="userId"></param>
        /// <param name="tenantId"></param>
        public static void UpdateEntityCommonField <TKey>(object entity, EEntityOperType operType, TKey userId, TKey tenantId = default)
        {
            if (entity is IAudit <TKey> auditEntity)
            {
                if (operType == EEntityOperType.Add)
                {
                    auditEntity.Creater    = userId;
                    auditEntity.CreateTime = DateTime.Now;
                }
                if (entity is IIdField <TKey> idEntity && idEntity.Id == null)
                {
                    idEntity.Id = IdGenerator.Generate <TKey>();
                }
                if (entity is ITenant <TKey> tenantEntity)
                {
                    tenantEntity.TenantId = tenantId;
                }
                auditEntity.Updater    = userId;
                auditEntity.UpdateTime = DateTime.Now;
            }

            if (entity is ISoftDelete entitySoftDeleteEntity && operType == EEntityOperType.Delete)
            {
                entitySoftDeleteEntity.IsDeleted = true;
            }
        }
예제 #2
0
 /// <summary>
 /// 租户非正常操作检查
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <typeparam name="TKey"></typeparam>
 /// <param name="operType">操作类型</param>
 /// <param name="entity">操作实体</param>
 /// <param name="userId">操作人id</param>
 /// <param name="tenantId">操作人tenantId</param>
 public static void CheckEntityTenantOper <TEntity, TKey>(EEntityOperType operType, TEntity entity, TKey userId, TKey tenantId)
     where TEntity : class, IIdField <TKey>
 {
     // 跨租户实体操作限制
     if (tenantId != null && TenantHelper.HasTenant(entity, out TKey tenantIdTmp) && !tenantId.Equals(tenantIdTmp))
     {
         throw new InvalidOperationException($"不允许跨租户操作数据,操作类型:{operType},表:{typeof(TEntity).Name},实体id:{entity.Id},实体租户:{tenantIdTmp},操作人:{userId},操作者租户:{tenantId}");
     }
 }