using AutoMapper; using Kean.Application.Command.Interfaces; using Kean.Application.Command.ViewModels; using Kean.Domain; using Kean.Domain.Basic.Commands; using Kean.Domain.Material.Commands; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Kean.Application.Command.Implements { /// /// 基础信息命令服务实现 /// public class BasicService : IBasicService { private readonly ICommandBus _bus; // 命令总线 private readonly IMapper _mapper; // 模型映射 private readonly INotification _notifications; // 总线通知 /// /// 依赖注入 /// public BasicService( ICommandBus bus, IMapper mapper, INotification notifications) { _bus = bus; _mapper = mapper; _notifications = notifications; } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.CreateRole(Role role) 方法 */ public async Task<(int Id, Failure Failure)> CreateRole(Role role) { var command = _mapper.Map(role); await _bus.Execute(command); return (command.Id, _notifications.FirstOrDefault()); } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.ModifyRole(Role role) 方法 */ public async Task<(bool Success, Failure Failure)> ModifyRole(Role role) { await _bus.Execute(_mapper.Map(role)); var failure = _notifications.FirstOrDefault(); return (failure == null, failure); } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.DeleteRole(IEnumerable id) 方法 */ public async Task> DeleteRole(IEnumerable id) { var command = new DeleteRoleCommand { Id = id }; await _bus.Execute(command); return command.Id; } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.SetRoleMenuPermission(int id, IEnumerable permission) 方法 */ public async Task<(bool Success, Failure Failure)> SetRoleMenuPermission(int id, IEnumerable permission) { await _bus.Execute(new SetMenuPermissionCommand { Id = id, Permission = permission }); var failure = _notifications.FirstOrDefault(); return (failure == null, failure); } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.CreateUser(User user) 方法 */ public async Task<(int Id, Failure Failure)> CreateUser(User user) { var command = _mapper.Map(user); await _bus.Execute(command); return (command.Id, _notifications.FirstOrDefault()); } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.ModifyUser(User user) 方法 */ public async Task<(bool Success, Failure Failure)> ModifyUser(User user) { await _bus.Execute(_mapper.Map(user)); var failure = _notifications.FirstOrDefault(); return (failure == null, failure); } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.DeleteUser(IEnumerable id) 方法 */ public async Task> DeleteUser(IEnumerable id) { var command = new DeleteUserCommand { Id = id }; await _bus.Execute(command); return command.Id; } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.ResetPassword(int id) 方法 */ public async Task<(bool Success, Failure Failure)> ResetPassword(int id) { await _bus.Execute(new ResetPasswordCommand { Id = id }); var failure = _notifications.FirstOrDefault(); return (failure == null, failure); } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.CreateItem 方法 */ public async Task<(int Id, Failure Failure)> CreateItem(Item item) { var command = _mapper.Map(item); await _bus.Execute(command); return (command.ItemListId, _notifications.FirstOrDefault()); } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.ModifyItem 方法 */ public async Task<(bool Success, Failure Failure)> ModifyItem(Item item) { await _bus.Execute(_mapper.Map(item)); var failure = _notifications.FirstOrDefault(); return (failure == null, failure); } /* * 实现 Kean.Application.Command.Interfaces.IBasicService.DeleteItem 方法 */ public async Task> DeleteItem(IEnumerable code) { var command = new DeleteItemCommand { Code = code }; await _bus.Execute(command); return command.Id; } } }