/// <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(); }
/// <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); } }
//查询用户 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; } }