diff --git a/server/like-front/src/main/java/com/mdd/front/LikeFrontInterceptor.java b/server/like-front/src/main/java/com/mdd/front/LikeFrontInterceptor.java index 2bba32e1..260f4040 100644 --- a/server/like-front/src/main/java/com/mdd/front/LikeFrontInterceptor.java +++ b/server/like-front/src/main/java/com/mdd/front/LikeFrontInterceptor.java @@ -8,6 +8,7 @@ import com.mdd.common.entity.user.User; import com.mdd.common.enums.HttpEnum; import com.mdd.common.mapper.user.UserMapper; import com.mdd.common.utils.RedisUtil; +import com.mdd.common.utils.StringUtil; import com.mdd.front.config.FrontConfig; import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; @@ -45,13 +46,21 @@ public class LikeFrontInterceptor implements HandlerInterceptor { } // 免登录接口 + String token = request.getHeader("token"); List notLoginUri = Arrays.asList(FrontConfig.notLoginUri); if (notLoginUri.contains(request.getRequestURI())) { + if (StringUtil.isNotEmpty(token)) { + Object uid = RedisUtil.get(token); + if (uid != null) { + Integer userId = Integer.parseInt(uid.toString()); + LikeFrontThreadLocal.put("userId", userId); + } + } return HandlerInterceptor.super.preHandle(request, response, handler); } // Token是否为空 - String token = request.getHeader("token"); + if (StringUtils.isBlank(token)) { AjaxResult result = AjaxResult.failed(HttpEnum.TOKEN_EMPTY.getCode(), HttpEnum.TOKEN_EMPTY.getMsg()); response.getWriter().print(JSON.toJSONString(result)); diff --git a/server/like-front/src/main/java/com/mdd/front/LikeFrontThreadLocal.java b/server/like-front/src/main/java/com/mdd/front/LikeFrontThreadLocal.java index 0a2c6855..5643bdb3 100644 --- a/server/like-front/src/main/java/com/mdd/front/LikeFrontThreadLocal.java +++ b/server/like-front/src/main/java/com/mdd/front/LikeFrontThreadLocal.java @@ -1,6 +1,7 @@ package com.mdd.front; import java.util.LinkedHashMap; +import java.util.Map; public class LikeFrontThreadLocal { @@ -31,18 +32,22 @@ public class LikeFrontThreadLocal { * 获取本地线程 */ public static Object get(String key) { - return MY_LOCAL.get().getOrDefault(key, ""); + Map map = MY_LOCAL.get(); + if (map == null) { + return null; + } + return map.getOrDefault(key, ""); } /** * 获取用户ID */ public static Integer getUserId() { - String adminId = LikeFrontThreadLocal.get("userId").toString(); - if (adminId.equals("")) { + Object adminId = LikeFrontThreadLocal.get("userId"); + if (adminId == null || adminId.toString().equals("")) { return 0; } - return Integer.parseInt(adminId); + return Integer.parseInt(adminId.toString()); } /** diff --git a/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java b/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java index 1c5c4d52..454815c5 100644 --- a/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java +++ b/server/like-front/src/main/java/com/mdd/front/controller/ArticleController.java @@ -3,6 +3,7 @@ package com.mdd.front.controller; import com.mdd.common.core.AjaxResult; import com.mdd.common.core.PageResult; import com.mdd.common.validator.annotation.IDMust; +import com.mdd.front.LikeFrontThreadLocal; import com.mdd.front.service.IArticleService; import com.mdd.front.validate.PageParam; import com.mdd.front.vo.article.ArticleCateVo; @@ -46,7 +47,8 @@ public class ArticleController { @GetMapping("/list") public Object list(@Validated PageParam pageParam, @RequestParam(value = "cid", defaultValue = "0") Integer cid) { - PageResult list = iArticleService.list(pageParam, cid); + Integer userId = LikeFrontThreadLocal.getUserId(); + PageResult list = iArticleService.list(pageParam, cid, userId); return AjaxResult.success(list); } diff --git a/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java b/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java index a15d6cea..9063b182 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java +++ b/server/like-front/src/main/java/com/mdd/front/service/IArticleService.java @@ -28,9 +28,10 @@ public interface IArticleService { * @author fzr * @param pageParam 分页参数 * @param cid 分类ID + * @param userId 用户ID * @return PageResult */ - PageResult list(PageParam pageParam, Integer cid); + PageResult list(PageParam pageParam, Integer cid, Integer userId); /** * 文章详情 diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java index 6c96016d..aaf82431 100644 --- a/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/ArticleServiceImpl.java @@ -11,6 +11,7 @@ import com.mdd.common.entity.article.Article; import com.mdd.common.entity.article.ArticleCategory; import com.mdd.common.entity.article.ArticleCollect; import com.mdd.common.mapper.article.ArticleCategoryMapper; +import com.mdd.common.mapper.article.ArticleCollectMapper; import com.mdd.common.mapper.article.ArticleMapper; import com.mdd.common.utils.TimeUtil; import com.mdd.common.utils.UrlUtil; @@ -20,6 +21,7 @@ import com.mdd.front.vo.article.ArticleCateVo; import com.mdd.front.vo.article.ArticleCollectVo; import com.mdd.front.vo.article.ArticleDetailVo; import com.mdd.front.vo.article.ArticleListVo; +import net.sf.jsqlparser.statement.create.table.Index; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -40,6 +42,9 @@ public class ArticleServiceImpl implements IArticleService { @Resource ArticleCategoryMapper articleCategoryMapper; + @Resource + ArticleCollectMapper articleCollectMapper; + /** * 文章分类 * @@ -71,10 +76,11 @@ public class ArticleServiceImpl implements IArticleService { * @author fzr * @param pageParam 分页参数 * @param cid 分类ID + * @param userId 用户ID * @return PageResult */ @Override - public PageResult list(PageParam pageParam, Integer cid) { + public PageResult list(PageParam pageParam, Integer cid, Integer userId) { Integer pageNo = pageParam.getPageNo(); Integer pageSize = pageParam.getPageSize(); @@ -86,13 +92,34 @@ public class ArticleServiceImpl implements IArticleService { IPage
iPage = articleMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); + List ids = new LinkedList<>(); List list = new LinkedList<>(); for (Article article : iPage.getRecords()) { ArticleListVo vo = new ArticleListVo(); BeanUtils.copyProperties(article, vo); + vo.setCollect(false); vo.setImage(UrlUtil.toAbsoluteUrl(article.getImage())); vo.setCreateTime(TimeUtil.timestampToDate(article.getCreateTime())); list.add(vo); + + ids.add(article.getId()); + } + + if (userId != null && userId > 0 && ids.size() > 0) { + List articleCollects = articleCollectMapper.selectList( + new QueryWrapper() + .eq("user_id", userId) + .eq("is_delete", 0) + .in("article_id", ids)); + + List collects = new LinkedList<>(); + for (ArticleCollect c : articleCollects) { + collects.add(c.getArticleId()); + } + + for (ArticleListVo vo : list) { + vo.setCollect(collects.contains(vo.getId())); + } } return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); @@ -123,6 +150,13 @@ public class ArticleServiceImpl implements IArticleService { return vo; } + /** + * 收藏列表 + * + * @author fzr + * @param pageParam 分页参数 + * @return PageResult + */ @Override public PageResult collect(PageParam pageParam) { Integer pageNo = pageParam.getPageNo(); diff --git a/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleListVo.java b/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleListVo.java index 6d3d5190..49fbc7cd 100644 --- a/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleListVo.java +++ b/server/like-front/src/main/java/com/mdd/front/vo/article/ArticleListVo.java @@ -14,6 +14,7 @@ public class ArticleListVo implements Serializable { private String image; private String intro; private Integer visit; + private Boolean collect; private String createTime; }