using Model; using Model.Dto.Inspection; using Model.Entity.Inspection; using Model.Mapper; using ORM; using Service.Interface; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Service.Implement { /// /// 数据转发 服务实现(配置数据转发规则,支持通过消息通知的方式定时转发数据) /// public class DataForwardService : IDataForwardService { /// /// 获取全部转发规则列表 /// public async Task>> GetListAsync() { try { var list = await SqlSugarContext.DbContext.Queryable() .Where(x => x.IsDel == 0) .OrderBy(x => x.CreateTime, SqlSugar.OrderByType.Desc) .ToListAsync(); // Entity → DTO(Id 转 string) return Result>.Success(list.ToDtoList()); } catch (Exception ex) { return Result>.Error("查询转发规则失败", ex); } } /// /// 新增转发规则(DTO → Entity,string Id 转 long) /// public async Task AddAsync(DataForwardRuleDto dto) { if (dto == null || string.IsNullOrWhiteSpace(dto.ForwardName)) return Result.Error("转发规则名称不能为空"); if (string.IsNullOrWhiteSpace(dto.TargetAddress)) return Result.Error("目标地址不能为空"); if (dto.ForwardInterval <= 0) return Result.Error("转发间隔必须大于 0 秒"); try { var entity = dto.ToEntity(); entity.CreateTime = DateTime.Now; await SqlSugarContext.DbContext.Insertable(entity).ExecuteCommandAsync(); return Result.Success(); } catch (Exception ex) { return Result.Error("新增转发规则失败", ex); } } /// /// 修改转发规则(最近转发时间等系统字段不允许被前端覆盖) /// public async Task UpdateAsync(DataForwardRuleDto dto) { var entity = dto?.ToEntity(); if (entity == null || entity.Id <= 0) return Result.Error("转发规则Id无效"); try { await SqlSugarContext.DbContext.Updateable(entity) .IgnoreColumns(x => new { x.CreateTime, x.IsDel, x.LastForwardTime }) .ExecuteCommandAsync(); return Result.Success(); } catch (Exception ex) { return Result.Error("修改转发规则失败", ex); } } /// /// 删除转发规则(软删除:IsDel 置 1) /// public async Task DeleteAsync(long id) { try { await SqlSugarContext.DbContext.Updateable() .SetColumns(x => x.IsDel == 1) .Where(x => x.Id == id) .ExecuteCommandAsync(); return Result.Success(); } catch (Exception ex) { return Result.Error("删除转发规则失败", ex); } } /// /// 启用/停用转发规则 /// public async Task SetEnabledAsync(long id, bool enabled) { try { await SqlSugarContext.DbContext.Updateable() .SetColumns(x => x.Enabled == enabled) .Where(x => x.Id == id) .ExecuteCommandAsync(); return Result.Success(); } catch (Exception ex) { return Result.Error("更新启用状态失败", ex); } } } }