Services/AccountService/Infrastructure/Repository/AccountRepository.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Infrastructure.EfDataAccess;
using Infrastructure.PersistenceObject;
using InfrastructureBase.Object;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Infrastructure.Repository
{
public class AccountRepository : RepositoryBase<EfDbContext, Domain.Entities.Account, Account>, Domain.Repository.IAccountRepository
{
private readonly EfDbContext context;
public AccountRepository(EfDbContext context) : base(context) { this.context = context; }
public override void Add(Domain.Entities.Account t)
{
var account = t.CopyTo<Domain.Entities.Account, Account>();
context.Account.Add(account);
var user = t.User.CopyTo<Domain.Entities.User, User>();
user.AccountId = account.Id;
if (account.Roles.Any())
context.UserRole.AddRange(account.Roles.Select(x => new UserRole() { AccountId = account.Id, RoleId = x }));
context.User.Add(user);
}
public async Task<bool> CheckAcccountUserInfoAny(Guid accountId)
{
return await context.User.AnyAsync(x => x.AccountId == accountId);
}
public async Task<Domain.Entities.Account> FindAccountByAccounId(string loginName)
{
var account = await context.Account.AsNoTracking().FirstOrDefaultAsync(x => x.LoginName == loginName);
await FillAccountInfo(account);
return account;
}
public async Task<List<string>> GetAccountPermissions(Guid accountId)
{
var roles = await (from userrole in context.UserRole.Where(x => x.AccountId == accountId)
join role in context.Role on userrole.RoleId equals role.Id
select role
).AsNoTracking().ToListAsync();
if (roles.Any(x => x.SuperAdmin))
return null;
return await (from rolepermission in context.RolePermission.Where(x => roles.Select(y => y.Id).Contains(x.RoleId))
join permission in context.Permission on rolepermission.PermissionId equals permission.Id
select permission.Path
).AsNoTracking().ToListAsync();
}
public override async Task<Domain.Entities.Account> GetAsync(object key)
{
var account = await base.GetAsync(key);
await FillAccountInfo(account);
return account;
}
public override void Update(Domain.Entities.Account t)
后面还有 25 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
