Пример #1
0
        public async Task <ActionResult <GroupDetailVm> > GetById(Guid id, bool depGroup = false)
        {
            try
            {
                await EnsureDepartmentListCacheAsync();
                await EnsurePositionListCacheAsync();

                var dto = !depGroup
                    ? await _groupAppService.GetByIdAsync(id)
                    : await _departmentAppService.GetDepGroupByIdAsync(id);

                if (dto == null)
                {
                    return(NotFound(id));
                }
                var data = _mapper.Map <GroupDetailVm>(dto);
                if (dto.Members != null && data != null)
                {
                    foreach (var s in dto.Members)
                    {
                        var d = data.Members.First((item) => item.EmployeeId.Equals(s.EmployeeId));
                        if (d != null)
                        {
                            SetDepartmentNames(s, d);
                        }
                    }
                }
                return(data);
            }
            catch (Exception ex)
            {
                return(BadRequest(LogError(_logger, ex)));
            }
        }
Пример #2
0
        public async Task <ActionResult <IEnumerable <FileItemDto> > > GetGroupFilesAsync(Guid groupId, bool depGroup, int page, int size)
        {
            try
            {
                if (Guid.Empty.Equals(groupId) || page < 1)
                {
                    return(null);
                }
                var uploaderId = GetEmployeeId();
                var group      = !depGroup
                    ? await _groupAppService.GetByIdAsync(groupId)
                    : await _departmentAppService.GetDepGroupByIdAsync(groupId);

                if (group == null)
                {
                    return(null);
                }
                if (!IsMemeberInGroup(group.Members, uploaderId))
                {
                    return(null);
                }
                var fileItems = await _groupFileControlApp.GetFileItemsAsync(groupId, page, size);

                if (fileItems != null)
                {
                    #region 获取上传者信息
                    var employeeIds = fileItems.DistinctBy(f => new { f.UploaderId })
                                      .Select(x => x.UploaderId).ToArray();

                    var employees = await _employeeCacheService.ByIdAsync(employeeIds);

                    foreach (var item in fileItems)
                    {
                        var employee = employees.Find(x => x.Id == item.UploaderId);
                        if (employee != null)
                        {
                            item.UploaderName = employee.Name;
                        }
                    }
                    #endregion

                    #region 获取文件信息
                    var fileMd5s = fileItems.DistinctBy(f => new { f.StoreId });
                    List <Task <AttachmentItem> > attTasks = new List <Task <AttachmentItem> >();
                    foreach (var item in fileMd5s)
                    {
                        attTasks.Add(_attachmentAppServiceFactory(item.StoreId).GetByIdAsync(item.StoreId));
                    }
                    await Task.WhenAll(attTasks);

                    attTasks.ForEach(t =>
                    {
                        var e = t.Result;
                        if (e != null)
                        {
                            var fs = fileItems.FindAll(f => f.StoreId.Equals(e.Id));
                            if (fs != null)
                            {
                                foreach (var f in fs)
                                {
                                    f.Size = e.Size;
                                }
                            }
                        }
                    });
                    #endregion
                }
                return(fileItems);
            }
            catch (Exception ex)
            {
                return(BadRequest(LogError(_logger, ex)));
            }
        }