Ejemplo n.º 1
0
        /// <summary>
        /// 审核任务列表
        /// </summary>
        /// <param name="user"></param>
        /// <param name="condition"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <PagingResponseMessage <TasksExamineResponse> > TasksExaminelistAsync(UserInfo user, TaskExamineListRequest condition, CancellationToken cancellationToken = default(CancellationToken))
        {
            var response = new PagingResponseMessage <TasksExamineResponse>();

            response.Extension = new List <TasksExamineResponse>();
            var taskInfoQuery = _iTaskStore.GetTaskExamineList(condition.PeriodId);

            if (!string.IsNullOrWhiteSpace(condition.TaskName)) //任务名称
            {
                taskInfoQuery = taskInfoQuery.Where(task => task.TaskName.Contains(condition.TaskName));
            }
            if (condition.ExamineState != null) //审核状态
            {
                taskInfoQuery = taskInfoQuery.Where(task => task.ExamineState == condition.ExamineState);
            }
            if (!string.IsNullOrWhiteSpace(condition.CreateUser)) //发布人
            {
                taskInfoQuery = taskInfoQuery.Where(task => task.CreateUser.Contains(condition.CreateUser));
            }
            if (condition.StartTime.HasValue)//发布开始时间
            {
                taskInfoQuery = taskInfoQuery.Where(task => task.CreateTime >= condition.StartTime);
            }
            if (condition.EndTime.HasValue)//发布结束时间
            {
                taskInfoQuery = taskInfoQuery.Where(task => task.CreateTime <= condition.EndTime);
            }


            response.PageIndex  = condition.PageIndex;
            response.PageSize   = condition.PageSize;
            response.TotalCount = await taskInfoQuery.CountAsync();

            var taskInfoList = await taskInfoQuery.Skip(condition.PageIndex *condition.PageSize).Take(condition.PageSize).ToListAsync();

            // 19-12-10 查询任务接取人
            var taskIds   = taskInfoList.Select(a => a.Id);
            var periodId  = condition.PeriodId;
            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 TasksExamineResponse.TaskUserDetails4
            {
                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;
            });

            taskInfoList.ForEach(fo => fo.TaskUsers = taskUsers.Where(a => a.TaskId == fo.Id));
            response.Extension = taskInfoList;
            return(response);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 查询开奖列表
        /// </summary>
        /// <param name="request"></param>
        /// <param name="requestAborted"></param>
        /// <returns></returns>
        public async Task <PagingResponseMessage <LotteryRunListResponse> > LotteryRunListAsync(PagingRequest request, CancellationToken requestAborted)
        {
            var response = new PagingResponseMessage <LotteryRunListResponse> {
                Extension = new List <LotteryRunListResponse>()
            };
            var numberPeriods = await GetNumberPeriods();//下一次开奖期数

            var lrQuery = _giftStore.GetLotteryResults();

            lrQuery             = lrQuery.OrderByDescending(o => o.CreateTime);
            response.TotalCount = await lrQuery.CountAsync();

            response.PageIndex = request.PageIndex;
            response.PageSize  = request.PageSize;
            //第一页在最前面加一条下一期未开奖的记录
            if (request.PageIndex == 0)
            {
                //下一期开奖时间
                var nextTime = DateTime.Now;
                if (DateTime.Now < Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 10:00:00")))
                {
                    nextTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 10:00:00"));
                }
                else if (DateTime.Now < Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 11:30:00")))
                {
                    nextTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 11:30:00"));//TODO 年前追加,开年删除
                }
                else if (DateTime.Now < Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 13:00:00")))
                {
                    nextTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 13:00:00"));
                }
                else if (DateTime.Now < Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 15:30:00")))
                {
                    nextTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 15:30:00"));//TODO 年前追加,开年删除
                }
                else if (DateTime.Now < Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 18:00:00")))
                {
                    nextTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 18:00:00"));
                }
                else if (DateTime.Now < Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 21:00:00")))
                {
                    nextTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 21:00:00"));
                }
                response.Extension.Add(new LotteryRunListResponse
                {
                    IsRunlottery  = false,//下一期还没有开奖
                    NumberPeriods = numberPeriods,
                    Number        = "XX,XX,XX,XX,XX,XX",
                    CreateTime    = nextTime.ToString("yyyy-MM-dd HH:mm:ss")
                });
            }
            var re = await lrQuery.Skip(request.PageIndex *request.PageSize).Take(request.PageSize).Select(s => new LotteryRunListResponse
            {
                IsRunlottery  = true,//查出来的都是已开奖的
                NumberPeriods = s.NumberPeriods,
                Number        = s.Number,
                CreateTime    = s.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
            }).ToListAsync();

            response.Extension.AddRange(re);
            return(response);
        }
Ejemplo n.º 4
0
        public async Task <PagingResponseMessage <CostInfoResponse> > SearchCost(UserInfo user, CostSearchRequest request)
        {
            PagingResponseMessage <CostInfoResponse> r = new PagingResponseMessage <CostInfoResponse>();

            var query = _Store.CostQuery;

            List <int> statusList = new List <int>()
            {
                (int)ChargeStatus.Confirm
            };
            var orgList = await _permissionExpansion.GetOrganizationOfPermission(user.Id, PERMISSION_MXB);

            query = query.Where(c => c.ChargeInfo.IsDeleted == false && statusList.Contains(c.ChargeInfo.Status));

            if (request != null)
            {
                if (!String.IsNullOrEmpty(request.ReimburseDepartment))
                {
                    var orgChildren = await _permissionExpansion.GetLowerDepartments(request.ReimburseDepartment);

                    orgList = orgList.Where(x => orgChildren.Contains(x)).ToList();
                }
            }

            query = query.Where(c => orgList.Contains(c.ChargeInfo.ReimburseDepartment));

            if (request != null)
            {
                if (request.StartDate != null)
                {
                    var dt = request.StartDate.Value.Date;
                    query = query.Where(c => c.ChargeInfo.CreateTime >= dt);
                }
                if (request.EndDate != null)
                {
                    var dt = request.EndDate.Value.Date.AddDays(1);
                    query = query.Where(c => c.ChargeInfo.CreateTime < dt);
                }
                if (request.IsPayment != null)
                {
                    query = query.Where(c => c.ChargeInfo.IsPayment == request.IsPayment);
                }
                if (request.IsBackup != null)
                {
                    query = query.Where(c => c.ChargeInfo.IsBackup == request.IsBackup);
                }
                if (!String.IsNullOrWhiteSpace(request.Keyword))
                {
                    query = query.Where(c => (c.ChargeInfo.ReimburseUserInfo.Name.Contains(request.Keyword) || c.ChargeInfo.ReimburseUserInfo.UserID.Contains(request.Keyword) || c.Memo.Contains(request.Keyword) || c.ChargeInfo.Memo.Contains(request.Keyword) || c.ChargeInfo.ChargeNo.Contains(request.Keyword)));
                }

                if (request.PageIndex > 0 && request.PageSize > 0)
                {
                    r.TotalCount = await query.CountAsync();

                    r.PageSize  = request.PageSize;
                    r.PageIndex = request.PageIndex;

                    query = query.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize);
                }
            }

            var list = await query.ToListAsync();

            r.Extension = _mapper.Map <List <CostInfoResponse> >(list);

            return(r);
        }
Ejemplo n.º 5
0
        public async Task <PagingResponseMessage <ChargeInfoResponse> > Search(UserInfo user, ChargeSearchRequest request, string permissionId)
        {
            PagingResponseMessage <ChargeInfoResponse> r = new PagingResponseMessage <ChargeInfoResponse>();

            bool hasYjk = await _permissionExpansion.HavePermission(user.Id, PERMISSION_YJK);

            if (String.IsNullOrEmpty(permissionId))
            {
                permissionId = PERMISSION_YJKGL;
            }

            var orgList = await _permissionExpansion.GetOrganizationOfPermission(user.Id, permissionId);

            List <int> types = new List <int>()
            {
                2, 3
            };
            var query = _Store.SimpleQuery;

            query = query.Where(c => c.IsDeleted == false && types.Contains(c.Type));
            if (orgList.Count == 0)
            {
                if (!hasYjk)
                {
                    r.Extension = new List <ChargeInfoResponse>();
                    return(r);
                }
                query = query.Where(x => x.ReimburseUser == user.Id);
            }
            else
            {
                if (request != null)
                {
                    if (!String.IsNullOrEmpty(request.ReimburseDepartment))
                    {
                        var orgChildren = await _permissionExpansion.GetLowerDepartments(request.ReimburseDepartment);

                        orgList = orgList.Where(x => orgChildren.Contains(x)).ToList();
                    }
                }

                query = query.Where(c => orgList.Contains(c.ReimburseDepartment));
            }


            if (request != null)
            {
                if (request.StartDate != null)
                {
                    var dt = request.StartDate.Value.Date;
                    query = query.Where(c => c.CreateTime >= dt);
                }
                if (request.EndDate != null)
                {
                    var dt = request.EndDate.Value.Date.AddDays(1);
                    query = query.Where(c => c.CreateTime < dt);
                }
                if (request.IsPayment != null)
                {
                    query = query.Where(c => c.IsPayment == request.IsPayment);
                }

                if (!String.IsNullOrWhiteSpace(request.Keyword))
                {
                    query = query.Where(c => (c.ReimburseUserInfo.Name.Contains(request.Keyword) || c.ReimburseUserInfo.UserID.Contains(request.Keyword) || c.Memo.Contains(request.Keyword) || c.ChargeNo.Contains(request.Keyword)));
                }
                if (request.Status != null && request.Status.Count > 0)
                {
                    query = query.Where(c => request.Status.Contains(c.Status));
                }


                if (request.PageIndex > 0 && request.PageSize > 0)
                {
                    r.TotalCount = await query.CountAsync();

                    r.PageSize  = request.PageSize;
                    r.PageIndex = request.PageIndex;
                    query       = query.Skip((request.PageIndex - 1) * request.PageSize).Take(request.PageSize);
                }
            }



            var list = await query.ToListAsync();

            r.Extension = _mapper.Map <List <ChargeInfoResponse> >(list);
            if (r.TotalCount == 0)
            {
                r.TotalCount = r.Extension.Count;
            }

            return(r);
        }
Ejemplo n.º 6
0
        public async Task <PagingResponseMessage <UpdateRecordListResponse> > GetListAsync(UpdateRecordListCondition condition, CancellationToken cancellationToken = default(CancellationToken))
        {
            PagingResponseMessage <UpdateRecordListResponse> pagingResponse = new PagingResponseMessage <UpdateRecordListResponse>();

            if (condition == null)
            {
                throw new ArgumentNullException(nameof(UpdateRecordListCondition));
            }
            var q = Store.GetDetail().Where(a => !a.IsDeleted);

            if (condition.ContentTypes?.Count > 0)
            {
                q = q.Where(a => condition.ContentTypes.Contains(a.ContentType));
            }
            if (condition.ContentIds?.Count > 0)
            {
                q = q.Where(a => condition.ContentIds.Contains(a.ContentId));
            }
            if (condition.ExamineStatus?.Count > 0)
            {
                q = q.Where(a => condition.ExamineStatus.Contains(a.ExamineStatus));
            }
            if (!string.IsNullOrEmpty(condition.KeyWord))
            {
                q = q.Where(a => a.Title.Contains(condition.KeyWord) || a.Content.Contains(condition.KeyWord));
            }
            if (condition.UpdateTypes?.Count > 0)
            {
                q = q.Where(a => condition.UpdateTypes.Contains(a.UpdateType));
            }
            if (!string.IsNullOrEmpty(condition.UserId))
            {
                q = q.Where(a => a.UserId == condition.UserId);
            }
            if (condition.IsCurrent != null)
            {
                q = q.Where(a => a.IsCurrent == condition.IsCurrent);
            }
            if (!string.IsNullOrEmpty(condition.AreaCode))
            {
                q = q.Where(a => a.AreaDefine.Code == condition.AreaCode);
            }
            if (!string.IsNullOrEmpty(condition.DistrictCode))
            {
                q = q.Where(a => a.DistrictDefine.Code == condition.DistrictCode);
            }
            if (!string.IsNullOrEmpty(condition.CityCode))
            {
                q = q.Where(a => a.CityDefine.Code == condition.CityCode);
            }

            string fr = ApplicationCore.ApplicationContext.Current.FileServerRoot;

            fr = (fr ?? "").TrimEnd('/');

            pagingResponse.TotalCount = await q.CountAsync(cancellationToken);

            var qlist = await q.OrderByDescending(a => a.SubmitTime).Skip(condition.PageIndex * condition.PageSize).Take(condition.PageSize).ToListAsync(cancellationToken);

            var resulte = qlist.Select(a => new UpdateRecordListResponse
            {
                ContentId     = a.ContentId,
                UserName      = a.UserName,
                Id            = a.Id,
                Icon          = string.IsNullOrEmpty(a.Icon) ? "" : fr + "/" + a.Icon.TrimStart('/'),
                SubmitTime    = a.SubmitTime,
                ContentType   = a.ContentType,
                ExamineStatus = a.ExamineStatus,
                Title         = a.Title,
                UpdateTime    = a.UpdateTime,
                UpdateType    = a.UpdateType,
                IsCurrent     = a.IsCurrent,
                UserId        = a.UserId,
                Ext1          = a.Ext1,
                Ext2          = a.Ext2,
                Ext3          = a.Ext3,
                Ext4          = a.Ext4,
                Ext5          = a.Ext5,
                Ext6          = a.Ext6,
                Ext7          = a.Ext7,
                Ext8          = a.Ext8,
                BuildingName  = a.BuildingName,
                AreaFullName  = (a.CityDefine != null && !string.IsNullOrEmpty(a.CityDefine.Name) ? a.CityDefine.Name + "-" : "") +
                                (a.DistrictDefine != null && !string.IsNullOrEmpty(a.DistrictDefine.Name) ? a.DistrictDefine.Name + "-" : "") +
                                (a.AreaDefine != null && !string.IsNullOrEmpty(a.AreaDefine.Name) ? a.AreaDefine.Name : "")
            });

            pagingResponse.PageIndex = condition.PageIndex;
            pagingResponse.PageSize  = condition.PageSize;
            pagingResponse.Extension = resulte.ToList();
            return(pagingResponse);
        }
Ejemplo n.º 7
0
        public virtual async Task <PagingResponseMessage <BuildingSearchResponse> > Search(string userId, BuildingListSearchCondition condition, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (condition == null)
            {
                throw new ArgumentNullException(nameof(condition));
            }
            PagingResponseMessage <BuildingSearchResponse> pagingResponse = new PagingResponseMessage <BuildingSearchResponse>();

            var q = _buildingsStore.GetSimpleSerchQuery().Where(a => !a.IsDeleted && a.ExamineStatus == (int)Models.ExamineStatusEnum.Approved);

            if (condition?.HasBank == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasBank ?? true);
            }
            if (condition?.HasBus == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasBus ?? true);
            }
            if (condition?.HasKindergarten == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasKindergarten ?? true);
            }
            if (condition?.HasMarket == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasMarket ?? true);
            }
            if (condition?.HasMiddleSchool == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasMiddleSchool ?? true);
            }
            if (condition?.HasOtherTraffic == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasOtherTraffic ?? true);
            }
            if (condition?.HasPrimarySchool == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasPrimarySchool ?? true);
            }
            if (condition?.HasRail == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasRail ?? true);
            }
            if (condition?.HasSupermarket == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasSupermarket ?? true);
            }
            if (condition?.HasUniversity == true)
            {
                q = q.Where(a => a.BuildingFacilities.HasUniversity ?? true);
            }
            if (!string.IsNullOrEmpty(condition.KeyWord))
            {
                q = q.Where(a => a.BuildingBaseInfo.Name.Contains(condition.KeyWord));
            }
            if (!string.IsNullOrEmpty(condition.City))
            {
                q = q.Where(a => a.BuildingBaseInfo.City == condition.City);
            }
            if (!string.IsNullOrEmpty(condition.Area))
            {
                q = q.Where(a => a.BuildingBaseInfo.Area == condition.Area);
            }
            if (!string.IsNullOrEmpty(condition.District))
            {
                q = q.Where(a => a.BuildingBaseInfo.District == condition.District);
            }
            if (condition?.LowPrice != null && condition?.HighPrice != null)
            {
                q = q.Where(a => a.BuildingBaseInfo.MaxPrice > condition.LowPrice && a.BuildingBaseInfo.MinPrice < condition.HighPrice);
                //if (condition?.HighPrice != null)
                //{
                //    q = q.Where(a => a.BuildingBaseInfo.MaxPrice < condition.HighPrice &&);
                //}
                //else if (condition?.LowPrice != null)
                //{
                //    q = q.Where(a => a.BuildingBaseInfo.MinPrice > condition.LowPrice);
                //}
                //else
                //{
                //    q = q.Where(a => a.BuildingBaseInfo.MinPrice > condition.LowPrice && a.BuildingBaseInfo.MaxPrice > condition.LowPrice || a.BuildingBaseInfo.MaxPrice < condition.HighPrice);
                //}
            }
            else if (condition?.LowPrice != null && condition?.HighPrice == null)
            {
                q = q.Where(a => a.BuildingBaseInfo.MinPrice > condition.LowPrice);
            }
            //if (condition?.HighPrice != null)
            //{
            //    q = q.Where(a => a.BuildingBaseInfo.MaxPrice < condition.HighPrice);
            //}
            if (condition?.SaleStatus?.Count > 0)
            {
                q = q.Where(a => condition.SaleStatus.Contains(a.BuildingShopInfo.SaleStatus));
            }
            if (condition?.PriceIsAscSort == null)
            {
                q = q.OrderBy(a => a.BuildingBaseInfo.OpenDate);
            }
            if (condition?.PriceIsAscSort == true)
            {
                q = q.OrderBy(a => (a.BuildingBaseInfo.MinPrice ?? 0 + a.BuildingBaseInfo.MinPrice ?? 0) / (decimal)2);
            }
            if (condition?.PriceIsAscSort == false)
            {
                q = q.OrderByDescending(a => (a.BuildingBaseInfo.MinPrice ?? 0 + a.BuildingBaseInfo.MinPrice ?? 0) / (decimal)2);
            }
            if (condition.IsReport)
            {
                q = q.Where(a => a.BuildingRule != null && (a.BuildingRule.ReportTime == null || a.BuildingRule.ReportTime != null && a.BuildingRule.ReportTime < DateTime.Now.AddDays(5)) /* && a.BuildingRule.IsUse*/);
            }
            string fr = ApplicationCore.ApplicationContext.Current.FileServerRoot;

            fr = (fr ?? "").TrimEnd('/');

            pagingResponse.TotalCount = await q.CountAsync(cancellationToken);

            var qlist = await q.Skip(condition.PageIndex *condition.PageSize).Take(condition.PageSize).ToListAsync(cancellationToken);



            var resulte = qlist.Select(a => new BuildingSearchResponse
            {
                Id               = a.Id,
                Address          = a.BuildingBaseInfo.Address,
                AreaFullName     = a.BuildingBaseInfo.CityDefine.Name + "-" + a.BuildingBaseInfo.DistrictDefine.Name + "-" + a.BuildingBaseInfo.AreaDefine.Name,
                MaxPrice         = a.BuildingBaseInfo.MaxPrice,
                MinPrice         = a.BuildingBaseInfo.MinPrice,
                Name             = a.BuildingBaseInfo.Name,
                Icon             = string.IsNullOrEmpty(a.Icon) ? "" : fr + "/" + a.Icon.TrimStart('/'),
                HasBus           = a.BuildingFacilities.HasBus,
                HasRail          = a.BuildingFacilities.HasRail,
                HasOtherTraffic  = a.BuildingFacilities.HasOtherTraffic,
                HasKindergarten  = a.BuildingFacilities.HasKindergarten,
                HasPrimarySchool = a.BuildingFacilities.HasPrimarySchool,
                HasMiddleSchool  = a.BuildingFacilities.HasMiddleSchool,
                HasUniversity    = a.BuildingFacilities.HasUniversity,
                HasMarket        = a.BuildingFacilities.HasMarket,
                HasSupermarket   = a.BuildingFacilities.HasSupermarket,
                HasBank          = a.BuildingFacilities.HasBank,

                BeltLook = a.BuildingRule?.ReportTime
            });

            pagingResponse.PageIndex = condition.PageIndex;
            pagingResponse.PageSize  = condition.PageSize;
            pagingResponse.Extension = resulte.ToList();
            return(pagingResponse);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 批量 查询
 /// </summary>
 /// <param name="response"></param>
 /// <param name="request"></param>
 public async Task List([Required] PagingResponseMessage <UserJson> response, [Required] ModelRequest <UserJson> request)
 {
     response.Extension = await Store.Find().Select(ub => Mapper.Map <UserJson>(ub)).ToListAsync();
 }
        /// <summary>
        /// 获取我的商铺收藏信息
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="condition"></param>
        /// <param name="cancellationToken">验证</param>
        /// <returns></returns>
        public virtual async Task <PagingResponseMessage <ShopsFavoriteResponse> > FindMyShopsFavoriteAsync(string userId, PageCondition condition, CancellationToken cancellationToken = default(CancellationToken))
        {
            var resulte = new PagingResponseMessage <ShopsFavoriteResponse>();

            var response = _ishopsFavoritesStore.ShopsFavoriteAll().Where(b => b.UserId == userId && !b.IsDeleted && !b.Shops.IsDeleted);

            if (!string.IsNullOrEmpty(condition.KeyWord))
            {
                response = response.Where(x => x.Shops.ShopBaseInfo.Name.Contains(condition.KeyWord));
            }

            var query = await response.OrderByDescending(x => x.FavoriteTime).Skip(condition.PageIndex * condition.PageSize).Take(condition.PageSize).ToListAsync(cancellationToken);

            string fr = ApplicationCore.ApplicationContext.Current.FileServerRoot;

            fr = (fr ?? "").TrimEnd('/');


            var aasd = query.Select(a => new ShopsFavoriteResponse
            {
                Id                     = a.Id,
                ShopsId                = a.ShopsId,
                UserId                 = a.UserId,
                FavoriteTime           = a.FavoriteTime,
                UserNikeName           = a.UserNikeName,
                ShopListSearchResponse = new ShopListSearchResponse
                {
                    Id           = a.Shops.Id,
                    Address      = a.Shops.Buildings.BuildingBaseInfo.Address,
                    AreaFullName = a.Shops.Buildings.BuildingBaseInfo.CityDefine.Name + "-" + a.Shops.Buildings.BuildingBaseInfo.DistrictDefine.Name + "-" + a.Shops.Buildings.BuildingBaseInfo.AreaDefine.Name,
                    Price        = a.Shops.ShopBaseInfo.Price,
                    Name         = a.Shops.ShopBaseInfo.Name,
                    Depth        = a.Shops.ShopBaseInfo.Depth,
                    Height       = a.Shops.ShopBaseInfo.Height,
                    Width        = a.Shops.ShopBaseInfo.Width,
                    BuildingArea = a.Shops.ShopBaseInfo.BuildingArea,
                    BuildingName = a.Shops.Buildings.BuildingBaseInfo.Name,
                    BuildingNo   = a.Shops.ShopBaseInfo.BuildingNo,
                    FloorNo      = a.Shops.ShopBaseInfo.FloorNo,
                    Number       = a.Shops.ShopBaseInfo.Number,
                    SaleStatus   = a.Shops.ShopBaseInfo.SaleStatus,
                    Status       = a.Shops.ShopBaseInfo.Status,
                    Icon         = string.IsNullOrEmpty(a.Shops.Icon) ? "" : fr + "/" + a.Shops.Icon.TrimStart('/'),
                    UpperWater   = a.Shops.ShopFacilities.UpperWater,
                    DownWater    = a.Shops.ShopFacilities.DownWater,
                    Gas          = a.Shops.ShopFacilities.Gas,
                    Chimney      = a.Shops.ShopFacilities.Chimney,
                    Blowoff      = a.Shops.ShopFacilities.Blowoff,
                    Split        = a.Shops.ShopFacilities.Split,
                    Elevator     = a.Shops.ShopFacilities.Elevator,
                    Staircase    = a.Shops.ShopFacilities.Staircase,
                    Outside      = a.Shops.ShopFacilities.Outside,
                    OpenFloor    = a.Shops.ShopFacilities.OpenFloor,
                    ParkingSpace = a.Shops.ShopFacilities.ParkingSpace,
                    IsCorner     = a.Shops.ShopBaseInfo.IsCorner,
                    IsFaceStreet = a.Shops.ShopBaseInfo.IsFaceStreet,
                    HasFree      = a.Shops.ShopBaseInfo.HasFree,
                    HasStreet    = a.Shops.ShopBaseInfo.HasStreet
                }
            });


            resulte.PageIndex  = condition.PageIndex;
            resulte.PageSize   = condition.PageSize;
            resulte.TotalCount = await response.CountAsync(cancellationToken);

            resulte.Extension = aasd.ToList();
            return(resulte);
        }