Example #1
0
        public async Task <IResultModel> Sync(AccountSyncModel model)
        {
            var entity = await _accountRepository.GetAsync(model.Id);

            if (entity == null)
            {
                return(ResultModel.Failed("账户不存在!"));
            }

            var account = _mapper.Map(model, entity);

            var exists = await Exists(account);

            if (!exists.Successful)
            {
                return(exists);
            }

            if (model.NewPassword.NotNull())
            {
                account.Password = _passwordHandler.Encrypt(account.UserName, model.NewPassword);
            }

            using (var uow = _dbContext.NewUnitOfWork())
            {
                var result = await _accountRepository.UpdateAsync(account, uow);

                if (result)
                {
                    if (model.Roles != null)
                    {
                        result = await _accountRoleRepository.DeleteByAccount(account.Id, uow);
                    }
                    if (model.Roles != null && model.Roles.Any())
                    {
                        var accountRoleList = model.Roles.Select(m => new AccountRoleEntity {
                            AccountId = account.Id, RoleId = m
                        }).ToList();
                        result = await _accountRoleRepository.AddAsync(accountRoleList, uow);
                    }

                    if (result)
                    {
                        uow.Commit();

                        ClearPermissionListCache(account.Id);

                        await ClearCache(true, entity.Id);

                        return(ResultModel.Success());
                    }
                }
            }

            return(ResultModel.Failed());
        }
Example #2
0
        public async Task <IResultModel> UpdateContact(EmployeeContactUpdateModel model)
        {
            var employee = await _repository.GetAsync(model.EmployeeId);

            if (employee == null)
            {
                return(ResultModel.NotExists);
            }

            var entity = await _contactRepository.GetByEmployee(model.EmployeeId) ?? new EmployeeContactEntity();

            _mapper.Map(model, entity);

            ClearContactAreaInfo(entity);

            SetContactAreaInfo(entity, model.Area);

            bool result;

            if (entity.Id > 0)
            {
                result = await _contactRepository.UpdateAsync(entity);
            }
            else
            {
                result = await _contactRepository.AddAsync(entity);
            }

            if (result)
            {
                var account = await _accountRepository.GetAsync(employee.AccountId);

                if (account != null)
                {
                    var syncModel = new AccountSyncModel
                    {
                        Id       = account.Id,
                        Name     = account.Name,
                        Email    = model.Email ?? string.Empty,
                        Phone    = model.Phone ?? string.Empty,
                        Roles    = null,
                        UserName = account.UserName
                    };

                    await _accountService.Sync(syncModel);
                }

                return(ResultModel.Success());
            }

            return(ResultModel.Failed());
        }
Example #3
0
        public async Task <IResultModel> Update(EmployeeBaseUpdateModel model)
        {
            var entity = await _repository.GetAsync(model.Id);

            if (entity == null)
            {
                return(ResultModel.NotExists);
            }

            _mapper.Map(model, entity);
            entity.JoinDate = entity.JoinDate.Date;

            var result = await _repository.UpdateAsync(entity);

            if (result)
            {
                var account = await _accountRepository.GetAsync(entity.AccountId);

                if (account != null)
                {
                    var syncModel = new AccountSyncModel
                    {
                        Id       = account.Id,
                        Name     = entity.Name,
                        Email    = account.Email,
                        Phone    = account.Phone,
                        Roles    = null,
                        UserName = account.UserName
                    };

                    await _accountService.Sync(syncModel);
                }

                //清除缓存
                await _cacheHandler.RemoveAsync(CacheKeys.EMPLOYEE_TREE);

                await _cacheHandler.RemoveAsync($"{CacheKeys.EMPLOYEE_BASE_INFO}:{entity.Id}");
            }
            return(ResultModel.Result(result));
        }
Example #4
0
        /// <summary>
        /// 账户更新
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <IResultModel> UpdateAccount(EmployeeAccountUpdateModel model)
        {
            var employee = await _repository.GetAsync(model.Id);

            if (employee == null)
            {
                return(ResultModel.NotExists);
            }

            if (await _accountRepository.ExistsUserName(model.UserName, employee.AccountId, AccountType.User))
            {
                return(ResultModel.Failed("用户名已存在"));
            }

            var account = await _accountRepository.GetAsync(employee.AccountId);

            if (account != null)
            {
                var syncModel = new AccountSyncModel
                {
                    Id          = account.Id,
                    Name        = account.Name,
                    Email       = account.Email,
                    Phone       = account.Phone,
                    Roles       = model.Roles,
                    UserName    = model.UserName,
                    NewPassword = model.Password
                };

                var result = await _accountService.Sync(syncModel);

                return(ResultModel.Result(result.Successful));
            }

            return(ResultModel.Failed());
        }