Beispiel #1
0
        public ResultDto <ClaimsIdentity> WxLogin(string code)
        {
            var result = new ResultDto <ClaimsIdentity>();
            var appid  = "wx109fc14b4956fc70";
            var secret = "a8e7f19d69cbde0272fd866fe7392874";
            var url    = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code";

            url = string.Format(url, appid, secret, code);
            var client    = new HttpClient();
            var json      = client.GetStringAsync(url).Result;
            var wxAuthDto = Serialize.FromJson <WxAuthDto>(json);

            if (wxAuthDto.errcode.HasValue && !string.IsNullOrEmpty(wxAuthDto.errmsg))
            {
                result.Result  = false;
                result.Message = $"{wxAuthDto.errcode}:{wxAuthDto.errmsg}";
                return(result);
            }



            var user = _defaultRepository.FirstOrDefault <KuserEntity>(new { WxOpenId = wxAuthDto.openid });

            if (user != null)
            {
                user.WxSessionKey = wxAuthDto.session_key;
                user.AuditLastModification(_kardSession.UserId.Value);
                var updateUserResultDto = _defaultRepository.Update(user);
                if (!updateUserResultDto.Result)
                {
                    result.Result  = false;
                    result.Message = $"用户{user.NickName}被带晕";
                    return(result);
                }
            }
            else
            {
                user              = new KuserEntity();
                user.WxOpenId     = wxAuthDto.openid;
                user.WxSessionKey = wxAuthDto.session_key;
                user.UserType     = "WeChatApp";
                user.KroleId      = 1;
                user.AuditCreation(_kardSession.UserId.Value);
                var createResult = _defaultRepository.CreateAndGetId <KuserEntity, long>(user);
                if (!createResult.Result)
                {
                    result.Result  = false;
                    result.Message = $"用户{user.NickName}被迷路";
                    return(result);
                }
            }



            result.Result  = true;
            result.Message = "login成功";
            result.Data    = AddSessionData(user, WeChatAppDefaults.AuthenticationScheme);

            return(result);
        }
Beispiel #2
0
        private KuserEntity GetUser(long?userId)
        {
            string      cacheKey    = $"user[{userId}]";
            KuserEntity kuserEntity = _memoryCache.GetOrCreate(cacheKey, (cacheEntry) =>
            {
                cacheEntry.SetAbsoluteExpiration(DateTime.Now.Date.AddDays(60));

                return(_defaultRepository.FirstOrDefault <KuserEntity, long>(_kardSession.UserId.Value));
            });

            return(kuserEntity);
        }
Beispiel #3
0
        private KuserEntity GetUser(long userId)
        {
            //string cacheKey = $"user[{userId}]";
            //KuserEntity kuserEntity = _memoryCache.GetOrCreate(cacheKey, (cacheEntry) =>
            //{
            //    cacheEntry.SetAbsoluteExpiration(DateTime.Now.Date.AddDays(60));

            //    return _defaultRepository.FirstOrDefault<KuserEntity>(userId);
            //});
            //return kuserEntity;

            return(_defaultRepository.FirstOrDefault <KuserEntity>(userId));
        }
