Example #1
0
        [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 }));
        }
Example #2
0
        //需要用户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());
        }
Example #3
0
        [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("用户或者密码错误!"));
        }
Example #5
0
        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));
        }
Example #6
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));
        }
Example #7
0
        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 }));
        }