山东雷驰
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

127 lines
4.1 KiB

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
{
/// <summary>
/// 角色仓库
/// </summary>
public class RoleRepository :
Domain.Basic.Repositories.IRoleRepository
{
private readonly IMapper _mapper; // 模型映射
private readonly IDefaultDb _database; // 默认数据库
/// <summary>
/// 构造函数
/// </summary>
public RoleRepository(
IMapper mapper,
IDefaultDb database)
{
_mapper = mapper;
_database = database;
}
/*
* 实现 Kean.Domain.Basic.Repositories.IRoleRepository.IsExist(int id) 方法
*/
public async Task<bool> IsExist(int id)
{
return (await _database.From<T_SYS_ROLE>()
.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<bool> IsExist(string name, int? igrone)
{
var schema = _database.From<T_SYS_ROLE>().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<int> Create(Role role)
{
var entity = _mapper.Map<T_SYS_ROLE>(role);
entity.UPDATE_TIME = entity.CREATE_TIME = DateTime.Now;
var id = await _database.From<T_SYS_ROLE>().Add(entity);
return Convert.ToInt32(id);
}
/*
* 实现 Kean.Domain.Basic.Repositories.IRoleRepository.Modify(Role role) 方法
*/
public Task Modify(Role role)
{
var entity = _mapper.Map<T_SYS_ROLE>(role);
entity.UPDATE_TIME = DateTime.Now;
return _database.From<T_SYS_ROLE>().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<T_SYS_ROLE>()
.Where(r => r.ROLE_ID == id)
.Delete();
}
/*
* 实现 Kean.Domain.Basic.Repositories.IRoleRepository.SetMenuPermission(int id, IEnumerable<int> permission) 方法
*/
public async Task SetMenuPermission(int id, IEnumerable<int> permission)
{
await _database.From<T_SYS_ROLE_MENU>()
.Where(r => r.ROLE_ID == id)
.Delete();
var timestamp = DateTime.Now;
foreach (var item in permission)
{
await _database.From<T_SYS_ROLE_MENU>().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<T_SYS_ROLE_MENU>()
.Where(r => r.ROLE_ID == id)
.Delete();
}
/*
* 实现 Kean.Domain.Basic.Repositories.IRoleRepository.ClearUserRole(int id) 方法
*/
public async Task ClearUserRole(int id)
{
await _database.From<T_SYS_USER_ROLE>()
.Where(r => r.ROLE_ID == id)
.Delete();
}
}
}