using Hopetry.Models; using Hopetry.Provider; using SqlSugar; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hopetry.Services { public class FileUploadService { //private static readonly SqlSugarScope _db = SqlSugarConfig.GetSqlSugarScope(); //private static readonly SqlSugarClient _db = SqlSugarConfig.GetSqlSugarScope(); private static readonly object _dbLock = new object(); //private readonly SqlSugarClient _db; public FileUploadService() { //_db = SqlSugarConfig.GetSqlSugarScope(); } // 查询所有文件信息 - 带分页优化 public List GetAllFiles(int pageNumber = 1, int pageSize = 50) { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Queryable() .OrderByDescending(f => f.CreateTime) // 按创建时间倒序排列 .ToPageList(pageNumber, pageSize); } // 查询未完成的上传文件 public List GetIncompleteFiles(int pageNumber = 1, int pageSize = 50) { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Queryable() .Where(f => f.IsComplete == false) .OrderByDescending(f => f.CreateTime) .ToPageList(pageNumber, pageSize); } // 查询已完成的上传文件 public List GetCompleteFiles(int pageNumber = 1, int pageSize = 50) { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Queryable() .Where(f => f.IsComplete == true) .OrderByDescending(f => f.CompleteTime) .ToPageList(pageNumber, pageSize); } // 获取文件总数 public int GetTotalFileCount() { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Queryable().Count(); } // 获取未完成文件数 public int GetIncompleteFileCount() { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Queryable().Where(f => f.IsComplete == false).Count(); } // 获取已完成文件数 public int GetCompleteFileCount() { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Queryable().Where(f => f.IsComplete == true).Count(); } // 示例:添加文件信息 public bool AddFile(FUpload file) { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Insertable(file).ExecuteCommand() > 0; } // 示例:更新文件信息 public bool UpdateFile(FUpload file) { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Updateable(file).ExecuteCommand() > 0; } // 示例:更新文件信息(上传完成更新) public async Task UpdateFileCompleteAsync(string id, bool flag) { using var db = SqlSugarConfig.GetSqlSugarScope(); var result = db.Updateable() .SetColumns(r => new FUpload { IsComplete = flag, CompleteTime = DateTime.Now }) .Where(r => r.Id == id) .ExecuteCommand(); //Console.WriteLine($"数据库更新结果: {result}, ID: {id}, Flag: {flag}"); return result > 0; } // 同步版本保持兼容性 public bool UpdateFileComplete(string id, bool flag) { return UpdateFileCompleteAsync(id, flag).GetAwaiter().GetResult(); } // 批量更新文件状态 public async Task UpdateMultipleFilesStatusAsync(List<(string id, bool status)> updates) { await Task.Run(() => { using var db = SqlSugarConfig.GetSqlSugarScope(); foreach (var (id, status) in updates) { var result = db.Updateable() .SetColumns(r => new FUpload { IsComplete = status, CompleteTime = DateTime.Now }) .Where(r => r.Id == id) .ExecuteCommand(); Console.WriteLine($"批量更新结果: {result}, ID: {id}, Status: {status}"); } }); } // 示例:删除文件信息 public bool DeleteFile(string id) { using var db = SqlSugarConfig.GetSqlSugarScope(); return db.Deleteable().Where(f => f.Id == id).ExecuteCommand() > 0; } // 示例:删除文件信息 public bool DeleteFiles(List ids) { using var db = SqlSugarConfig.GetSqlSugarScope(); var aa = db.Deleteable().Where(f => ids.Contains(f.Id)).ExecuteCommand(); return aa > 0; } // 检查数据库是否存在,不存在则创建 public void InitDatabase() { using var db = SqlSugarConfig.GetSqlSugarScope(); db.DbMaintenance.CreateDatabase(); // SQLite不需要创建数据库,但可以用于检查 // 如果表不存在则创建 if (!db.DbMaintenance.IsAnyTable("f_upload", false)) { db.CodeFirst.InitTables(typeof(FUpload)); } } } }