😎增加业务实体与文件关联时统一处理
This commit is contained in:
parent
61e79b6a51
commit
1af9fa56bc
@ -344,4 +344,44 @@ public class SysFileService : IDynamicApiController, ITransient
|
|||||||
}
|
}
|
||||||
return sysFile;
|
return sysFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region 统一实体与文件关联时,业务应用实体只需要定义一个SysFile集合导航属性,业务增加和更新、删除分别调用即可
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新文件的业务数据Id
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataId"></param>
|
||||||
|
/// <param name="sysFiles"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[NonAction]
|
||||||
|
public async Task UpdateFileByDataId(long dataId, List<SysFile> sysFiles)
|
||||||
|
{
|
||||||
|
var newFileIds = sysFiles.Select(u => u.Id).ToList();
|
||||||
|
|
||||||
|
// 求文件Id差集并删除(无效文件)
|
||||||
|
var tmpFiles = await _sysFileRep.GetListAsync(u => u.DataId == dataId);
|
||||||
|
var tmpFileIds = tmpFiles.Select(u => u.Id).ToList();
|
||||||
|
var deleteFileIds = tmpFileIds.Except(newFileIds);
|
||||||
|
foreach (var fileId in deleteFileIds)
|
||||||
|
await DeleteFile(new DeleteFileInput() { Id = fileId });
|
||||||
|
|
||||||
|
await _sysFileRep.UpdateAsync(u => new SysFile() { DataId = dataId }, u => newFileIds.Contains(u.Id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除业务数据对应的文件
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dataId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[NonAction]
|
||||||
|
public async Task DeteleFileByDataId(long dataId)
|
||||||
|
{
|
||||||
|
// 删除冗余无效的物理文件
|
||||||
|
var tmpFiles = await _sysFileRep.GetListAsync(u => u.DataId == dataId);
|
||||||
|
foreach (var file in tmpFiles)
|
||||||
|
await _customFileProvider.DeleteFileAsync(file);
|
||||||
|
await _sysFileRep.AsDeleteable().Where(u => u.DataId == dataId).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion 统一实体与文件关联时,业务应用实体只需要定义一个SysFile集合导航属性,业务增加和更新、删除分别调用即可
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user