Пример #1
0
        /// <summary>
        /// 查询单个用户
        /// </summary>
        /// <param name="userID">用户编号</param>
        /// <returns>用户视图</returns>
        public UserViewResult Get(int userID)
        {
            int totalPage = 0;
            List<UserViewResult> result;
            string tokenID = string.Empty;

            var queryString = Request.GetQueryNameValuePairs();
            var token = queryString.FirstOrDefault(q => q.Key.ToLower() == "token");
            if (!string.IsNullOrEmpty(token.Value))
            {
                tokenID = token.Value;
            }

            AuthenticationFunction.TokenValidation(tokenID);
            if (!AuthenticationFunction.IsAuthenticated)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, "token expired"));
            }

            UserQueryConditions queryConditions = new UserQueryConditions() { UserID = userID };
            UserFunction userFunction = new UserFunction();
            userFunction.QueryUsers(queryConditions, out result, out totalPage);

            return result.FirstOrDefault();
        }
Пример #2
0
        /// <summary>
        /// 查询用户或用户登录
        /// </summary>
        /// <returns>用户视图,总页数</returns>
        public HttpResponseMessage Get()
        {
            int totalPage = 0;
            string tokenID = string.Empty;
            List<UserViewResult> result = new List<UserViewResult>();

            var queryString = Request.GetQueryNameValuePairs();
            var token = queryString.FirstOrDefault(q=>q.Key.ToLower() == "token");
            if (!string.IsNullOrEmpty(token.Value))
            {
                tokenID = token.Value;
            }

            if (queryString.Any(q => q.Key.ToLower() == "logout"))
            {
                TokenFunction tokenFunction = new TokenFunction();
                tokenFunction.DeleteToken(new Token() { TokenID = tokenID });

                return Request.CreateResponse(HttpStatusCode.OK);
            }
            else if (queryString.Any(q => q.Key.ToLower() == "password"))
            {
                string userName = queryString.FirstOrDefault(q => q.Key.ToLower() == "username").Value;
                string password = queryString.FirstOrDefault(q => q.Key.ToLower() == "password").Value;

                var logonUser = new UserViewResult();
                int error = AuthenticationFunction.UserLogon(userName, password, out tokenID, out logonUser);

                if (error == 0)
                {
                    List<object> objectResult = new List<object>() { logonUser, tokenID };
                    return Request.CreateResponse(HttpStatusCode.OK, objectResult);
                }
                else
                {
                    return GetResponse.UserResponse(error);
                }
            }
            else
            {
                AuthenticationFunction.TokenValidation(tokenID);
                if (!AuthenticationFunction.IsAuthenticated)
                {
                    throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, "token expired"));
                }

                var queryConditions = new UserQueryConditions();
                queryConditions.GetValues(queryString);

                UserFunction userFunction = new UserFunction();
                userFunction.QueryUsers(queryConditions, out result, out totalPage);

                List<object> objectResult = new List<object>() { result, new { totalPage = totalPage } };
                return Request.CreateResponse(HttpStatusCode.OK, objectResult);
            }
        }
Пример #3
0
        //查询用户
        public int QueryUsers(UserQueryConditions queryConditions, out List<UserViewResult> result, out int totalPage)
        {
            result = new List<UserViewResult>();

            using (var db = new HouseMarketEntities())
            {
                int currentPermission = (int)AuthenticationFunction.GetPermission();
                int totalCount = 0;
                totalPage = 0;

                var queryProperties = queryConditions.GetType().GetProperties();
                string orderByName = queryConditions.orderBy;
                string orderByDescendingName = queryConditions.orderByDescending;

                if (!AuthenticationFunction.IsAuthenticated || !AuthenticationFunction.HasPermission(Permissions.User))
                {
                    return (int)Errors.UserErrors.NoPermission;
                }
                else if (AuthenticationFunction.IsUser && AuthenticationFunction.CurrentUserID != queryConditions.UserID)
                {
                    return (int)Errors.UserErrors.NoPermission;
                }

                var query = db.Users.AsQueryable();
                query = SetQueryOnly(query, queryConditions, out totalCount);

                int removeCount = query.Count(u => u.Permission < currentPermission);
                totalCount -= removeCount;

                query = query.Where(u => u.Permission >= currentPermission);

                if (!string.IsNullOrEmpty(orderByName))
                {
                    var orderPropertyName = queryProperties.FirstOrDefault(p => p.Name.ToLower() == orderByName.ToLower()).Name;
                    var orderPropertyType = queryProperties.FirstOrDefault(p => p.Name == orderPropertyName).PropertyType;

                    query = SetOrder(query, orderPropertyName, orderPropertyType, false);
                }
                else if (!string.IsNullOrEmpty(orderByDescendingName))
                {
                    var orderPropertyName = queryProperties.FirstOrDefault(p => p.Name.ToLower() == orderByDescendingName.ToLower()).Name;
                    var orderPropertyType = queryProperties.FirstOrDefault(p => p.Name == orderPropertyName).PropertyType;

                    query = SetOrder(query, orderPropertyName, orderPropertyType, true);
                }

                if (!string.IsNullOrEmpty(orderByName) || !string.IsNullOrEmpty(orderByDescendingName))
                {
                    int? pageIndex = (int?)queryProperties.FirstOrDefault(p => p.Name == "pageIndex").GetValue(queryConditions);
                    int? pageSize = (int?)queryProperties.FirstOrDefault(p => p.Name == "pageSize").GetValue(queryConditions);

                    query = SetPagination(query, pageIndex, pageSize, out totalPage);
                    totalPage = (totalCount + queryConditions.pageSize.Value - 1) / queryConditions.pageSize.Value;
                }

                List<User> entityResult = query.ToList();
                PropertyFunction.CopyEntities(entityResult, result);

                return 0;
            }
        }