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 积分,解读结果公开显示在下面。

还没有人解读过这个文件。