[HttpPost]//添加主题 public async Task <Result> AddDiscuss(addDiscussModel myModel) { int plateId = myModel.plateId; List <int> Ids = myModel.Ids; discuss data = myModel.data; if (plateId == 0) { return(Result.Error()); } var plateData = await _plateBll.GetEntities(u => u.id == plateId).Include(u => u.discusses).ThenInclude(u => u.user).Include(u => u.discusses).ThenInclude(u => u.labels).FirstOrDefaultAsync(); data.time = DateTime.Now; data.user = await _userBll.GetEntities(u => u.id == _user.id).FirstOrDefaultAsync(); data.labels = await _labelBll.GetEntities(u => Ids.Contains(u.id)).ToListAsync(); plateData.discusses.Add(data); _plateBll.Update(plateData); //注意,这里经验可以从redis中获取,现在先设置一个1定值 int level = await _user_extraBll.UpdateExperience(data.user.id, 1, false); return(Result.Success().SetData(new { data.id, level })); }
//需要用户id和主题id,将这个标签归属与这个用户 public async Task <Result> AddLabelByUserId(label myLabel) { myLabel.user = await _userBll.GetEntities(u => u.id == _user.id).FirstOrDefaultAsync(); _labelBll.Add(myLabel); return(Result.Success()); }
[HttpPost]//验证登录 public async Task <Result> login(user myUser) { var data = await _userBll.GetEntities(u => u.username == myUser.username && u.is_delete == (short)ViewModel.Enum.DelFlagEnum.Normal).Include(u => u.user_extra).FirstOrDefaultAsync(); if (data != null) { if (data.password == myUser.password) { //HttpContext.Session.SetString("loginId", JsonHelper.ToString(_info_user)); _logger.LogInformation("登录成功!"); //通过查询权限,把所有权限加入进令牌中 List <Claim> claims = new List <Claim>(); claims.Add(new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}")); claims.Add(new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddMinutes(30)).ToUnixTimeSeconds()}")); claims.Add(new Claim(ClaimTypes.Name, data.username)); claims.Add(new Claim("Id", data.id.ToString())); var actions = await _userBll.getActionByUserId(data.id); foreach (var k in actions) { claims.Add(new Claim("action", k.action_name)); } var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(JwtConst.SecurityKey)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: JwtConst.Domain, audience: JwtConst.Domain, claims: claims, expires: DateTime.Now.AddMinutes(30), signingCredentials: creds); _logger.LogInformation("登录成功!"); var tokenData = new JwtSecurityTokenHandler().WriteToken(token); return(Result.Success("登录成功!").SetData(new { token = tokenData, user = new { id = data.id, username = data.username, level = data.user_extra.level, icon = data.icon } })); } } _logger.LogInformation("登录失败!"); return(Result.Error("登入失败,用户名或者密码错误!")); }
[HttpPost]//验证登录 public async Task <Result> login(user _user) { var data = await _userBll.GetEntities(u => u.user_name == _user.user_name).AsNoTracking().FirstOrDefaultAsync(); if (data != null) { if (data.password == _user.password) { HttpContext.Session.SetString("login", JsonHelper.ToString(data)); _logger.LogInformation(_user.user_name + "登录成功!"); return(Result.Success().SetData(data)); } } _logger.LogInformation(_user.user_name + "登录失败!"); return(Result.Error("用户或者密码错误!")); }
public async Task <Result> Effectiveness(char answer)//效验答案 { var myQuestion = (question)(await GetQuestion()).data; if (myQuestion.answer == answer) { var myUser = await _userBll.GetEntities(u => u.Id == loginId).FirstOrDefaultAsync(); myUser.integral += 1; if (_userBll.Update(myUser)) { HttpContext.Session.SetString("login", JsonHelper.ToString(myUser));//更新session //user的积分添加1 return(Result.Success().SetData(1)); } } return(Result.Success().SetData(0)); }
[HttpGet]//得到用户所具有的特殊权限 public async Task <Result> getSpecialAction(int userId) { var data = await _userBll.GetEntities(u => u.id == userId).Include(u => u.actions).FirstOrDefaultAsync(); var mydata = (from u in data.actions where u.is_delete == (short)ViewModel.Enum.DelFlagEnum.Normal select new { u.id, u.action_name }).ToList(); return(Result.Success().SetData(mydata)); }
public async Task <Result> AddComment(comment myComment, int discussId) { if (discussId == 0) { return(Result.Error()); } myComment.time = DateTime.Now; myComment.user = await _userBll.GetEntities(u => u.id == _user.id).FirstOrDefaultAsync(); var discussData = await _discussBll.GetEntities(u => u.id == discussId).Include(u => u.comments).FirstOrDefaultAsync(); discussData.comments.Add(myComment); _discussBll.Update(discussData); //注意,这里经验可以从redis中获取,现在先设置一个1定值 int level = await _user_extraBll.UpdateExperience(myComment.user.id, 1, false); return(Result.Success().SetData(new { level })); }