using System.Collections.Generic; using System.Threading.Tasks; using MDL.Models; using DAL.Interfaces; using DB.Database; using SqlSugar; namespace DAL.Repositories { /// /// 订单日志仓储实现类 /// public class OrderLogRepository : IOrderLogRepository { private readonly ISqlSugarProvider _provider; /// /// 构造函数 /// /// SqlSugar数据库提供程序 public OrderLogRepository(ISqlSugarProvider provider) { _provider = provider; } /// /// 获取数据库客户端 /// private ISqlSugarClient Db => _provider.GetClient(); /// /// 插入订单日志 /// /// 订单日志实体 /// 插入是否成功 public async Task InsertOrderLogAsync(OrderLogEntity log) { // 确保表存在 if (!Db.DbMaintenance.IsAnyTable("order_logs")) { Db.CodeFirst.InitTables(typeof(OrderLogEntity)); } var result = await Db.Insertable(log).ExecuteCommandAsync(); return result > 0; } /// /// 根据中性面单单号获取订单日志列表 /// /// 中性面单单号 /// 订单日志实体列表 public async Task> GetOrderLogsByWaybillNumberAsync(string neutralWaybillNumber) { return await Db.Queryable() .Where(x => x.NeutralWaybillNumber == neutralWaybillNumber) .OrderBy(x => x.CreatedAt) .ToListAsync(); } /// /// 根据尾程跟踪单号获取订单日志列表 /// /// 尾程跟踪单号 /// 订单日志实体列表 public async Task> GetOrderLogsByTrackingNumberAsync(string finalMileTrackingNumber) { return await Db.Queryable() .Where(x => x.FinalMileTrackingNumber == finalMileTrackingNumber) .OrderBy(x => x.CreatedAt) .ToListAsync(); } /// /// 获取所有订单日志列表(分页) /// /// 页码 /// 每页大小 /// 订单日志实体列表 public async Task> GetAllOrderLogsAsync(int pageIndex, int pageSize) { return await Db.Queryable() .OrderBy(x => x.CreatedAt, OrderByType.Desc) .ToPageListAsync(pageIndex, pageSize); } /// /// 根据操作类型和操作结果获取订单日志列表 /// /// 操作类型 /// 操作结果 /// 页码 /// 每页大小 /// 订单日志实体列表 public async Task> GetOrderLogsByOperationAsync(string operationType, string operationResult, int pageIndex, int pageSize) { var query = Db.Queryable(); if (!string.IsNullOrEmpty(operationType)) { query = query.Where(x => x.OperationType == operationType); } if (!string.IsNullOrEmpty(operationResult)) { query = query.Where(x => x.OperationResult == operationResult); } return await query .OrderBy(x => x.CreatedAt, OrderByType.Desc) .ToPageListAsync(pageIndex, pageSize); } } }