Пример #1
0
 public IQueryable <Task> Search(TaskSearchRequest searchRequest, Guid companyGuid) => _dbContext
 .Tasks
 .AsNoTracking()
 .NotDeleted()
 .ForCompany(companyGuid)
 .ForBaord(searchRequest.BoardGuid)
 .ForTicket(searchRequest.TicketGuid)
 .AsQueryable();
Пример #2
0
        public async Task <IActionResult> Search([FromQuery] TaskSearchRequest model)
        {
            if (ModelState.IsValid)
            {
                InitUserCredentials();
                var results  = _mapper.Map(_taskService.Search(model, CompanyGuid), new List <TaskResponse>());
                var response = new TaskSearchResponse()
                {
                    Data = results
                };
                return(Ok(response));
            }

            return(new NoContentResult());
        }
Пример #3
0
        public BaseDataProvider <Task> ListTask(TaskSearchRequest search, TaskPaginationRequest request)
        {
            IQueryable <Task> query = this._context.Tasks;

            if (search.DataFrom != null && search.DataTo != null)
            {
                query = query.Where(t => t.DateFoTask >= search.DataFrom && t.DateFoTask <= search.DataTo);
            }

            //if (search.DataFrom != null)
            //{
            //    query = query.Where(t => t.DateFoTask >= search.DataFrom);
            //}


            if (search.Title != null)
            {
                query = query.Where(t => EF.Functions.Like(t.Title, "%" + search.Title + "%"));
            }

            return(new BaseDataProvider <Task>(query, request));
        }
Пример #4
0
 public ActionResult GetTasks([FromQuery] TaskSearchRequest request, [FromQuery] TaskPaginationRequest paginator)
 {
     return(this.Ok(this._eFRepository.ListTask(request, paginator)));
 }
