using Fantasy.Exporter;
using Fantasy.Helper;
// ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
namespace Fantasy.Tools.ConfigTable;
///
/// 自定义导出接口
///
public interface ICustomExport
{
///
/// 执行导出操作
///
void Run();
///
/// 内部操作用于初始化、不明白原理不要修改这里和调用这个方法
///
///
///
void Init(ExcelExporter excelExporter, ExcelWorksheets worksheets);
}
///
/// 抽象自定义导出基类
///
public abstract class ACustomExport : ICustomExport
{
protected ExcelExporter ExcelExporter;
protected ExcelWorksheets Worksheets;
///
/// 自定义导出类型枚举:客户端、服务器
///
protected enum CustomExportType
{
///
/// 客户端
///
Client,
///
/// 服务器
///
Server
}
///
/// 内部操作用于初始化、不明白原理不要修改这里
///
///
///
public void Init(ExcelExporter excelExporter, ExcelWorksheets worksheets)
{
ExcelExporter = excelExporter;
Worksheets = worksheets;
}
///
/// 执行导出操作的抽象方法
///
public abstract void Run();
///
/// 写入文件内容到指定位置
///
/// 文件名
/// 文件内容
/// 相对的导出的目录
/// 自定义导出类型
protected void Write(string fileName, string fileContent, string filePath, CustomExportType customExportType)
{
if (filePath == null)
{
Log.Error($" {nameof(filePath)} is null");
return;
}
filePath = FileHelper.GetFullPath(filePath);
if (!Directory.Exists(filePath))
{
FileHelper.CreateDirectory(filePath);
}
var combine = Path.Combine(filePath, fileName);
File.WriteAllText(combine, fileContent);
switch (customExportType)
{
case CustomExportType.Client:
{
Log.Info($"导出客户端自定义文件:{filePath}/{fileName}");
return;
}
case CustomExportType.Server:
{
Log.Info($"导出服务器自定义文件:{filePath}/{fileName}");
return;
}
}
}
///
/// 写入文件内容到指定位置
///
/// 文件名
/// 文件内容
/// 自定义导出类型
protected void Write(string fileName, string fileContent, CustomExportType customExportType)
{
switch (customExportType)
{
case CustomExportType.Client:
{
if (string.IsNullOrEmpty(ExcelExporter.ClientCustomExportDirectory))
{
return;
}
if (!Directory.Exists(ExcelExporter.ClientCustomExportDirectory))
{
Directory.CreateDirectory(ExcelExporter.ClientCustomExportDirectory);
}
File.WriteAllText($"{ExcelExporter.ClientCustomExportDirectory}/{fileName}", fileContent);
Log.Info($"导出客户端自定义文件:{ExcelExporter.ClientCustomExportDirectory}/{fileName}");
return;
}
case CustomExportType.Server:
{
if (string.IsNullOrEmpty(ExcelExporter.ServerCustomExportDirectory))
{
return;
}
if (!Directory.Exists(ExcelExporter.ServerCustomExportDirectory))
{
Directory.CreateDirectory(ExcelExporter.ServerCustomExportDirectory);
}
File.WriteAllText($"{ExcelExporter.ServerCustomExportDirectory}/{fileName}", fileContent);
Log.Info($"导出服务器自定义文件:{ExcelExporter.ServerCustomExportDirectory}/{fileName}");
return;
}
}
}
}