public async Task <ActionResult <ResponseWrapper> > GetShareDataAsync([FromQuery] string s, [FromQuery] string t, [FromQuery] string k, [FromQuery] bool c, [FromQuery] PagingParameters pagingParameters) { PagedList <PostViewModel> posts = null; var descryptedStr = Encryptor.DecryptDES(s, _decryptKey, _decryptKey); if (descryptedStr != s) { var shareInfo = JsonConvert.DeserializeObject <ShareInfo>(descryptedStr); _logger.LogInformation("GetShareDataAsync: {@ShareInfo}", shareInfo); // 优先搜索加密对象中的分类,若其无值,则搜索url参数中的分类 // 其场景是:客户端可以分享三种类型,1. 单个帖子,2. 帖子分类,3. 用户的全部帖子 // 当分享的是第三种时,加密对象中只有用户id(帖子id和帖子分类为空) // 在网页上查看分享时,对与第三种可以选择帖子分类来筛选,选择的分类通过url参数privateTag传上来 if (string.IsNullOrWhiteSpace(shareInfo.PrivateTag)) { shareInfo.PrivateTag = t; } if (shareInfo.UserId != Guid.Empty && CheckShareTime(shareInfo.Timestamp)) { if (shareInfo.PostId != Guid.Empty) { _logger.LogInformation("GetShareDataAsync: single post"); // 统计访问次数 if (c) { await UpdateUserShareAsync(shareInfo.UserId, shareInfo.PostId, null); } // get share data and return var post = await _postQueries.GetSharedPostAsync(shareInfo.PostId, shareInfo.UserId); posts = new PagedList <PostViewModel>(new List <PostViewModel> { post }, 1, new PagingParameters { PageNumber = 1, PageSize = 1 }); return(Ok(PagedResponseWrapper.CreateOkPagedResponseWrapper(posts))); } else if (!string.IsNullOrWhiteSpace(shareInfo.PrivateTag)) { _logger.LogInformation("GetShareDataAsync: tag posts"); // 统计访问次数 if (c) { await UpdateUserShareAsync(shareInfo.UserId, null, shareInfo.PrivateTag); } // get share data and return posts = await _postQueries.GetSharedPostsAsync(shareInfo.PrivateTag, shareInfo.UserId, k, pagingParameters); return(Ok(PagedResponseWrapper.CreateOkPagedResponseWrapper(posts))); } else { _logger.LogInformation("GetShareDataAsync: user posts"); // 统计访问次数 if (c) { await UpdateUserShareAsync(shareInfo.UserId, null, null); } // get share data and return posts = await _postQueries.GetSharedPostsAsync(shareInfo.UserId, k, pagingParameters); return(Ok(PagedResponseWrapper.CreateOkPagedResponseWrapper(posts))); } } } return(new ObjectResult(ResponseWrapper.CreateErrorResponseWrapper((StatusCode)HttpStatusCode.BadRequest, "分享的帖子不存在或已过期"))); }