/// <summary> /// Update team data. /// </summary> /// <param name="team">Team's data.</param> /// <returns></returns> public Task <string> UpdateTeam(Infrastructure.DTO.TeamDTO team) { return(Task.Run(() => { if (team == null) { return ResponseFail.Json("", "数据异常,无法更新"); } var teamObj = context.Teams.ToList().Find(t => t.Id == team.Id); if (teamObj == null) { return ResponseFail.NoContent(); } teamObj.TeamName = team.TeamName; teamObj.TeamDescription = team.TeamDescription; try { context.SaveChanges(); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } return ResponseSuccess.Json(""); })); }
/// <summary> /// Update user's data. /// </summary> /// <param name="dto">User's data.</param> /// <returns></returns> public Task <string> UpdateUser(Infrastructure.DTO.UserDTO dto) { return(Task.Run(() => { var user = context.Users.ToList().Find(t => t.Id == dto.Id); if (user == null) { return ResponseFail.Json("", "无此用户,操作失败", 204); } else if (string.IsNullOrEmpty(dto.Name)) { return ResponseFail.ExpectationFailed(message: "昵称/姓名不能为空"); } user.Name = dto.Name; try { context.SaveChanges(); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } return ResponseSuccess.Json(); })); }
/// <summary> /// Get teams data by page index and page size. /// </summary> /// <param name="page">Query page index.First is 1.</param> /// <param name="pageSize">Data size per page.</param> /// <returns></returns> public Task <string> GetTeams(int page, int pageSize = 30) { return(Task.Run(() => { if (page < 1) { return ResponseFail.ExpectationFailed(message: "页数应该大于等于1"); } if (pageSize < 1) { return ResponseFail.ExpectationFailed(message: "每页数量应该为正数"); } try { var excludePre = context.Teams.ToList().Take((page - 1) * pageSize); var result = context.Teams.ToList().Except(excludePre).Take(pageSize); return ResponseSuccess.Json(result); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } })); }
/// <summary> /// Get team data by team id. /// </summary> /// <param name="teamId">Team's id.</param> /// <returns></returns> public Task <string> GetTeam(int teamId) { return(Task.Run(() => { var result = from team in context.Teams.ToList() join teamuser in context.TeamWithUsers.ToList() on team.Id equals teamuser.TeamId join user in context.Users.ToList() on teamuser.UserId equals user.Id where team.Id == teamId && teamuser.UserRole == 1 select new TeamDTO { Id = team.Id, TeamName = team.TeamName, TeamDescription = team.TeamDescription, CreatorId = teamuser.UserId, CreatorName = user.Name }; if (result.Count() == 0) { return ResponseFail.NoContent(); } if (result.Count() > 1) { return ResponseFail.ExpectationFailed(message: "数据异常,非唯一,无法操作"); } return ResponseSuccess.Json(result.First()); })); }
/// <summary> /// Update user data in the team. /// </summary> /// <param name="dto">Data to update.</param> /// <returns></returns> public Task <string> UpdateUser(Infrastructure.DTO.UserTeamDTO dto) { return(Task.Run(() => { try { var teamWithUser = context.TeamWithUsers.ToList().Find(t => t.TeamId == dto.TeamId && t.UserId == dto.UserId); if (teamWithUser == null) { return ResponseFail.NoContent(); } var role = context.UserRoles.Where(t => t.Id == dto.RoleId); if (role.Count() == 0) { return ResponseFail.ExpectationFailed(message: "用户角色值异常"); } teamWithUser.UserRole = dto.RoleId; context.SaveChanges(); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } return ResponseSuccess.Json(); })); }
/// <summary> /// Get team users by team id. /// </summary> /// <param name="teamId">Team id.</param> /// <returns></returns> public Task <string> GetUsers(int teamId) { return(Task.Run(() => { var result = from teamWithUsers in context.TeamWithUsers.ToList() join teams in context.Teams.ToList() on teamWithUsers.TeamId equals teams.Id join users in context.Users.ToList() on teamWithUsers.UserId equals users.Id join roles in context.UserRoles.ToList() on teamWithUsers.UserRole equals roles.Id where teamWithUsers.TeamId == teamId select new UserTeamDTO { TeamId = teamId, TeamName = teams.TeamName, TeamDescription = teams.TeamDescription, UserId = users.Id, UserName = users.Name, RoleId = teamWithUsers.UserRole, RoleDescription = roles.RoleDescription }; if (result.Count() == 0) { return ResponseFail.NoContent(); } return ResponseSuccess.Json(result); })); }
/// <summary> /// Authorize fail. /// </summary> /// <param name="httpContext"></param> /// <returns></returns> private void Restrict(HttpActionContext httpContext) { httpContext.Response = new HttpResponseMessage(); httpContext.Response.StatusCode = HttpStatusCode.Unauthorized; httpContext.Response.Content = new StringContent(ResponseFail.Json("", "非授权用户,无权调用接口")); }
/// <summary> /// Get user data by user's id. /// </summary> /// <param name="userId">User's id.</param> /// <returns></returns> public Task <string> GetUser(int userId) { return(Task.Run(() => { var result = context.Users.ToList().Find(t => t.Id == userId); if (result == null) { return ResponseFail.Json("", "无此用户数据"); } return ResponseSuccess.Json(result); })); }
/// <summary> /// Create a new user data. /// </summary> /// <param name="dto">New user's data.</param> /// <returns></returns> public Task <string> CreateUser(Infrastructure.DTO.RegisteDTO register) { return(Task.Run(() => { if (register == null) { return ResponseFail.Json("", "注册信息未填写"); } else if (string.IsNullOrEmpty(register.UserName)) { return ResponseFail.Json("", "用户名未填写"); } else if (string.IsNullOrEmpty(register.Name)) { return ResponseFail.Json("", "昵称/真实姓名未填写"); } else if (string.IsNullOrEmpty(register.Password)) { return ResponseFail.Json("", "密码未填写"); } else if (register.Password != register.RePassword) { return ResponseFail.Json("", "两次密码填写不一致"); } else if (context.Users.ToList().Where(t => t.UserName == register.UserName).Count() > 0) { return ResponseFail.Json("", "用户名重复,请换一个"); } var user = new User() { UserName = register.UserName, Name = register.Name, Password = register.Password }; context.Users.Add(user); try { context.SaveChanges(); } catch (Exception e) { return ResponseFail.Json("", e.Message); } return ResponseSuccess.Json("注册成功,请登录"); })); }
public void TestResponseFail_Json() { string json = ResponseFail.Json("", "testerrormsg"); ResponseJson obj = JsonConvert.DeserializeObject <ResponseJson>(json); Assert.IsFalse(obj.Status); json = ResponseFail.Json("123", "testerrormsg", 401); ResponseJson <string> objStr = JsonConvert.DeserializeObject <ResponseJson <string> >(json); Assert.IsFalse(objStr.Status); Assert.AreEqual(objStr.Data, "123"); Assert.AreEqual(objStr.StatusCode, 401); }
/// <summary> /// User logout. /// </summary> /// <param name="authToken">User's authorized token.</param> /// <returns></returns> public Task <string> Logout(string authToken) { return(Task.Run(() => { if (UserLoginCache.ContainsKey(authToken)) { bool result = UserLoginCache.RemoveCache(authToken); return result ? ResponseSuccess.Json() : ResponseFail.Json("", "注销失败,请重试"); } else { return ResponseSuccess.Json(); } })); }
/// <summary> /// Get users by page index and page size. /// </summary> /// <param name="page">Query page index.First is 1.</param> /// <param name="pageSize">Data size per page.</param> /// <returns></returns> public Task <string> GetUsers(int page, int pageSize = 30) { return(Task.Run(() => { try { var excludePre = context.Users.ToList().Take((page - 1) * pageSize); var result = context.Users.ToList().Except(excludePre).Take(pageSize); return ResponseSuccess.Json(result); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } })); }
/// <summary> /// Create new team data. /// </summary> /// <param name="team">New team's data.</param> /// <returns></returns> public Task <string> CreateTeam(TeamDTO team) { return(Task.Run(() => { if (team == null) { return ResponseFail.Json("", "数据异常,无法创建组"); } Team teamObj = new Team() { TeamName = team.TeamName, TeamDescription = team.TeamDescription }; context.Teams.Add(teamObj); try { context.SaveChanges(); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } TeamWithUser teamWithUser = new TeamWithUser() { TeamId = teamObj.Id, UserId = team.CreatorId, UserRole = 1 }; context.TeamWithUsers.Add(teamWithUser); try { context.SaveChanges(); } catch (Exception e) { context.Teams.Remove(teamObj); context.SaveChanges(); return ResponseFail.ExpectationFailed(message: e.Message); } return ResponseSuccess.Json(team); })); }
/// <summary> /// Add user into the team. /// </summary> /// <param name="userId">User id.</param> /// <param name="teamId">Team id.</param> /// <returns></returns> public Task <string> AddUser(int userId, int teamId) { return(Task.Run(() => { var user = context.Users.ToList().Find(t => t.Id == userId); if (user == null) { return ResponseFail.Json("", "无相应用户,操作失败"); } var team = context.TeamWithUsers.ToList().Where(t => t.TeamId == teamId); if (team == null) { return ResponseFail.Json("", "无相应组,操作失败"); } if (team.Count() == 0) { return ResponseFail.Json("", "无相应组,操作失败"); } var teamUser = new TeamWithUser() { TeamId = teamId, UserId = userId, UserRole = 3 }; context.TeamWithUsers.Add(teamUser); try { context.SaveChanges(); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } return ResponseSuccess.Json(); })); }
/// <summary> /// Delete team data by team's id. /// </summary> /// <param name="teamId">Team's id.</param> /// <returns></returns> public Task <string> DeleteTeam(int teamId) { return(Task.Run(() => { var team = context.Teams.ToList().Find(t => t.Id == teamId); if (team == null) { return ResponseFail.NoContent(""); } context.Teams.Remove(team); try { context.SaveChanges(); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } return ResponseSuccess.Json(); })); }
/// <summary> /// Delete user from team. /// </summary> /// <param name="userId">User id.</param> /// <param name="teamId">Team id.</param> /// <returns></returns> public Task <string> DeleteUser(int userId, int teamId) { return(Task.Run(() => { try { var teamWithUser = context.TeamWithUsers.ToList().Find(t => t.TeamId == teamId && t.UserId == userId); if (teamWithUser == null) { return ResponseFail.NoContent(); } context.TeamWithUsers.Remove(teamWithUser); context.SaveChanges(); } catch (Exception e) { return ResponseFail.ExpectationFailed(message: e.Message); } return ResponseSuccess.Json(); })); }
/// <summary> /// Delete user by user id. /// </summary> /// <param name="userId">User's id.</param> /// <returns></returns> public Task <string> DeleteUser(int userId) { return(Task.Run(() => { var user = context.Users.ToList().Find(t => t.Id == userId); if (user == null) { return ResponseFail.Json("", "无此用户,操作失败", 204); } context.Users.Remove(user); try { context.SaveChanges(); } catch (Exception e) { return ResponseFail.Json("", e.Message); } return ResponseSuccess.Json(); })); }
/// <summary> /// User login. /// </summary> /// <param name="dto">Login information.</param> /// <returns></returns> public Task <string> Login(LoginDTO login) { return(Task.Run(() => { if (login == null) { return ResponseFail.Json("", "用户名和密码为空"); } else if (!string.IsNullOrEmpty(login.AuthToken)) { LoginUserInfo userInfo = UserLoginCache.FindUser(login.AuthToken); if (userInfo.ID == 0) { return ResponseFail.Json("[AuthToken]无效"); } if (!userInfo.OutTime()) { return ResponseSuccess.Json(UserLoginCache.FindUser(login.AuthToken)); } } else if (string.IsNullOrEmpty(login.UserName)) { return ResponseFail.Json("", "用户名为空"); } else if (string.IsNullOrEmpty(login.Password)) { return ResponseFail.Json("", "密码为空"); } else if (string.IsNullOrEmpty(login.TimeStamp)) { return ResponseFail.Json("", "参数异常,请检查[TimeStamp]"); } else if (!Utils.CompareMD5(login.Token, string.Format("{0}-{1}", login.UserName, login.TimeStamp))) { return ResponseFail.Json("", "参数异常,请检查[Token]"); } User user = context.Users.ToList().Find(t => t.UserName == login.UserName); if (user == null) { return CheckLoginInfo(); } else if (string.IsNullOrEmpty(user.Password)) { return ResponseFail.Json("", "未设置密码"); } else { if (user.Password == login.Password) { string token = Utils.MD5(string.Format("{0}-{1}-{2}", user.UserName, login.TimeStamp, DateTime.Now.ToUniversalTime().ToString())); UserLoginCache.AddUserCache(token, user); return ResponseSuccess.Json(UserLoginCache.FindUser(token)); } else { return CheckLoginInfo(); } } })); }
/// <summary> /// Error message for login. /// </summary> /// <returns></returns> private string CheckLoginInfo() { return(ResponseFail.Json("", "用户名或密码错误")); }