using AutoMapper; using Kean.Domain.Basic.Models; using Kean.Infrastructure.Database; using Kean.Infrastructure.Database.Repository.Default; using Kean.Infrastructure.Database.Repository.Default.Entities; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Kean.Infrastructure.Repository { /// /// 角色仓库 /// public class RoleRepository : Domain.Basic.Repositories.IRoleRepository { private readonly IMapper _mapper; // 模型映射 private readonly IDefaultDb _database; // 默认数据库 /// /// 构造函数 /// public RoleRepository( IMapper mapper, IDefaultDb database) { _mapper = mapper; _database = database; } /* * 实现 Kean.Domain.Basic.Repositories.IRoleRepository.IsExist(int id) 方法 */ public async Task IsExist(int id) { return (await _database.From() .Where(r => r.ROLE_ID == id) .Single(r => new { Count = Function.Count(r.ROLE_ID) })).Count > 0; } /* * 实现 Kean.Domain.Basic.Repositories.IRoleRepository.IsExist(string name, int? igrone) 方法 */ public async Task IsExist(string name, int? igrone) { var schema = _database.From().Where(r => r.ROLE_NAME == name); if (igrone.HasValue) { schema = schema.Where(r => r.ROLE_ID != igrone.Value); } return (await schema.Single(r => new { Count = Function.Count(r.ROLE_ID) })).Count > 0; } /* * 实现 Kean.Domain.Basic.Repositories.IRoleRepository.Create(Role role) 方法 */ public async Task Create(Role role) { var entity = _mapper.Map(role); entity.UPDATE_TIME = entity.CREATE_TIME = DateTime.Now; var id = await _database.From().Add(entity); return Convert.ToInt32(id); } /* * 实现 Kean.Domain.Basic.Repositories.IRoleRepository.Modify(Role role) 方法 */ public Task Modify(Role role) { var entity = _mapper.Map(role); entity.UPDATE_TIME = DateTime.Now; return _database.From().Update(entity, nameof(T_SYS_ROLE.CREATE_TIME)); } /* * 实现 Kean.Domain.Basic.Repositories.IRoleRepository.Delete(int id) 方法 */ public async Task Delete(int id) { await _database.From() .Where(r => r.ROLE_ID == id) .Delete(); } /* * 实现 Kean.Domain.Basic.Repositories.IRoleRepository.SetMenuPermission(int id, IEnumerable permission) 方法 */ public async Task SetMenuPermission(int id, IEnumerable permission) { await _database.From() .Where(r => r.ROLE_ID == id) .Delete(); var timestamp = DateTime.Now; foreach (var item in permission) { await _database.From().Add(new() { ROLE_ID = id, MENU_ID = item, CREATE_TIME = timestamp, UPDATE_TIME = timestamp }); } } /* * 实现 Kean.Domain.Basic.Repositories.IRoleRepository.ClearMenuPermission(int id) 方法 */ public async Task ClearMenuPermission(int id) { await _database.From() .Where(r => r.ROLE_ID == id) .Delete(); } /* * 实现 Kean.Domain.Basic.Repositories.IRoleRepository.ClearUserRole(int id) 方法 */ public async Task ClearUserRole(int id) { await _database.From() .Where(r => r.ROLE_ID == id) .Delete(); } } }