Exemple #1
0
        public object HandleQueryByParameter(UserQuery userQuery, out string sql)
        {
            sql = "1=1";
            if (userQuery.AccountEmailFilter.IsNotNullAndWhiteSpace())
            {
                sql += $"and account_email like %@account_email% ";
            }
            if (userQuery.IsActivated.HasValue)
            {
                sql += $"and is_activated = @is_activated ";
            }
            if (userQuery.IsBanned.HasValue)
            {
                sql += $"and is_banned = @is_banned ";
            }
            if (userQuery.IsModerated.HasValue)
            {
                sql += $"and is_moderated = @is_moderated ";
            }

            if (userQuery.Keyword.IsNotNullAndWhiteSpace())
            {
                sql += $"and username like %@username% or nickname like %@nickname% ";
            }
            if (userQuery.RoleName.IsNotNullAndWhiteSpace())
            {
                sql += $"and userid in (select userid from sc_users_in_roles where rolename = @rolename ";
            }

            if (userQuery.RegisterTimeLowerLimit.HasValue)
            {
                sql += $"and date_created >= @date_created_lower";
            }
            if (userQuery.RegisterTimeUpperLimit.HasValue)
            {
                sql += $"and date_created <= @date_created_upper ";
            }

            if (userQuery.UserRankLowerLimit.HasValue)
            {
                sql += $"and rank >= @rank_lower ";
            }

            if (userQuery.UserRankUpperLimit.HasValue)
            {
                sql += $"and rank <= @rank_upper ";
            }
            return(new
            {
                account_email = userQuery.AccountEmailFilter,
                is_activated = userQuery.IsActivated.HasValue ? 1 : 0,
                is_banned = userQuery.IsBanned.HasValue ? 1 : 0,
                is_moderated = userQuery.IsModerated.HasValue ? 1 : 0,
                username = userQuery.Keyword,
                nickname = userQuery.Keyword,
                rolename = userQuery.RoleName,
                date_created_lower = userQuery.RegisterTimeLowerLimit,
                date_created_upper = userQuery.RegisterTimeUpperLimit,
                rank_lower = userQuery.UserRankLowerLimit,
                rank_upper = userQuery.UserRankUpperLimit
            });
        }
        /// <summary>
        /// 根据筛选条件 (获取分页组件)
        /// </summary>
        /// <param name="userService"></param>
        /// <param name="userQuery">筛选条件</param>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageSize">显示条数</param>
        /// <returns></returns>
        public static PagingDataSet <User> GetUsers(this IUserService userService, UserQuery userQuery, int pageIndex, int pageSize)
        {
            IUserRepository repository = userService.GetUserRepository();

            return(repository.GetUsers(userQuery, pageIndex, pageSize));
        }