Beispiel #4
0
        public IEnumerable <object> GetUserNews(long userId, int pageIndex, int pageSize, string orderBy)
        {
            var resultList = new List <object>();
            int pageStart  = ((pageIndex - 1) * pageSize);

            pageStart = pageStart > 0 ? (pageStart - 1) : pageStart;
            string followUserSql = "select BeConcernedUserId from kuserFans where CreatorUserId =@CreatorUserId ";
            var    followUsers   = _defaultRepository.Query <long>(followUserSql, new { CreatorUserId = userId }).ToList();

            followUsers.Add(userId);
            string sql = $@"select t.* from(
                                    select 'essay' as newsType,a.Id,a.CreationTime,a.Title as EssayTitle,a.PageUrl as EssayPageUrl,b.NickName,b.AvatarUrl from essay a join kuser b on a.CreatorUserId=b.id where a.IsPublish=1 and a.IsDeleted=0 and a.CreatorUserId in @FollowUsers 
                                    union
                                    select 'essayLike' as newsType,a.Id,a.CreationTime ,c.Title as EssayTitle,c.PageUrl as EssayPageUrl,b.NickName,b.AvatarUrl from essayLike a join kuser b on a.CreatorUserId=b.id join essay c on  a.EssayId=c.Id where c.CreatorUserId =@CreatorUserId 
                                    union
                                    select 'essayComment' as newsType,a.Id,a.CreationTime,c.Title as EssayTitle,c.PageUrl as EssayPageUrl,b.NickName,b.AvatarUrl from essayComment a join kuser b on a.CreatorUserId=b.id join essay c on  a.EssayId=c.Id where a.IsDeleted=0 and a.CreatorUserId <> @CreatorUserId and c.CreatorUserId = @CreatorUserId 
                                    union
                                    select 'kuserFans' as newsType,a.Id,a.CreationTime,'' as EssayTitle,'' as EssayPageUrl,b.NickName,b.AvatarUrl from kuserFans  a join kuser b on a.CreatorUserId=b.id where a.BeConcernedUserId =@CreatorUserId 
                                    union
                                    select 'kuserFollow' as newsType,a.Id,a.CreationTime,'' as EssayTitle,'' as EssayPageUrl,b.NickName,b.AvatarUrl from kuserFans a join kuser b on a.BeConcernedUserId=b.id  where a.CreatorUserId =@CreatorUserId 
                                    ) t
                                    order by {orderBy} limit @PageStart,@PageSize";

            var userNewsDtoList = _defaultRepository.ConnExecute(conn => conn.Query <UserNewsDto>(sql, new { FollowUsers = followUsers, CreatorUserId = userId, PageStart = pageStart, PageSize = pageSize })) ?? new List <UserNewsDto>();

            foreach (var dto in userNewsDtoList)
            {
                object info = null;
                switch (dto.NewsType)
                {
                case "essay":
                    info = _defaultRepository.ConnExecute(conn => conn.QueryFirstOrDefault <EssayEntity>("select Id,Title,SubContent,Location, Category, CoverMediaType, CoverPath, CoverExtension,CreationTime from essay where id=@Id", new { Id = dto.Id }));
                    break;

                case "essayLike": info = _defaultRepository.FirstOrDefault <EssayLikeEntity>(dto.Id); break;

                case "essayComment": info = _defaultRepository.FirstOrDefault <EssayCommentEntity>(dto.Id); break;

                case "kuserFans": info = _defaultRepository.FirstOrDefault <KuserFansEntity>(dto.Id); break;

                case "kuserFollow": info = _defaultRepository.FirstOrDefault <KuserFansEntity>(dto.Id); break;

                default: continue;
                }
                resultList.Add(new { Dto = dto, Info = info });
            }

            return(resultList);
        }
Beispiel #5
0
        public async Task <ResultDto> Update(EssayEntity essayEntity, EssayContentEntity essayContentEntity, IEnumerable <TagEntity> tagList)
        {
            var resultDto = new ResultDto();
            var userId    = _kardSession.UserId.Value;

            if (essayEntity.Id <= 0)
            {
                resultDto.Result  = false;
                resultDto.Message = "修改失败,Id为空";
                return(resultDto);
            }

            var entity = _defaultRepository.FirstOrDefault <EssayEntity>(essayEntity.Id);

            if (entity == null)
            {
                resultDto.Result  = false;
                resultDto.Message = "修改失败,未找到文章";
                return(resultDto);
            }

            if (entity.CreatorUserId != userId)
            {
                resultDto.Result  = false;
                resultDto.Message = "修改失败,这不是您的文章";
                return(resultDto);
            }

            entity.Title          = essayEntity.Title;
            entity.CoverMediaType = essayEntity.CoverMediaType;
            entity.CoverPath      = essayEntity.CoverPath;
            entity.CoverExtension = essayEntity.CoverExtension;
            entity.Category       = essayEntity.Category;
            entity.IsPublish      = essayEntity.IsPublish;
            entity.Score          = essayEntity.Score > 0 ? essayEntity.Score : 6m;

            entity.SubContent = Utils.ContentRegex.Replace(essayContentEntity.Content, "");
            if (entity.SubContent.Length > 100)
            {
                entity.SubContent = entity.SubContent.Remove(100) + "...";
            }
            ;


            entity.Location = Utils.GetCity(HttpContext, _memoryCache);

            entity.AuditLastModification(userId);
            tagList.AuditCreation(userId);

            var result = _repositoryFactory.GetRepository <IEssayRepository>().UpdateEssay(entity, essayContentEntity, tagList);

            if (result)
            {
                var createHtmlResult = await CreateHtml(entity.Id, entity.PageUrl);

                _baiduspiderAppService.Baiduspider(entity.PageUrl);

                result = createHtmlResult.Result;
            }



            if (result)
            {
                resultDto.Result  = true;
                resultDto.Message = "修改成功";
                string cacheKey = $"homeCover[{DateTime.Now.ToString("yyyyMMdd")}]";
                _memoryCache.Remove(cacheKey);
            }
            else
            {
                resultDto.Result  = false;
                resultDto.Message = "修改失败";
            }
            return(await Task.FromResult(resultDto));
        }