package pub.developers.forum.portal.support;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
import pub.developers.forum.api.model.PageRequestModel;
import pub.developers.forum.api.model.PageResponseModel;
import pub.developers.forum.api.model.ResultModel;
import pub.developers.forum.api.response.article.ArticleInfoResponse;
import pub.developers.forum.api.response.article.ArticleUserPageResponse;
import pub.developers.forum.api.response.config.ConfigResponse;
import pub.developers.forum.api.response.faq.FaqInfoResponse;
import pub.developers.forum.api.response.faq.FaqUserPageResponse;
import pub.developers.forum.api.response.tag.TagQueryResponse;
import pub.developers.forum.api.service.TagApiService;
import pub.developers.forum.api.vo.PostsVO;
import pub.developers.forum.common.constant.Constant;
import pub.developers.forum.common.enums.ConfigTypeEn;
import pub.developers.forum.common.support.GlobalViewConfig;
import pub.developers.forum.common.support.SafesUtil;
import pub.developers.forum.common.support.StringUtil;
import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author Qiangqiang.Bian
* @create 2020/10/25
* @desc
**/
@Data
@ConfigurationProperties(prefix = "custom-config.upload-file.qiniu")
@Component
public class WebUtil {
@Resource
private GlobalViewConfig globalViewConfig;
@Resource
private TagApiService tagApiService;
private String accessDomain;
public static String cookieGetSid(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
if (!ObjectUtils.isEmpty(cookies)) {
for (Cookie cookie : cookies) {
if (WebConst.COOKIE_SID_KEY.equals(cookie.getName()) && !ObjectUtils.isEmpty(cookie.getValue())) {
return cookie.getValue();
}
}
}
String headerSid = request.getHeader(Constant.REQUEST_HEADER_TOKEN_KEY);
if (!ObjectUtils.isEmpty(headerSid)) {
return headerSid;
}
String querySid = request.getParameter(Constant.REQUEST_QUERY_TOKEN_KEY);
if (!ObjectUtils.isEmpty(querySid)) {
return querySid;
}
return null;
}
public static void cookieAddSid(HttpServletResponse response, String sid) {
Cookie cookie = new Cookie(WebConst.COOKIE_SID_KEY, sid);
cookie.setPath("/");
response.addCookie(cookie);
}
public static void cookieDelSid(HttpServletResponse response) {
Cookie cookie = new Cookie(WebConst.COOKIE_SID_KEY, null);
cookie.setPath("/");
cookie.setMaxAge(0);
response.addCookie(cookie);
}
public static String requestIp(HttpServletRequest request) {
String ret = request.getHeader("X-forwarded-for");
if(ObjectUtils.isEmpty(ret)) {
ret = request.getHeader("X-Real-IP");
}
return ObjectUtils.isEmpty(ret) ? request.getRemoteAddr() : ret.split(",")[0];
}
public static String requestUa(HttpServletRequest request) {
String value = request.getHeader("User-Agent");
if (ObjectUtils.isEmpty(value)) {
return "";
}
return value;
}
public List<Map<String, Object>> relatedPosts(Set<Long> tagIds) {
List<Map<String, Object>> res = new ArrayList<>();
PageRequestModel<Set<Long>> pageRequestModel = new PageRequestModel<>();
pageRequestModel.setPageNo(1);
pageRequestModel.setPageSize(globalViewConfig.getPageSize());
pageRequestModel.setFilter(tagIds);
ResultModel<PageResponseModel<PostsVO>> resultModel = tagApiService.pagePostsByTagIds(pageRequestModel);
if (resultModel.getSuccess() && !ObjectUtils.isEmpty(resultModel.getData())) {
SafesUtil.ofList(resultModel.getData().getList()).forEach(response -> {
Map<String, Object> posts = new HashMap<>();
posts.put("id", response.getId());
posts.put("category", response.getCategory());
posts.put("categoryDesc", response.getCategoryDesc());
posts.put("title", response.getTitle());
posts.put("createdAt", dateShow(response.getCreateAt()));
posts.put("views", response.getViews());
posts.put("approvals", response.getApprovals());
posts.put("comments", response.getComments());
posts.put("authorId", response.getAuthorId());
posts.put("authorHeadImg", response.getAuthorAvatar());
posts.put("authorName", response.getAuthorNickname());
List<Map<String, Object>> tagList = new ArrayList<>();
SafesUtil.ofList(response.getTags()).forEach(tagVO -> {
Map<String, Object> tag = new HashMap<>();
tag.put("id", tagVO.getId());
tag.put("name", tagVO.getName());
tagList.add(tag);
});
posts.put("tagList", tagList);
res.add(posts);
});
}
return res;
}
public List<Map<String, Object>> usedTags() {
List<Map<String, Object>> res = new ArrayList<>();
ResultModel<List<TagQueryResponse>> resultModel = tagApiService.queryAllRef();
if (!resultModel.getSuccess()) {
return res;
}
SafesUtil.ofList(resultModel.getData()).forEach(tagQueryResponse -> {
Map<String, Object> tag = new HashMap<>();
tag.put("name", tagQueryResponse.getName());
tag.put("color", StringUtil.getColor(tagQueryResponse.getName()));
res.add(tag);
});
return res;
}
public Map<String, Object> buildPostsInfo(ArticleInfoResponse articleInfoResponse) {
Map<String, Object> posts = new HashMap<>();
posts.put("title", articleInfoResponse.getTitle());
posts.put("authorName", articleInfoResponse.getAuthorNickname());
posts.put("authorId", articleInfoResponse.getAuthorId());
posts.put("authorAvatar", articleInfoResponse.getAuthorAvatar());
posts.put("createAt", dateShow(articleInfoResponse.getCreateAt()));
posts.put("updateAt", dateShow(articleInfoResponse.getUpdateAt()));
posts.put("views", articleInfoResponse.getViews());
posts.put("approvals", articleInfoResponse.getApprovals());
posts.put("comments", articleInfoResponse.getComments());
posts.put("content", htmlContent(articleInfoResponse.getHtmlContent()));
posts.put("id", articleInfoResponse.getId());
posts.put("tags", articleInfoResponse.getTags());
return posts;
}
public Map<String, Object> buildPostsInfo(FaqInfoResponse faqInfoResponse) {
Map<String, Object> posts = new HashMap<>();
posts.put("title", faqInfoResponse.getTitle());
posts.put("authorName", faqInfoResponse.getAuthorNickname());
posts.put("authorId", faqInfoResponse.getAuthorId());
posts.put("authorAvatar", faqInfoResponse.getAuthorAvatar());
posts.put("createAt", dateShow(faqInfoResponse.getCreateAt()));
posts.put("updateAt", dateShow(faqInfoResponse.getUpdateAt()));
posts.put("views", faqInfoResponse.getViews());
posts.put("approvals", faqInfoResponse.getApprovals());
posts.put("comments", faqInfoResponse.getComments());
posts.put("content", htmlContent(faqInfoResponse.getHtmlContent()
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Java(spring boot) 实现的现代化社区项目源码 (441个子文件)
.babelrc 230B
mvnw.cmd 6KB
app.63cd6433937123762a92dab261d03ba3.css 292KB
app.63cd6433937123762a92dab261d03ba2.css 292KB
app.79c430ac847b714d59da93e4d940cb4a.css 289KB
bootstrap.min.css 152KB
toastr.min.css 5KB
.DS_Store 6KB
.DS_Store 6KB
.editorconfig 147B
fontello.e73a064.eot 15KB
fontello.e73a064.eot 15KB
.eslintignore 30B
.gitignore 901B
.gitignore 154B
.gitkeep 0B
user.html 12KB
header.html 11KB
footer.html 10KB
navbar.html 8KB
comment-list.html 8KB
article-list.html 5KB
posts-info.html 4KB
message.html 4KB
posts-script.html 3KB
faq-info.html 3KB
article-info.html 3KB
index.html 3KB
posts-style.html 3KB
related-posts.html 3KB
page.html 2KB
interest.html 2KB
carousel.html 2KB
faq-list.html 2KB
posts-card.html 1KB
container.html 1KB
users-card.html 1KB
tag-info.html 1KB
error.html 920B
search.html 866B
used-tags.html 721B
type-btns.html 658B
img-card.html 649B
vue-admin.html 561B
vue-index.html 519B
index.html 271B
custom-empty.html 249B
WebUtil.java 19KB
ArticleManager.java 12KB
UserManager.java 11KB
UserController.java 9KB
IndexController.java 9KB
FaqManager.java 8KB
PostsTransfer.java 8KB
UserRepositoryImpl.java 7KB
ArticleTransfer.java 6KB
FaqListController.java 6KB
DbCacheServiceImpl.java 6KB
ArticleInfoController.java 6KB
TagRepositoryImpl.java 6KB
FaqInfoController.java 6KB
MessageController.java 6KB
UserApiServiceImpl.java 6KB
ArticleRepositoryImpl.java 5KB
FaqRepositoryImpl.java 5KB
InterestController.java 5KB
UserTransfer.java 5KB
FaqTransfer.java 5KB
UserRestController.java 5KB
ArticleTypeRepositoryImpl.java 5KB
TagManager.java 5KB
CommentManager.java 5KB
ArticleApiServiceImpl.java 4KB
MessageManager.java 4KB
AdminRestArticleController.java 4KB
MessageRepositoryImpl.java 4KB
GithubManager.java 4KB
TagController.java 4KB
UserTransfer.java 4KB
AbstractPostsManager.java 4KB
Mail163ServiceImpl.java 4KB
EventBus.java 4KB
GlobalViewInterceptor.java 3KB
FileRestController.java 3KB
MessageCommentCreateListener.java 3KB
AbstractPostsRepository.java 3KB
GithubServiceImpl.java 3KB
StringUtil.java 3KB
TagApiServiceImpl.java 3KB
ErrorCodeEn.java 3KB
ConfigManager.java 3KB
SearchController.java 3KB
ExceptionHandlerAndLogAspect.java 3KB
FaqApiServiceImpl.java 3KB
OptLogRepositoryImpl.java 3KB
CommentTransfer.java 3KB
AdminRestUserController.java 3KB
PostsTransfer.java 2KB
ConfigTransfer.java 2KB
PostsRepositoryImpl.java 2KB
共 441 条
- 1
- 2
- 3
- 4
- 5
资源评论
持续航行
- 粉丝: 4
- 资源: 84
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- NVIDIA驱动、CUDA和Pytorch及其依赖
- html动态爱心代码一(附源码)
- c40539bc-071a-486c-9d52-9d0c18d62dac 4.html
- 基于物理的非视域成像(NLOS)算法,利用了nerf+python源码+文档说明
- yuluer知更鸟.7z(1).001
- python课程设计-基于tensorflow实现的图文生成程序,数据集flickr30k-images+源代码+文档说明+截图
- python作业-基于Flickr30k数据集实现图像文本跨模态搜索python源码+数据集+测试界面+项目说明(高分课程设计)
- 基于Qt实现医院信息管理系统c++源码+文档说明+数据库(期末大作业)
- 基于python实现的医院信息管理系统完整源码+sql数据库+详细注释(高分课程设计)
- 基于python的眼底图像视杯视盘分割项目源码+文档说明+截图演示+详细注释(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功