Пример #5
0
        /// <summary>
        /// 获取K币任务列表
        /// </summary>
        /// <param name="user"></param>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <PagingResponseMessage <TaskItemResponse> > GetKcoinTaskListAsync(UserInfo user, TaskSearchRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            var periodId = request.PeriodId;
            var response = new PagingResponseMessage <TaskItemResponse>();
            var querySql = @"SELECT 
                                uuid() uuid,
                                t.Id,
                                t.PeriodId, 
                                t.TaskName,
                                t.TaskTntro,
                                t.UserNumber,
                                t.CreateTime, 
                                CONCAT(u.UserName, '-', u.GroupName) CreateUser,
                                t.Score, 
                                t.LootTime, 
                                t.TaskState
                             FROM jf_taskinfo as t
                             LEFT JOIN jf_userinfo as u on t.CreateUser = u.Id";
            var whereSql = $" WHERE t.IsDelete = FALSE && t.ExamineState = 2 && t.PeriodId = '{periodId}'";
            var orderSql = @" ORDER BY FIELD(t.`TaskState`, 1, 0, 2, 3), 
                            (CASE t.TaskState WHEN 0 THEN t.LootTime WHEN 1 THEN t.LootTime END), 
                            (CASE t.TaskState WHEN 2 THEN t.CreateTime WHEN 3 THEN t.CreateTime END
                        ) DESC ";

            // 筛选 191209-任务名称、发布人、发布时间(End>CreateTime>=Start)、任务状态搜索
            if (!string.IsNullOrWhiteSpace(request.TaskName))
            {
                whereSql += $@" && t.TaskName LIKE '%{request.TaskName.Trim()}%'";
            }
            if (!string.IsNullOrWhiteSpace(request.CreateUser))
            {
                whereSql += $@" && CONCAT(u.UserName, '-', u.GroupName) LIKE '%{request.CreateUser.Trim()}%'";
            }
            if (request.CreateTimeStart != null)
            {
                whereSql += $@" && t.CreateTime >= '{request.CreateTimeStart?.ToString("yyyy-MM-dd HH:mm:ss")}'";
            }
            if (request.CreateTimeEnd != null)
            {
                whereSql += $@" && t.CreateTime < '{request.CreateTimeEnd?.ToString("yyyy-MM-dd HH:mm:ss")}'";
            }
            if (request.TaskState != null)
            {
                whereSql += $@" && t.TaskState = {request.TaskState}";
            }
            response.PageIndex  = request.PageIndex;
            response.PageSize   = request.PageSize;
            response.TotalCount = await _iTaskStore.TaskItems.FromSql(querySql + whereSql + orderSql).CountAsync(cancellationToken);

            var limitSql = $@" LIMIT {request.PageIndex * request.PageSize}, {request.PageSize}";
            var reList   = await _iTaskStore.TaskItems.FromSql(querySql + whereSql + orderSql + limitSql).ToListAsync();

            // 数据组装
            // 19-12-10 任务接取人列表
            var taskIds   = reList.Select(a => a.Id);
            var taskUsers = await(from tu in _iTaskStore.GetTaskUsers()
                                  where taskIds.Contains(tu.TaskId)
                                  join u in _iUserStore.GetUserInfos() on tu.UserId equals u.Id
                                  select new TaskItemResponse.TaskUserDetails5
            {
                TaskId           = tu.TaskId,
                UserId           = tu.UserId,
                UserName         = u.UserName,
                OrganizationName = u.OrganizationName,
                GroupName        = u.GroupName,
            })
                            //.OrderBy(a => a.TaskId)
                            //// 20200107-修复-王森 一个格子里面显示两行每行3个总共6个人,多的不显示
                            //.Take(6)
                            .ToListAsync(cancellationToken);
            //任务人员关系表
            var taskUserIdQuery = _iTaskStore.GetTaskUsers().Where(w => taskIds.Contains(w.TaskId)).Select(s => s.UserId);
            //参与人员积分(任务对应赛季的积分)
            var scoreInfoList = await _iTaskStore.GetScoreInfos().Where(w => taskUserIdQuery.Contains(w.UserId) && w.PeriodId == periodId).ToListAsync();

            //称号信息
            var titleList = await _iTaskStore.GetScoreTitles().Where(w => !w.IsDelete && w.PeriodId == periodId).ToListAsync();

            titleList.ForEach(fo => fo.Icon = _config["FileUrl"] + fo.Icon);
            taskUsers.ForEach(task =>
            {
                task.ScoreTitle = (titleList.FirstOrDefault(fi => fi.StartScore <= scoreInfoList.First(f => f.UserId == task.UserId).Score&& fi.EndScore >= scoreInfoList.First(f => f.UserId == task.UserId).Score)?.Title) ?? "未知称号";
                task.Icon       = titleList.FirstOrDefault(fi => fi.StartScore <= scoreInfoList.First(f => f.UserId == task.UserId).Score&& fi.EndScore >= scoreInfoList.First(f => f.UserId == task.UserId).Score)?.Icon;
            });

            reList.ForEach(fo => fo.TaskUsers = taskUsers.Where(a => a.TaskId == fo.Id));

            response.Extension = reList;
            return(response);
        }
Пример #6
0
        public async Task <PagingResponseMessage <TaskItemResponse> > KcoinTaskList(Models.UserInfo user, [FromBody] TaskSearchRequest request)
        {
            var response = new PagingResponseMessage <TaskItemResponse>();

            Logger.Trace($"用户{user?.UserName ?? ""}({user?.Id ?? ""})K币任务列表,请求参数为:\r\n{JsonHelper.ToJson(request)}");
            if (!ModelState.IsValid)
            {
                response.Code    = ResponseCodeDefines.ModelStateInvalid;
                response.Message = ModelState.GetAllErrors();
                Logger.Warn($"用户{user?.UserName ?? ""}({user?.Id ?? ""})K币任务列表,模型验证失败:\r\n{response.Message ?? ""}");
                return(response);
            }
            try
            {
                return(await _taskManager.GetKcoinTaskListAsync(user, request, HttpContext.RequestAborted));
            }
            catch (Exception e)
            {
                Logger.Error($"用户{user?.UserName ?? ""}({user?.Id ?? ""})K币任务列表,报错:{e.Message}\r\n{e.StackTrace}");
                response.Code    = ResponseCodeDefines.ServiceError;
                response.Message = e.Message;
                return(response);
            }
        }