using System.Collections.Generic; using System.Threading.Tasks; using MDL.Models; using DAL.Interfaces; using DB.Database; using SqlSugar; namespace DAL.Repositories { /// /// 客户API信息的数据访问实现类 /// public class CustomerApiRepository : ICustomerApiRepository { private readonly ISqlSugarProvider _provider; /// /// 构造函数 /// /// SqlSugar数据库提供程序 public CustomerApiRepository(ISqlSugarProvider provider) { _provider = provider; } /// /// 创建客户API记录 /// /// 客户API实体 /// 创建的记录ID public async Task CreateAsync(CustomerApiEntity entity) { var db = _provider.GetClient(); // 确保表存在 if (!db.DbMaintenance.IsAnyTable("customer_apis")) { db.CodeFirst.InitTables(typeof(CustomerApiEntity)); } // 设置时间戳 entity.CreatedAt = DateTime.UtcNow; entity.UpdatedAt = DateTime.UtcNow; // 插入数据并返回自增ID return await db.Insertable(entity).ExecuteReturnIdentityAsync(); } /// /// 根据ID获取客户API记录 /// /// 记录ID /// 客户API实体 public async Task GetByIdAsync(int id) { var db = _provider.GetClient(); return await db.Queryable() .Where(x => x.Id == id) .FirstAsync(); } /// /// 根据客户ID获取客户API记录 /// /// 客户ID /// 客户API实体列表 public async Task> GetByCustomerIdAsync(int customerId) { var db = _provider.GetClient(); return await db.Queryable() .Where(x => x.CustomerId == customerId) .ToListAsync(); } /// /// 根据客户代码获取客户API记录 /// /// 客户代码 /// 客户API实体列表 public async Task> GetByCustomerCodeAsync(string customerCode) { var db = _provider.GetClient(); return await db.Queryable() .Where(x => x.CustomerCode == customerCode) .ToListAsync(); } /// /// 根据API密钥获取客户API记录 /// /// API密钥 /// 客户API实体 public async Task GetByApiKeyAsync(string apiKey) { var db = _provider.GetClient(); return await db.Queryable() .Where(x => x.ApiKey == apiKey) .FirstAsync(); } /// /// 验证客户API凭证并返回客户API信息 /// /// 客户代码 /// API密钥 /// 客户API实体,如果验证失败则返回null public async Task ValidateAndGetApiCredentialsAsync(string customerCode, string apiKey) { var db = _provider.GetClient(); // 查询有效(启用且未过期)的API密钥 var now = DateTime.UtcNow; return await db.Queryable() .Where(x => x.CustomerCode == customerCode && x.ApiKey == apiKey) .Where(x => x.Status == "Y") .Where(x => x.ExpireDate == null || x.ExpireDate > now) .FirstAsync(); } /// /// 验证客户API凭证 /// /// 客户代码 /// API密钥 /// 是否验证通过 public async Task ValidateApiCredentialsAsync(string customerCode, string apiKey) { var result = await ValidateAndGetApiCredentialsAsync(customerCode, apiKey); return result != null; } /// /// 更新客户API记录 /// /// 客户API实体 /// 更新是否成功 public async Task UpdateAsync(CustomerApiEntity entity) { var db = _provider.GetClient(); // 更新时间戳 entity.UpdatedAt = DateTime.UtcNow; // 更新数据并返回影响行数 var rows = await db.Updateable(entity).ExecuteCommandAsync(); return rows > 0; } /// /// 删除客户API记录 /// /// 记录ID /// 删除是否成功 public async Task DeleteAsync(int id) { var db = _provider.GetClient(); var rows = await db.Deleteable() .Where(x => x.Id == id) .ExecuteCommandAsync(); return rows > 0; } /// /// 获取所有客户API记录 /// /// 客户API实体列表 public async Task> GetAllAsync() { var db = _provider.GetClient(); return await db.Queryable() .OrderByDescending(x => x.CreatedAt) .ToListAsync(); } } }