diff --git a/src/main/java/com/rymcu/forest/config/BaseExceptionHandler.java b/src/main/java/com/rymcu/forest/config/BaseExceptionHandler.java index ee053fd..73b0279 100644 --- a/src/main/java/com/rymcu/forest/config/BaseExceptionHandler.java +++ b/src/main/java/com/rymcu/forest/config/BaseExceptionHandler.java @@ -1,7 +1,7 @@ package com.rymcu.forest.config; import com.alibaba.fastjson.support.spring.FastJsonJsonView; -import com.rymcu.forest.core.exception.DataDuplicationException; +import com.rymcu.forest.core.exception.BusinessException; import com.rymcu.forest.core.exception.ServiceException; import com.rymcu.forest.core.exception.TransactionException; import com.rymcu.forest.core.result.GlobalResult; @@ -63,7 +63,7 @@ public class BaseExceptionHandler { } else if (ex instanceof ServletException) { result.setCode(ResultCode.FAIL.getCode()); result.setMessage(ex.getMessage()); - } else if (ex instanceof DataDuplicationException) { + } else if (ex instanceof BusinessException) { result.setCode(ResultCode.FAIL.getCode()); result.setMessage(ex.getMessage()); } else if (ex instanceof TransactionException) { @@ -112,7 +112,7 @@ public class BaseExceptionHandler { } else if (ex instanceof ServletException) { attributes.put("code", ResultCode.FAIL.getCode()); attributes.put("message", ex.getMessage()); - } else if (ex instanceof DataDuplicationException) { + } else if (ex instanceof BusinessException) { attributes.put("code", ResultCode.FAIL.getCode()); attributes.put("message", ex.getMessage()); } else if (ex instanceof TransactionException) { diff --git a/src/main/java/com/rymcu/forest/core/exception/BusinessException.java b/src/main/java/com/rymcu/forest/core/exception/BusinessException.java new file mode 100644 index 0000000..88908dc --- /dev/null +++ b/src/main/java/com/rymcu/forest/core/exception/BusinessException.java @@ -0,0 +1,28 @@ +package com.rymcu.forest.core.exception; + +/** + * @author KKould + */ +public class BusinessException extends RuntimeException { + + private static final long serialVersionUID = 3206744387536223284L; + + public BusinessException() { + } + + public BusinessException(String message) { + super(message); + } + + public BusinessException(String message, Throwable cause) { + super(message, cause); + } + + public BusinessException(Throwable cause) { + super(cause); + } + + public BusinessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/main/java/com/rymcu/forest/core/exception/ContentNotExistException.java b/src/main/java/com/rymcu/forest/core/exception/ContentNotExistException.java index 4afaf5b..7a31d9b 100644 --- a/src/main/java/com/rymcu/forest/core/exception/ContentNotExistException.java +++ b/src/main/java/com/rymcu/forest/core/exception/ContentNotExistException.java @@ -1,6 +1,9 @@ package com.rymcu.forest.core.exception; -public class ContentNotExistException extends RuntimeException{ +/** + * @author KKould + */ +public class ContentNotExistException extends BusinessException { private static final long serialVersionUID = 3206734387536223284L; public ContentNotExistException() { diff --git a/src/main/java/com/rymcu/forest/core/exception/DataDuplicationException.java b/src/main/java/com/rymcu/forest/core/exception/DataDuplicationException.java deleted file mode 100644 index 0e5faa2..0000000 --- a/src/main/java/com/rymcu/forest/core/exception/DataDuplicationException.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.rymcu.forest.core.exception; - -/** - * @author KKould - */ -public class DataDuplicationException extends RuntimeException { - - private static final long serialVersionUID = 3206744387536223284L; - - public DataDuplicationException() { - } - - public DataDuplicationException(String message) { - super(message); - } - - public DataDuplicationException(String message, Throwable cause) { - super(message, cause); - } - - public DataDuplicationException(Throwable cause) { - super(cause); - } - - public DataDuplicationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } -} diff --git a/src/main/java/com/rymcu/forest/core/exception/UltraViresException.java b/src/main/java/com/rymcu/forest/core/exception/UltraViresException.java index 6734208..8ade8f1 100644 --- a/src/main/java/com/rymcu/forest/core/exception/UltraViresException.java +++ b/src/main/java/com/rymcu/forest/core/exception/UltraViresException.java @@ -1,6 +1,9 @@ package com.rymcu.forest.core.exception; -public class UltraViresException extends RuntimeException { +/** + * @author KKould + */ +public class UltraViresException extends BusinessException { private static final long serialVersionUID = 3206744387536228284L; diff --git a/src/main/java/com/rymcu/forest/handler/CommentHandler.java b/src/main/java/com/rymcu/forest/handler/CommentHandler.java new file mode 100644 index 0000000..906e1fe --- /dev/null +++ b/src/main/java/com/rymcu/forest/handler/CommentHandler.java @@ -0,0 +1,57 @@ +package com.rymcu.forest.handler; + +import com.rymcu.forest.core.constant.NotificationConstant; +import com.rymcu.forest.entity.Comment; +import com.rymcu.forest.handler.event.CommentEvent; +import com.rymcu.forest.mapper.CommentMapper; +import com.rymcu.forest.util.Html2TextUtil; +import com.rymcu.forest.util.NotificationUtils; +import com.rymcu.forest.wx.mp.utils.JsonUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * Created on 2022/8/17 7:38. + * + * @author ronger + * @email ronger-x@outlook.com + * @packageName com.rymcu.forest.handler + */ +@Slf4j +@Component +public class CommentHandler { + + private static final int MAX_PREVIEW = 200; + @Resource + private CommentMapper commentMapper; + + @Async + @EventListener + public void processCommentCreatedEvent(CommentEvent commentEvent) throws InterruptedException { + log.info(String.format("开始执行评论发布事件:[%s]", JsonUtils.toJson(commentEvent))); + String commentContent = commentEvent.getContent(); + Integer length = commentContent.length(); + if (length > MAX_PREVIEW) { + length = 200; + } + String commentPreviewContent = commentContent.substring(0, length); + commentContent = Html2TextUtil.getContent(commentPreviewContent); + // 判断是否是回复消息 + if (commentEvent.getCommentOriginalCommentId() != null && commentEvent.getCommentOriginalCommentId() != 0) { + Comment originalComment = commentMapper.selectByPrimaryKey(commentEvent.getCommentOriginalCommentId()); + // 回复消息时,评论者不是上级评论作者则进行消息通知 + if (!commentEvent.getCommentAuthorId().equals(originalComment.getCommentAuthorId())) { + NotificationUtils.saveNotification(originalComment.getCommentAuthorId(), commentEvent.getIdComment(), NotificationConstant.Comment, commentContent); + } + } else { + // 评论者不是作者本人则进行消息通知 + if (!commentEvent.getCommentAuthorId().equals(commentEvent.getArticleAuthorId())) { + NotificationUtils.saveNotification(commentEvent.getArticleAuthorId(), commentEvent.getIdComment(), NotificationConstant.Comment, commentContent); + } + } + } +} diff --git a/src/main/java/com/rymcu/forest/handler/event/CommentEvent.java b/src/main/java/com/rymcu/forest/handler/event/CommentEvent.java new file mode 100644 index 0000000..2599006 --- /dev/null +++ b/src/main/java/com/rymcu/forest/handler/event/CommentEvent.java @@ -0,0 +1,26 @@ +package com.rymcu.forest.handler.event; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * Created on 2022/8/17 7:43. + * + * @author ronger + * @email ronger-x@outlook.com + * @packageName com.rymcu.forest.handler.event + */ +@Data +@AllArgsConstructor +public class CommentEvent { + + private Long idComment; + + private Long articleAuthorId; + + private Long commentAuthorId; + + private String content; + + private Long commentOriginalCommentId; +} diff --git a/src/main/java/com/rymcu/forest/service/CommentService.java b/src/main/java/com/rymcu/forest/service/CommentService.java index a6bc0ed..40ce0f3 100644 --- a/src/main/java/com/rymcu/forest/service/CommentService.java +++ b/src/main/java/com/rymcu/forest/service/CommentService.java @@ -3,11 +3,9 @@ package com.rymcu.forest.service; import com.rymcu.forest.core.service.Service; import com.rymcu.forest.dto.CommentDTO; import com.rymcu.forest.entity.Comment; -import com.rymcu.forest.web.api.exception.BaseApiException; import javax.servlet.http.HttpServletRequest; import java.util.List; -import java.util.Map; /** * @author ronger @@ -27,7 +25,7 @@ public interface CommentService extends Service { * @param request * @return */ - Map postComment(Comment comment, HttpServletRequest request) throws BaseApiException; + Comment postComment(Comment comment, HttpServletRequest request); /** * 获取评论列表数据 diff --git a/src/main/java/com/rymcu/forest/service/PortfolioService.java b/src/main/java/com/rymcu/forest/service/PortfolioService.java index 13e83b8..b7cb859 100644 --- a/src/main/java/com/rymcu/forest/service/PortfolioService.java +++ b/src/main/java/com/rymcu/forest/service/PortfolioService.java @@ -71,12 +71,18 @@ public interface PortfolioService extends Service { */ Map unbindArticle(Long idPortfolio, Long idArticle); + /** * 删除作品集 + * * @param idPortfolio + * @param idUser + * @param roleWeights * @return + * @throws BaseApiException + * @throws IllegalAccessException */ - Map deletePortfolio(Long idPortfolio) throws BaseApiException; + boolean deletePortfolio(Long idPortfolio, Long idUser, Integer roleWeights) throws BaseApiException, IllegalAccessException; /** * 获取作品集列表数据 diff --git a/src/main/java/com/rymcu/forest/service/UserService.java b/src/main/java/com/rymcu/forest/service/UserService.java index 04e7665..b2d3772 100644 --- a/src/main/java/com/rymcu/forest/service/UserService.java +++ b/src/main/java/com/rymcu/forest/service/UserService.java @@ -40,7 +40,7 @@ public interface UserService extends Service { * @param password 密码 * @return Map * */ - Map login(String account, String password); + TokenUser login(String account, String password); /** * 通过 account 获取用户信息接口 diff --git a/src/main/java/com/rymcu/forest/service/impl/ArticleServiceImpl.java b/src/main/java/com/rymcu/forest/service/impl/ArticleServiceImpl.java index 14f043c..58585f3 100644 --- a/src/main/java/com/rymcu/forest/service/impl/ArticleServiceImpl.java +++ b/src/main/java/com/rymcu/forest/service/impl/ArticleServiceImpl.java @@ -2,7 +2,7 @@ package com.rymcu.forest.service.impl; import com.rymcu.forest.core.constant.NotificationConstant; import com.rymcu.forest.core.exception.ContentNotExistException; -import com.rymcu.forest.core.exception.DataDuplicationException; +import com.rymcu.forest.core.exception.BusinessException; import com.rymcu.forest.core.exception.UltraViresException; import com.rymcu.forest.core.service.AbstractService; import com.rymcu.forest.dto.*; @@ -28,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional; import tk.mybatis.mapper.entity.Condition; import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.util.*; @@ -199,7 +198,7 @@ public class ArticleServiceImpl extends AbstractService
implements Arti luceneService.deleteArticle(id); return result; } else { - throw new DataDuplicationException("已有评论的文章不允许删除!"); + throw new BusinessException("已有评论的文章不允许删除!"); } } diff --git a/src/main/java/com/rymcu/forest/service/impl/CommentServiceImpl.java b/src/main/java/com/rymcu/forest/service/impl/CommentServiceImpl.java index 6773cc1..f27149c 100644 --- a/src/main/java/com/rymcu/forest/service/impl/CommentServiceImpl.java +++ b/src/main/java/com/rymcu/forest/service/impl/CommentServiceImpl.java @@ -1,23 +1,26 @@ package com.rymcu.forest.service.impl; -import com.rymcu.forest.core.constant.NotificationConstant; +import com.rymcu.forest.core.exception.ContentNotExistException; import com.rymcu.forest.core.service.AbstractService; import com.rymcu.forest.dto.Author; import com.rymcu.forest.dto.CommentDTO; import com.rymcu.forest.entity.Article; import com.rymcu.forest.entity.Comment; +import com.rymcu.forest.handler.event.CommentEvent; import com.rymcu.forest.mapper.CommentMapper; import com.rymcu.forest.service.ArticleService; import com.rymcu.forest.service.CommentService; -import com.rymcu.forest.util.*; -import com.rymcu.forest.web.api.exception.BaseApiException; +import com.rymcu.forest.util.Utils; +import com.rymcu.forest.util.XssUtils; import org.apache.commons.lang.StringUtils; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.*; +import java.util.Date; +import java.util.List; /** * @author ronger @@ -29,8 +32,8 @@ public class CommentServiceImpl extends AbstractService implements Comm private CommentMapper commentMapper; @Resource private ArticleService articleService; - - private static final int MAX_PREVIEW = 200; + @Resource + private ApplicationEventPublisher applicationEventPublisher; @Override public List getArticleComments(Integer idArticle) { @@ -63,25 +66,19 @@ public class CommentServiceImpl extends AbstractService implements Comm @Override @Transactional(rollbackFor = Exception.class) - public Map postComment(Comment comment, HttpServletRequest request) throws BaseApiException { - comment.setCommentAuthorId(Objects.requireNonNull(UserUtils.getCurrentUserByToken()).getIdUser()); - Map map = new HashMap(1); + public Comment postComment(Comment comment, HttpServletRequest request) { if (comment.getCommentArticleId() == null) { - map.put("message", "非法访问,文章主键异常!"); - return map; + throw new IllegalArgumentException("非法访问,文章主键异常!"); } if (comment.getCommentAuthorId() == null) { - map.put("message", "非法访问,用户未登录!"); - return map; + throw new IllegalArgumentException("非法访问,用户未登录!"); } if (StringUtils.isBlank(comment.getCommentContent())) { - map.put("message", "回帖内容不能为空!"); - return map; + throw new IllegalArgumentException("回帖内容不能为空!"); } Article article = articleService.findById(comment.getCommentArticleId().toString()); if (article == null) { - map.put("message", "文章不存在!"); - return map; + throw new ContentNotExistException("文章不存在!"); } String ip = Utils.getIpAddress(request); String ua = request.getHeader("user-agent"); @@ -95,28 +92,9 @@ public class CommentServiceImpl extends AbstractService implements Comm String commentContent = comment.getCommentContent(); if (StringUtils.isNotBlank(commentContent)) { - Integer length = commentContent.length(); - if (length > MAX_PREVIEW) { - length = 200; - } - String commentPreviewContent = commentContent.substring(0, length); - commentContent = Html2TextUtil.getContent(commentPreviewContent); - // 评论者不是作者本人则进行消息通知 - if (!article.getArticleAuthorId().equals(comment.getCommentAuthorId())) { - NotificationUtils.saveNotification(article.getArticleAuthorId(), comment.getIdComment(), NotificationConstant.Comment, commentContent); - } - // 判断是否是回复消息 - if (comment.getCommentOriginalCommentId() != null && comment.getCommentOriginalCommentId() != 0) { - Comment originalComment = commentMapper.selectByPrimaryKey(comment.getCommentOriginalCommentId()); - // 回复消息时,评论者不是上级评论作者则进行消息通知 - if (!comment.getCommentAuthorId().equals(originalComment.getCommentAuthorId())) { - NotificationUtils.saveNotification(originalComment.getCommentAuthorId(), comment.getIdComment(), NotificationConstant.Comment, commentContent); - } - } + applicationEventPublisher.publishEvent(new CommentEvent(comment.getIdComment(), article.getArticleAuthorId(), comment.getCommentAuthorId(), commentContent, comment.getCommentOriginalCommentId())); } - - - return map; + return comment; } @Override diff --git a/src/main/java/com/rymcu/forest/service/impl/PortfolioServiceImpl.java b/src/main/java/com/rymcu/forest/service/impl/PortfolioServiceImpl.java index bb6d2b7..8ff425d 100644 --- a/src/main/java/com/rymcu/forest/service/impl/PortfolioServiceImpl.java +++ b/src/main/java/com/rymcu/forest/service/impl/PortfolioServiceImpl.java @@ -2,6 +2,7 @@ package com.rymcu.forest.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.rymcu.forest.core.exception.BusinessException; import com.rymcu.forest.core.service.AbstractService; import com.rymcu.forest.dto.*; import com.rymcu.forest.entity.Portfolio; @@ -44,7 +45,7 @@ public class PortfolioServiceImpl extends AbstractService implements List list = portfolioMapper.selectUserPortfoliosByIdUser(userDTO.getIdUser()); Author author = userService.selectAuthor(userDTO.getIdUser()); list.forEach(portfolioDTO -> { - genPortfolioAuthor(portfolioDTO,author); + genPortfolioAuthor(portfolioDTO, author); Integer articleNumber = portfolioMapper.selectCountArticleNumber(portfolioDTO.getIdPortfolio()); portfolioDTO.setArticleNumber(articleNumber); }); @@ -53,12 +54,12 @@ public class PortfolioServiceImpl extends AbstractService implements @Override public PortfolioDTO findPortfolioDTOById(Long idPortfolio, Integer type) { - PortfolioDTO portfolio = portfolioMapper.selectPortfolioDTOById(idPortfolio,type); + PortfolioDTO portfolio = portfolioMapper.selectPortfolioDTOById(idPortfolio, type); if (portfolio == null) { return new PortfolioDTO(); } Author author = userService.selectAuthor(portfolio.getPortfolioAuthorId()); - genPortfolioAuthor(portfolio,author); + genPortfolioAuthor(portfolio, author); Integer articleNumber = portfolioMapper.selectCountArticleNumber(portfolio.getIdPortfolio()); portfolio.setArticleNumber(articleNumber); return portfolio; @@ -109,7 +110,7 @@ public class PortfolioServiceImpl extends AbstractService implements map.put("message", "非法操作!"); } else { PageHelper.startPage(page, rows); - List articles = articleService.selectUnbindArticles(idPortfolio,searchText,user.getIdUser()); + List articles = articleService.selectUnbindArticles(idPortfolio, searchText, user.getIdUser()); PageInfo pageInfo = new PageInfo(articles); map = Utils.getArticlesGlobalResult(pageInfo); } @@ -123,7 +124,7 @@ public class PortfolioServiceImpl extends AbstractService implements Integer count = portfolioMapper.selectCountPortfolioArticle(portfolioArticle.getIdArticle(), portfolioArticle.getIdPortfolio()); if (count.equals(0)) { Integer maxSortNo = portfolioMapper.selectMaxSortNo(portfolioArticle.getIdPortfolio()); - portfolioMapper.insertPortfolioArticle(portfolioArticle.getIdArticle(),portfolioArticle.getIdPortfolio(),maxSortNo); + portfolioMapper.insertPortfolioArticle(portfolioArticle.getIdArticle(), portfolioArticle.getIdPortfolio(), maxSortNo); map.put("message", "绑定成功!"); } else { map.put("message", "该文章已经在作品集下!!"); @@ -143,7 +144,7 @@ public class PortfolioServiceImpl extends AbstractService implements if (portfolioArticle.getSortNo() == null) { map.put("message", "排序号不能为空!"); } - Integer result = portfolioMapper.updateArticleSortNo(portfolioArticle.getIdPortfolio(),portfolioArticle.getIdArticle(),portfolioArticle.getSortNo()); + Integer result = portfolioMapper.updateArticleSortNo(portfolioArticle.getIdPortfolio(), portfolioArticle.getIdArticle(), portfolioArticle.getSortNo()); if (result > 0) { map.put("message", "更新成功!"); } else { @@ -161,7 +162,7 @@ public class PortfolioServiceImpl extends AbstractService implements if (idArticle == null || idArticle.equals(0)) { map.put("message", "文章数据异常"); } - Integer result = portfolioMapper.unbindArticle(idPortfolio,idArticle); + Integer result = portfolioMapper.unbindArticle(idPortfolio, idArticle); if (result > 0) { map.put("message", "操作成功!"); } else { @@ -171,35 +172,29 @@ public class PortfolioServiceImpl extends AbstractService implements } @Override - public Map deletePortfolio(Long idPortfolio) throws BaseApiException { - Map map = new HashMap(1); - if (idPortfolio == null || idPortfolio.equals(0)) { - map.put("message", "作品集数据异常"); + public boolean deletePortfolio(Long idPortfolio, Long idUser, Integer roleWeights) throws BaseApiException, IllegalAccessException { + if (idPortfolio == null || idPortfolio == 0) { + throw new IllegalArgumentException("作品集数据异常!"); } // 鉴权 - User user = UserUtils.getCurrentUserByToken(); - Integer roleWeights = userService.findRoleWeightsByUser(user.getIdUser()); if (roleWeights > 2) { Portfolio portfolio = portfolioMapper.selectByPrimaryKey(idPortfolio); - if (!user.getIdUser().equals(portfolio.getPortfolioAuthorId())) { - map.put("message", "非法访问!"); - return map; + if (!idUser.equals(portfolio.getPortfolioAuthorId())) { + throw new IllegalAccessException("非法访问!"); } } Integer articleNumber = portfolioMapper.selectCountArticleNumber(idPortfolio); if (articleNumber > 0) { - map.put("message", "该作品集已绑定文章不允许删除!"); + throw new BusinessException("该作品集已绑定文章不允许删除!"); } else { Integer result = portfolioMapper.deleteByPrimaryKey(idPortfolio); if (result.equals(0)) { - map.put("message", "操作失败!"); - }else { - PortfolioIndexUtil.deleteIndex(idPortfolio); + throw new BusinessException("操作失败!"); } + PortfolioIndexUtil.deleteIndex(idPortfolio); + return true; } - - return map; } @Override diff --git a/src/main/java/com/rymcu/forest/service/impl/UserServiceImpl.java b/src/main/java/com/rymcu/forest/service/impl/UserServiceImpl.java index 932786c..c8792ff 100644 --- a/src/main/java/com/rymcu/forest/service/impl/UserServiceImpl.java +++ b/src/main/java/com/rymcu/forest/service/impl/UserServiceImpl.java @@ -1,5 +1,7 @@ package com.rymcu.forest.service.impl; +import com.rymcu.forest.core.exception.CaptchaException; +import com.rymcu.forest.core.exception.ContentNotExistException; import com.rymcu.forest.core.service.AbstractService; import com.rymcu.forest.core.service.redis.RedisService; import com.rymcu.forest.dto.*; @@ -20,6 +22,8 @@ import com.rymcu.forest.util.Utils; import com.rymcu.forest.web.api.common.UploadController; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.exceptions.TooManyResultsException; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UnknownAccountException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -114,8 +118,7 @@ public class UserServiceImpl extends AbstractService implements UserServic } @Override - public Map login(String account, String password) { - Map map = new HashMap(2); + public TokenUser login(String account, String password) { User user = userMapper.findByAccount(account); if (user != null) { if (Utils.comparePwd(password, user.getPassword())) { @@ -125,16 +128,15 @@ public class UserServiceImpl extends AbstractService implements UserServic BeanCopierUtil.copy(user, tokenUser); tokenUser.setToken(tokenManager.createToken(account)); tokenUser.setWeights(userMapper.selectRoleWeightsByUser(user.getIdUser())); - map.put("user", tokenUser); // 保存登录日志 loginRecordService.saveLoginRecord(tokenUser.getIdUser()); + return tokenUser; } else { - map.put("message", "密码错误!"); + throw new AuthenticationException("密码错误"); } } else { - map.put("message", "该账号不存在!"); + throw new UnknownAccountException("账号不存在"); } - return map; } @Override @@ -183,7 +185,7 @@ public class UserServiceImpl extends AbstractService implements UserServic Map map = new HashMap(2); UserInfoDTO user = userMapper.selectUserInfo(idUser); if (user == null) { - map.put("message", "用户不存在!"); + throw new ContentNotExistException("用户不存在!"); } else { UserExtend userExtend = userExtendMapper.selectByPrimaryKey(user.getIdUser()); if (Objects.isNull(userExtend)) { @@ -270,7 +272,6 @@ public class UserServiceImpl extends AbstractService implements UserServic @Override public Map updateEmail(ChangeEmailDTO changeEmailDTO) { Map map = new HashMap(2); - map.put("message", "验证码无效!"); Long idUser = changeEmailDTO.getIdUser(); String email = changeEmailDTO.getEmail(); String code = changeEmailDTO.getCode(); @@ -282,7 +283,7 @@ public class UserServiceImpl extends AbstractService implements UserServic map.put("email", email); } } - return map; + throw new CaptchaException(); } @Override diff --git a/src/main/java/com/rymcu/forest/web/api/comment/CommentController.java b/src/main/java/com/rymcu/forest/web/api/comment/CommentController.java index 56d8cb6..c01e172 100644 --- a/src/main/java/com/rymcu/forest/web/api/comment/CommentController.java +++ b/src/main/java/com/rymcu/forest/web/api/comment/CommentController.java @@ -4,6 +4,7 @@ import com.rymcu.forest.core.result.GlobalResult; import com.rymcu.forest.core.result.GlobalResultGenerator; import com.rymcu.forest.entity.Comment; import com.rymcu.forest.service.CommentService; +import com.rymcu.forest.util.UserUtils; import com.rymcu.forest.web.api.exception.BaseApiException; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -12,8 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.io.UnsupportedEncodingException; -import java.util.Map; +import java.util.Objects; /** * @author ronger @@ -26,8 +26,9 @@ public class CommentController { private CommentService commentService; @PostMapping("/post") - public GlobalResult postComment(@RequestBody Comment comment, HttpServletRequest request) throws BaseApiException { - Map map = commentService.postComment(comment,request); - return GlobalResultGenerator.genSuccessResult(map); + public GlobalResult postComment(@RequestBody Comment comment, HttpServletRequest request) throws BaseApiException { + comment.setCommentAuthorId(Objects.requireNonNull(UserUtils.getCurrentUserByToken()).getIdUser()); + comment = commentService.postComment(comment,request); + return GlobalResultGenerator.genSuccessResult(comment); } } diff --git a/src/main/java/com/rymcu/forest/web/api/common/CommonApiController.java b/src/main/java/com/rymcu/forest/web/api/common/CommonApiController.java index 5f1ed82..ab9f04e 100644 --- a/src/main/java/com/rymcu/forest/web/api/common/CommonApiController.java +++ b/src/main/java/com/rymcu/forest/web/api/common/CommonApiController.java @@ -9,7 +9,6 @@ import com.rymcu.forest.core.service.log.annotation.VisitLogger; import com.rymcu.forest.dto.*; import com.rymcu.forest.entity.User; import com.rymcu.forest.service.*; -import com.rymcu.forest.util.Utils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -75,9 +74,9 @@ public class CommonApiController { } @PostMapping("/login") - public GlobalResult login(@RequestBody User user) { - Map map = userService.login(user.getAccount(), user.getPassword()); - return GlobalResultGenerator.genSuccessResult(map); + public GlobalResult login(@RequestBody User user) { + TokenUser tokenUser = userService.login(user.getAccount(), user.getPassword()); + return GlobalResultGenerator.genSuccessResult(tokenUser); } @GetMapping("/heartbeat") @@ -117,11 +116,9 @@ public class CommonApiController { @GetMapping("/portfolio/{id}") @VisitLogger - public GlobalResult> portfolio(@PathVariable Long id) { + public GlobalResult portfolio(@PathVariable Long id) { PortfolioDTO portfolioDTO = portfolioService.findPortfolioDTOById(id, 1); - Map map = new HashMap<>(1); - map.put("portfolio", portfolioDTO); - return GlobalResultGenerator.genSuccessResult(map); + return GlobalResultGenerator.genSuccessResult(portfolioDTO); } @GetMapping("/portfolio/{id}/articles") @@ -150,10 +147,8 @@ public class CommonApiController { @GetMapping("/product/{id}") @VisitLogger - public GlobalResult> product(@PathVariable Integer id) { + public GlobalResult product(@PathVariable Integer id) { ProductDTO productDTO = productService.findProductDTOById(id, 1); - Map map = new HashMap<>(1); - map.put("product", productDTO); - return GlobalResultGenerator.genSuccessResult(map); + return GlobalResultGenerator.genSuccessResult(productDTO); } } diff --git a/src/main/java/com/rymcu/forest/web/api/portfolio/PortfolioController.java b/src/main/java/com/rymcu/forest/web/api/portfolio/PortfolioController.java index d81c7ef..e9324d3 100644 --- a/src/main/java/com/rymcu/forest/web/api/portfolio/PortfolioController.java +++ b/src/main/java/com/rymcu/forest/web/api/portfolio/PortfolioController.java @@ -6,8 +6,11 @@ import com.rymcu.forest.core.service.security.annotation.AuthorshipInterceptor; import com.rymcu.forest.dto.PortfolioArticleDTO; import com.rymcu.forest.dto.PortfolioDTO; import com.rymcu.forest.entity.Portfolio; +import com.rymcu.forest.entity.User; import com.rymcu.forest.enumerate.Module; import com.rymcu.forest.service.PortfolioService; +import com.rymcu.forest.service.UserService; +import com.rymcu.forest.util.UserUtils; import com.rymcu.forest.web.api.exception.BaseApiException; import org.springframework.web.bind.annotation.*; @@ -24,6 +27,8 @@ public class PortfolioController { @Resource private PortfolioService portfolioService; + @Resource + private UserService userService; @GetMapping("/detail/{idPortfolio}") public GlobalResult detail(@PathVariable Long idPortfolio,@RequestParam(defaultValue = "0") Integer type) { @@ -76,8 +81,11 @@ public class PortfolioController { @DeleteMapping("/delete") @AuthorshipInterceptor(moduleName = Module.PORTFOLIO) - public GlobalResult delete(Long idPortfolio) throws BaseApiException { - Map map = portfolioService.deletePortfolio(idPortfolio); + public GlobalResult delete(Long idPortfolio) throws BaseApiException, IllegalAccessException { + User user = UserUtils.getCurrentUserByToken(); + Long idUser = user.getIdUser(); + Integer roleWeights = userService.findRoleWeightsByUser(idUser); + boolean map = portfolioService.deletePortfolio(idPortfolio, idUser, roleWeights); return GlobalResultGenerator.genSuccessResult(map); }