🎨 代码优化

This commit is contained in:
ronger 2022-08-27 12:15:04 +08:00
parent 4c17685ff0
commit e9c0475e50
23 changed files with 361 additions and 267 deletions

View File

@ -0,0 +1,28 @@
package com.rymcu.forest.core.exception;
import org.apache.shiro.authc.AccountException;
/**
* Created on 2022/8/25 19:27.
*
* @author ronger
* @email ronger-x@outlook.com
*/
public class AccountExistsException extends AccountException {
private static final long serialVersionUID = 3206734387536223284L;
public AccountExistsException() {
}
public AccountExistsException(String message) {
super(message);
}
public AccountExistsException(String message, Throwable cause) {
super(message, cause);
}
public AccountExistsException(Throwable cause) {
super(cause);
}
}

View File

@ -0,0 +1,32 @@
package com.rymcu.forest.core.exception;
/**
* Created on 2022/8/25 19:11.
*
* @author ronger
* @email ronger-x@outlook.com
*/
public class NicknameOccupyException extends BusinessException {
private static final long serialVersionUID = 3206744387536223284L;
public NicknameOccupyException() {
}
public NicknameOccupyException(String message) {
super(message);
}
public NicknameOccupyException(String message, Throwable cause) {
super(message, cause);
}
public NicknameOccupyException(Throwable cause) {
super(cause);
}
public NicknameOccupyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}

View File

@ -5,7 +5,7 @@ import com.rymcu.forest.enumerate.TransactionCode;
/**
* @author ronger
*/
public class TransactionException extends Exception {
public class TransactionException extends BusinessException {
private int code;

View File

@ -13,7 +13,6 @@ public interface ArticleThumbsUpService extends Service<ArticleThumbsUp> {
*
* @param articleThumbsUp
* @return
* @throws BaseApiException
*/
String thumbsUp(ArticleThumbsUp articleThumbsUp) throws Exception;
int thumbsUp(ArticleThumbsUp articleThumbsUp);
}

View File

@ -1,7 +1,9 @@
package com.rymcu.forest.service;
import com.github.pagehelper.PageInfo;
import com.rymcu.forest.core.exception.ServiceException;
import com.rymcu.forest.core.service.Service;
import com.rymcu.forest.dto.ArticleDTO;
import com.rymcu.forest.dto.PortfolioArticleDTO;
import com.rymcu.forest.dto.PortfolioDTO;
import com.rymcu.forest.dto.UserDTO;
@ -35,35 +37,34 @@ public interface PortfolioService extends Service<Portfolio> {
* @throws BaseApiException
* @return
*/
Portfolio postPortfolio(Portfolio portfolio) throws BaseApiException;
Portfolio postPortfolio(Portfolio portfolio);
/**
* 查询作品集下未绑定文章
*
* @param page
* @param rows
* @param searchText
* @param idPortfolio
* @param idUser
* @return
* @throws BaseApiException
*/
PageInfo findUnbindArticles(Integer page, Integer rows, String searchText, Long idPortfolio) throws Exception;
PageInfo<ArticleDTO> findUnbindArticles(Integer page, Integer rows, String searchText, Long idPortfolio, Long idUser);
/**
* 绑定文章
*
* @param portfolioArticle
* @return
* @throws ServiceException
*/
boolean bindArticle(PortfolioArticleDTO portfolioArticle) throws Exception;
boolean bindArticle(PortfolioArticleDTO portfolioArticle) throws ServiceException;
/**
* 更新文章排序号
*
* @param portfolioArticle
* @return
* @throws ServiceException
*/
boolean updateArticleSortNo(PortfolioArticleDTO portfolioArticle) throws Exception;
boolean updateArticleSortNo(PortfolioArticleDTO portfolioArticle) throws ServiceException;
/**
* 取消绑定文章
@ -71,8 +72,9 @@ public interface PortfolioService extends Service<Portfolio> {
* @param idPortfolio
* @param idArticle
* @return
* @throws ServiceException
*/
boolean unbindArticle(Long idPortfolio, Long idArticle) throws Exception;
boolean unbindArticle(Long idPortfolio, Long idArticle) throws ServiceException;
/**
@ -82,10 +84,8 @@ public interface PortfolioService extends Service<Portfolio> {
* @param idUser
* @param roleWeights
* @return
* @throws BaseApiException
* @throws IllegalAccessException
*/
boolean deletePortfolio(Long idPortfolio, Long idUser, Integer roleWeights) throws BaseApiException, IllegalAccessException;
boolean deletePortfolio(Long idPortfolio, Long idUser, Integer roleWeights);
/**

View File

@ -1,5 +1,6 @@
package com.rymcu.forest.service;
import com.rymcu.forest.core.exception.ServiceException;
import com.rymcu.forest.core.service.Service;
import com.rymcu.forest.entity.Role;
import com.rymcu.forest.entity.User;
@ -30,18 +31,18 @@ public interface RoleService extends Service<Role> {
/**
* 更新用户状态
*
* @param idRole
* @param status
* @return
* @throws ServiceException
*/
boolean updateStatus(Long idRole, String status) throws Exception;
boolean updateStatus(Long idRole, String status) throws ServiceException;
/**
* 添加/更新角色
*
* @param role
* @return
* @throws ServiceException
*/
boolean saveRole(Role role) throws Exception;
boolean saveRole(Role role) throws ServiceException;
}

View File

@ -1,7 +1,8 @@
package com.rymcu.forest.service;
import com.github.pagehelper.PageInfo;
import com.rymcu.forest.core.exception.ServiceException;
import com.rymcu.forest.core.service.Service;
import com.rymcu.forest.dto.admin.TagDTO;
import com.rymcu.forest.dto.admin.TopicTagDTO;
import com.rymcu.forest.entity.Tag;
import com.rymcu.forest.entity.Topic;
@ -15,15 +16,17 @@ public interface TopicService extends Service<Topic> {
/**
* 获取导航主题数据
*
* @return
* */
*/
List<Topic> findTopicNav();
/**
* 根据 topicUri 获取主题信息及旗下标签数据
*
* @param topicUri 主题 URI
* @return
* */
*/
Topic findTopicByTopicUri(String topicUri);
/**
@ -31,11 +34,13 @@ public interface TopicService extends Service<Topic> {
*
* @param topic 主题信息
* @return
* @throws ServiceException
*/
Topic saveTopic(Topic topic) throws Exception;
Topic saveTopic(Topic topic) throws ServiceException;
/**
* 查询未绑定标签
*
* @param idTopic
* @param tagTitle
* @return
@ -47,24 +52,24 @@ public interface TopicService extends Service<Topic> {
*
* @param topicTag
* @return
* @throws ServiceException
*/
TopicTagDTO bindTopicTag(TopicTagDTO topicTag) throws Exception;
TopicTagDTO bindTopicTag(TopicTagDTO topicTag) throws ServiceException;
/**
* 取消绑定标签
*
* @param topicTag
* @return
* @throws ServiceException
*/
TopicTagDTO unbindTopicTag(TopicTagDTO topicTag) throws Exception;
TopicTagDTO unbindTopicTag(TopicTagDTO topicTag) throws ServiceException;
/**
* 获取主题下标签列表
*
* @param topicUri
* @param page
* @param rows
* @return
*/
PageInfo findTagsByTopicUri(String topicUri, Integer page, Integer rows);
List<TagDTO> findTagsByTopicUri(String topicUri);
}

View File

@ -15,9 +15,8 @@ public interface TransactionRecordService extends Service<TransactionRecord> {
* 交易
* @param transactionRecord
* @return
* @throws Exception
*/
TransactionRecord transfer(TransactionRecord transactionRecord) throws Exception;
TransactionRecord transfer(TransactionRecord transactionRecord);
/**
* 查询指定账户的交易记录
@ -34,24 +33,21 @@ public interface TransactionRecordService extends Service<TransactionRecord> {
* @param formUserId
* @param transactionType
* @return
* @throws Exception
*/
TransactionRecord userTransfer(Long toUserId, Long formUserId, TransactionEnum transactionType) throws Exception;
TransactionRecord userTransfer(Long toUserId, Long formUserId, TransactionEnum transactionType);
/**
* 社区银行转账/奖励发放
* @param idUser
* @param transactionType
* @return
* @throws Exception
*/
TransactionRecord bankTransfer(Long idUser, TransactionEnum transactionType) throws Exception;
TransactionRecord bankTransfer(Long idUser, TransactionEnum transactionType);
/**
* 发放新手奖励
* @param transactionRecord
* @return
* @throws Exception
*/
TransactionRecord newbieRewards(TransactionRecord transactionRecord) throws Exception;
TransactionRecord newbieRewards(TransactionRecord transactionRecord);
}

View File

@ -12,7 +12,6 @@ import java.util.Map;
/**
*
* @author CodeGenerator
* @date 2018/05/29
*/
@ -20,10 +19,11 @@ public interface UserService extends Service<User> {
/**
* 通过账号查询用户信息
*
* @param account
* @throws TooManyResultsException
* @return User
* */
* @throws TooManyResultsException
*/
User findByAccount(String account) throws TooManyResultsException;
/**
@ -34,7 +34,7 @@ public interface UserService extends Service<User> {
* @param code 验证码
* @return Map
*/
void register(String email, String password, String code) throws ServiceException;
boolean register(String email, String password, String code);
/**
* 登录接口
@ -47,9 +47,10 @@ public interface UserService extends Service<User> {
/**
* 通过 account 获取用户信息接口
*
* @param account 昵称
* @return UserDTO
* */
* @return UserDTO
*/
UserDTO findUserDTOByAccount(String account);
/**
@ -58,8 +59,9 @@ public interface UserService extends Service<User> {
* @param code 验证码
* @param password 密码
* @return Map
* @throws ServiceException
*/
String forgetPassword(String code, String password) throws ServiceException;
boolean forgetPassword(String code, String password) throws ServiceException;
/**
* 更新用户角色接口
@ -67,6 +69,7 @@ public interface UserService extends Service<User> {
* @param idUser 用户 id
* @param idRole 角色 id
* @return Map
* @throws ServiceException
*/
boolean updateUserRole(Long idUser, Long idRole) throws ServiceException;
@ -76,23 +79,26 @@ public interface UserService extends Service<User> {
* @param idUser 用户 id
* @param status 状态
* @return Map
* @throws ServiceException
*/
boolean updateStatus(Long idUser, String status) throws ServiceException;
/**
* 获取用户信息
*
* @param idUser
* @return
*/
Map findUserInfo(Long idUser);
UserInfoDTO findUserInfo(Long idUser);
/**
* 更新用户信息
*
* @param user
* @return
* @throws ServiceException
*/
UserInfoDTO updateUserInfo(UserInfoDTO user) throws Exception;
UserInfoDTO updateUserInfo(UserInfoDTO user) throws ServiceException;
/**
* 验证昵称是否重复
@ -101,10 +107,11 @@ public interface UserService extends Service<User> {
* @param nickname
* @return
*/
boolean checkNickname(Long idUser, String nickname) throws ServiceException;
boolean checkNicknameByIdUser(Long idUser, String nickname);
/**
* 获取用户权限
*
* @param idUser
* @return
*/
@ -112,6 +119,7 @@ public interface UserService extends Service<User> {
/**
* 查询作者信息
*
* @param idUser
* @return
*/
@ -127,6 +135,7 @@ public interface UserService extends Service<User> {
/**
* 获取用户扩展信息
*
* @param account
* @return
*/
@ -137,8 +146,9 @@ public interface UserService extends Service<User> {
*
* @param changeEmailDTO
* @return
* @throws ServiceException
*/
String updateEmail(ChangeEmailDTO changeEmailDTO) throws ServiceException;
boolean updateEmail(ChangeEmailDTO changeEmailDTO) throws ServiceException;
/**
* 更新密码
@ -150,15 +160,25 @@ public interface UserService extends Service<User> {
/**
* 查询用户列表
*
* @param searchDTO
* @return
*/
List<UserInfoDTO> findUsers(UserSearchDTO searchDTO);
/**
* 通过邮箱查询用户信息
* 通过邮箱更新用户最后登录时间
*
* @param email
* @return
*/
Integer updateLastOnlineTimeByEmail(String email);
/**
* 查询用户扩展信息
*
* @param idUser
* @return
*/
UserExtend findUserExtendInfo(Long idUser);
}

View File

@ -4,11 +4,9 @@ import com.rymcu.forest.core.exception.BusinessException;
import com.rymcu.forest.core.service.AbstractService;
import com.rymcu.forest.entity.Article;
import com.rymcu.forest.entity.ArticleThumbsUp;
import com.rymcu.forest.entity.User;
import com.rymcu.forest.mapper.ArticleThumbsUpMapper;
import com.rymcu.forest.service.ArticleService;
import com.rymcu.forest.service.ArticleThumbsUpService;
import com.rymcu.forest.util.UserUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -29,34 +27,25 @@ public class ArticleThumbsUpServiceImpl extends AbstractService<ArticleThumbsUp>
@Override
@Transactional(rollbackFor = Exception.class)
public String thumbsUp(ArticleThumbsUp articleThumbsUp) throws Exception {
if (Objects.isNull(articleThumbsUp) || Objects.isNull(articleThumbsUp.getIdArticle())) {
public int thumbsUp(ArticleThumbsUp articleThumbsUp) {
int thumbsUpNumber = 1;
Article article = articleService.findById(String.valueOf(articleThumbsUp.getIdArticle()));
if (Objects.isNull(article)) {
throw new BusinessException("数据异常,文章不存在!");
} else {
Integer thumbsUpNumber = 1;
Article article = articleService.findById(String.valueOf(articleThumbsUp.getIdArticle()));
if (Objects.isNull(article)) {
throw new BusinessException("数据异常,文章不存在!");
ArticleThumbsUp thumbsUp = articleThumbsUpMapper.selectOne(articleThumbsUp);
if (Objects.isNull(thumbsUp)) {
// 点赞
articleThumbsUp.setThumbsUpTime(new Date());
articleThumbsUpMapper.insertSelective(articleThumbsUp);
} else {
User user = UserUtils.getCurrentUserByToken();
articleThumbsUp.setIdUser(user.getIdUser());
ArticleThumbsUp thumbsUp = articleThumbsUpMapper.selectOne(articleThumbsUp);
if (Objects.isNull(thumbsUp)) {
articleThumbsUp.setThumbsUpTime(new Date());
articleThumbsUpMapper.insertSelective(articleThumbsUp);
// 更新文章点赞数
} else {
articleThumbsUpMapper.deleteByPrimaryKey(thumbsUp.getIdArticleThumbsUp());
// 更新文章点赞数
thumbsUpNumber = -1;
}
articleThumbsUpMapper.updateArticleThumbsUpNumber(articleThumbsUp.getIdArticle(), thumbsUpNumber);
if (thumbsUpNumber > 0) {
return "点赞成功";
} else {
return "已取消点赞";
}
// 取消点赞
articleThumbsUpMapper.deleteByPrimaryKey(thumbsUp.getIdArticleThumbsUp());
thumbsUpNumber = -1;
}
// 更新文章点赞数
articleThumbsUpMapper.updateArticleThumbsUpNumber(articleThumbsUp.getIdArticle(), thumbsUpNumber);
return thumbsUpNumber;
}
}
}

View File

@ -4,20 +4,18 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.rymcu.forest.core.exception.BusinessException;
import com.rymcu.forest.core.exception.ServiceException;
import com.rymcu.forest.core.exception.UltraViresException;
import com.rymcu.forest.core.service.AbstractService;
import com.rymcu.forest.dto.*;
import com.rymcu.forest.entity.Portfolio;
import com.rymcu.forest.entity.User;
import com.rymcu.forest.lucene.model.PortfolioLucene;
import com.rymcu.forest.lucene.util.PortfolioIndexUtil;
import com.rymcu.forest.mapper.PortfolioMapper;
import com.rymcu.forest.service.ArticleService;
import com.rymcu.forest.service.PortfolioService;
import com.rymcu.forest.service.UserService;
import com.rymcu.forest.util.UserUtils;
import com.rymcu.forest.util.XssUtils;
import com.rymcu.forest.web.api.common.UploadController;
import com.rymcu.forest.web.api.exception.BaseApiException;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
@ -64,15 +62,12 @@ public class PortfolioServiceImpl extends AbstractService<Portfolio> implements
}
@Override
public Portfolio postPortfolio(Portfolio portfolio) throws BaseApiException {
User user = UserUtils.getCurrentUserByToken();
assert user != null;
public Portfolio postPortfolio(Portfolio portfolio) {
if (StringUtils.isNotBlank(portfolio.getHeadImgType())) {
String headImgUrl = UploadController.uploadBase64File(portfolio.getHeadImgUrl(), 0);
portfolio.setHeadImgUrl(headImgUrl);
}
if (portfolio.getIdPortfolio() == null || portfolio.getIdPortfolio() == 0) {
portfolio.setPortfolioAuthorId(user.getIdUser());
portfolio.setCreatedTime(new Date());
portfolio.setUpdatedTime(portfolio.getCreatedTime());
portfolio.setPortfolioDescriptionHtml(XssUtils.filterHtmlCode(portfolio.getPortfolioDescription()));
@ -97,61 +92,47 @@ public class PortfolioServiceImpl extends AbstractService<Portfolio> implements
}
@Override
public PageInfo findUnbindArticles(Integer page, Integer rows, String searchText, Long idPortfolio) throws Exception {
User user = UserUtils.getCurrentUserByToken();
public PageInfo<ArticleDTO> findUnbindArticles(Integer page, Integer rows, String searchText, Long idPortfolio, Long idUser) {
Portfolio portfolio = portfolioMapper.selectByPrimaryKey(idPortfolio);
if (portfolio == null) {
throw new ServiceException("该作品集不存在或已被删除!");
throw new BusinessException("该作品集不存在或已被删除!");
} else {
if (!user.getIdUser().equals(portfolio.getPortfolioAuthorId())) {
throw new ServiceException("非法操作!");
if (!idUser.equals(portfolio.getPortfolioAuthorId())) {
throw new UltraViresException("非法操作!");
} else {
PageHelper.startPage(page, rows);
List<ArticleDTO> articles = articleService.selectUnbindArticles(idPortfolio, searchText, user.getIdUser());
PageInfo<ArticleDTO> pageInfo = new PageInfo(articles);
return pageInfo;
List<ArticleDTO> articles = articleService.selectUnbindArticles(idPortfolio, searchText, idUser);
return new PageInfo<>(articles);
}
}
}
@Override
public boolean bindArticle(PortfolioArticleDTO portfolioArticle) throws Exception {
public boolean bindArticle(PortfolioArticleDTO portfolioArticle) throws ServiceException {
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);
return true;
Integer result = portfolioMapper.insertPortfolioArticle(portfolioArticle.getIdArticle(), portfolioArticle.getIdPortfolio(), maxSortNo);
if (result == 0) {
throw new ServiceException("更新失败!");
}
} else {
throw new ServiceException("该文章已经在作品集下!!");
throw new BusinessException("该文章已经在作品集下!!");
}
return true;
}
@Override
public boolean updateArticleSortNo(PortfolioArticleDTO portfolioArticle) throws Exception {
if (portfolioArticle.getIdPortfolio() == null || portfolioArticle.getIdPortfolio().equals(0)) {
throw new ServiceException("作品集数据异常!");
}
if (portfolioArticle.getIdArticle() == null || portfolioArticle.getIdArticle().equals(0)) {
throw new ServiceException("文章数据异常!");
}
if (portfolioArticle.getSortNo() == null) {
throw new ServiceException("排序号不能为空!");
}
public boolean updateArticleSortNo(PortfolioArticleDTO portfolioArticle) throws ServiceException {
Integer result = portfolioMapper.updateArticleSortNo(portfolioArticle.getIdPortfolio(), portfolioArticle.getIdArticle(), portfolioArticle.getSortNo());
if (result > 0) {
if (result == 0) {
throw new ServiceException("更新失败!");
}
return true;
}
@Override
public boolean unbindArticle(Long idPortfolio, Long idArticle) throws Exception {
if (idPortfolio == null || idPortfolio.equals(0)) {
throw new ServiceException("作品集数据异常");
}
if (idArticle == null || idArticle.equals(0)) {
throw new ServiceException("文章数据异常");
}
public boolean unbindArticle(Long idPortfolio, Long idArticle) throws ServiceException {
Integer result = portfolioMapper.unbindArticle(idPortfolio, idArticle);
if (result == 0) {
throw new ServiceException("操作失败!");
@ -160,7 +141,7 @@ public class PortfolioServiceImpl extends AbstractService<Portfolio> implements
}
@Override
public boolean deletePortfolio(Long idPortfolio, Long idUser, Integer roleWeights) throws BaseApiException, IllegalAccessException {
public boolean deletePortfolio(Long idPortfolio, Long idUser, Integer roleWeights) {
if (idPortfolio == null || idPortfolio == 0) {
throw new IllegalArgumentException("作品集数据异常!");
}
@ -168,7 +149,7 @@ public class PortfolioServiceImpl extends AbstractService<Portfolio> implements
if (roleWeights > 2) {
Portfolio portfolio = portfolioMapper.selectByPrimaryKey(idPortfolio);
if (!idUser.equals(portfolio.getPortfolioAuthorId())) {
throw new IllegalAccessException("非法访问!");
throw new UltraViresException("非法访问!");
}
}

View File

@ -26,8 +26,7 @@ public class RoleServiceImpl extends AbstractService<Role> implements RoleServic
@Override
public List<Role> selectRoleByUser(User sysUser) {
List<Role> roles = roleMapper.selectRoleByIdUser(sysUser.getIdUser());
return roles;
return roleMapper.selectRoleByIdUser(sysUser.getIdUser());
}
@Override
@ -36,8 +35,8 @@ public class RoleServiceImpl extends AbstractService<Role> implements RoleServic
}
@Override
@Transactional
public boolean updateStatus(Long idRole, String status) throws Exception {
@Transactional(rollbackFor = Exception.class)
public boolean updateStatus(Long idRole, String status) throws ServiceException {
Integer result = roleMapper.updateStatus(idRole, status);
if (result == 0) {
throw new ServiceException("更新失败");
@ -46,7 +45,7 @@ public class RoleServiceImpl extends AbstractService<Role> implements RoleServic
}
@Override
public boolean saveRole(Role role) throws Exception {
public boolean saveRole(Role role) throws ServiceException {
Integer result;
if (role.getIdRole() == null) {
role.setCreatedTime(new Date());

View File

@ -39,25 +39,22 @@ public class SponsorServiceImpl extends AbstractService<Sponsor> implements Spon
@Override
@Transactional(rollbackFor = Exception.class)
public boolean sponsorship(Sponsor sponsor) throws Exception {
if (Objects.isNull(sponsor) || Objects.isNull(sponsor.getDataId()) || Objects.isNull(sponsor.getDataType())) {
throw new ServiceException("数据异常");
} else {
TransactionEnum result = TransactionEnum.findTransactionEnum(sponsor.getDataType());
BigDecimal money = BigDecimal.valueOf(result.getMoney());
sponsor.setSponsorshipMoney(money);
User user = UserUtils.getCurrentUserByToken();
sponsor.setSponsor(user.getIdUser());
sponsor.setSponsorshipTime(new Date());
sponsorMapper.insertSelective(sponsor);
// 赞赏金额划转
if (result.isArticleSponsor()) {
ArticleDTO articleDTO = articleService.findArticleDTOById(sponsor.getDataId(), 1);
TransactionRecord transactionRecord = transactionRecordService.userTransfer(articleDTO.getArticleAuthorId(), user.getIdUser(), result);
if (Objects.isNull(transactionRecord.getIdTransactionRecord())) {
throw new TransactionException(TransactionCode.InsufficientBalance);
}
// 更新文章赞赏数
sponsorMapper.updateArticleSponsorCount(articleDTO.getIdArticle());
TransactionEnum transactionEnum = TransactionEnum.findTransactionEnum(sponsor.getDataType());
BigDecimal money = BigDecimal.valueOf(transactionEnum.getMoney());
sponsor.setSponsorshipMoney(money);
sponsor.setSponsorshipTime(new Date());
sponsorMapper.insertSelective(sponsor);
// 赞赏金额划转
if (transactionEnum.isArticleSponsor()) {
ArticleDTO articleDTO = articleService.findArticleDTOById(sponsor.getDataId(), 1);
TransactionRecord transactionRecord = transactionRecordService.userTransfer(articleDTO.getArticleAuthorId(), sponsor.getSponsor(), transactionEnum);
if (Objects.isNull(transactionRecord.getIdTransactionRecord())) {
throw new TransactionException(TransactionCode.InsufficientBalance);
}
// 更新文章赞赏数
int result = sponsorMapper.updateArticleSponsorCount(articleDTO.getIdArticle());
if (result == 0) {
throw new ServiceException("操作失败!");
}
}
return true;

View File

@ -1,5 +1,6 @@
package com.rymcu.forest.service.impl;
import com.rymcu.forest.core.exception.BusinessException;
import com.rymcu.forest.core.exception.ServiceException;
import com.rymcu.forest.core.service.AbstractService;
import com.rymcu.forest.dto.ArticleTagDTO;
@ -120,17 +121,16 @@ public class TagServiceImpl extends AbstractService<Tag> implements TagService {
@Transactional(rollbackFor = Exception.class)
public Tag saveTag(Tag tag) throws Exception {
Integer result;
tag.setTagDescription(XssUtils.filterHtmlCode(tag.getTagDescription()));
if (tag.getIdTag() == null) {
if (StringUtils.isBlank(tag.getTagTitle())) {
throw new ServiceException("标签名不能为空!");
throw new IllegalArgumentException("标签名不能为空!");
} else {
Condition tagCondition = new Condition(Tag.class);
tagCondition.createCriteria().andCondition("tag_title =", tag.getTagTitle());
List<Tag> tags = tagMapper.selectByCondition(tagCondition);
if (!tags.isEmpty()) {
throw new ServiceException("标签 '" + tag.getTagTitle() + "' 已存在!");
throw new BusinessException("标签 '" + tag.getTagTitle() + "' 已存在!");
}
}
tag = new Tag();

View File

@ -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.exception.ServiceException;
import com.rymcu.forest.core.service.AbstractService;
import com.rymcu.forest.dto.admin.TagDTO;
@ -33,8 +34,7 @@ public class TopicServiceImpl extends AbstractService<Topic> implements TopicSer
@Override
public List<Topic> findTopicNav() {
List<Topic> topics = topicMapper.selectTopicNav();
return topics;
return topicMapper.selectTopicNav();
}
@Override
@ -46,18 +46,18 @@ public class TopicServiceImpl extends AbstractService<Topic> implements TopicSer
@Override
@Transactional(rollbackFor = Exception.class)
public Topic saveTopic(Topic topic) throws Exception {
public Topic saveTopic(Topic topic) throws ServiceException {
Integer result;
topic.setTopicDescriptionHtml(XssUtils.filterHtmlCode(topic.getTopicDescriptionHtml()));
if (topic.getIdTopic() == null) {
if (StringUtils.isBlank(topic.getTopicTitle())) {
throw new ServiceException("标签名不能为空!");
throw new IllegalArgumentException("标签名不能为空!");
} else {
Condition topicCondition = new Condition(Topic.class);
topicCondition.createCriteria().andCondition("topic_title =", topic.getTopicTitle());
List<Topic> topics = topicMapper.selectByCondition(topicCondition);
if (!topics.isEmpty()) {
throw new ServiceException("专题 '" + topic.getTopicTitle() + "' 已存在!");
throw new BusinessException("专题 '" + topic.getTopicTitle() + "' 已存在!");
}
}
topic = new Topic();
@ -103,7 +103,7 @@ public class TopicServiceImpl extends AbstractService<Topic> implements TopicSer
@Override
@Transactional(rollbackFor = Exception.class)
public TopicTagDTO bindTopicTag(TopicTagDTO topicTag) throws Exception {
public TopicTagDTO bindTopicTag(TopicTagDTO topicTag) throws ServiceException {
Integer result = topicMapper.insertTopicTag(topicTag.getIdTopic(), topicTag.getIdTag());
if (result == 0) {
throw new ServiceException("操作失败!");
@ -113,7 +113,7 @@ public class TopicServiceImpl extends AbstractService<Topic> implements TopicSer
@Override
@Transactional(rollbackFor = Exception.class)
public TopicTagDTO unbindTopicTag(TopicTagDTO topicTag) throws Exception {
public TopicTagDTO unbindTopicTag(TopicTagDTO topicTag) throws ServiceException {
Integer result = topicMapper.deleteTopicTag(topicTag.getIdTopic(), topicTag.getIdTag());
if (result == 0) {
throw new ServiceException("操作失败!");
@ -122,14 +122,11 @@ public class TopicServiceImpl extends AbstractService<Topic> implements TopicSer
}
@Override
public PageInfo findTagsByTopicUri(String topicUri, Integer page, Integer rows) {
public List<TagDTO> findTagsByTopicUri(String topicUri) {
TopicDTO topic = topicMapper.selectTopicByTopicUri(topicUri);
if (topic == null) {
return null;
}
PageHelper.startPage(page, rows);
List<TagDTO> list = topicMapper.selectTopicTag(topic.getIdTopic());
PageInfo pageInfo = new PageInfo(list);
return pageInfo;
return topicMapper.selectTopicTag(topic.getIdTopic());
}
}

View File

@ -38,7 +38,7 @@ public class TransactionRecordServiceImpl extends AbstractService<TransactionRec
@Override
@Transactional(rollbackFor = Exception.class)
public TransactionRecord transfer(TransactionRecord transactionRecord) throws Exception {
public TransactionRecord transfer(TransactionRecord transactionRecord) {
// 判断发起者账户状态
boolean formAccountStatus = checkFormAccountStatus(transactionRecord.getFormBankAccount(), transactionRecord.getMoney());
if (formAccountStatus) {
@ -70,7 +70,7 @@ public class TransactionRecordServiceImpl extends AbstractService<TransactionRec
}
@Override
public TransactionRecord userTransfer(Long toUserId, Long formUserId, TransactionEnum transactionType) throws Exception {
public TransactionRecord userTransfer(Long toUserId, Long formUserId, TransactionEnum transactionType) {
BankAccountDTO toBankAccount = bankAccountService.findBankAccountByIdUser(toUserId);
BankAccountDTO formBankAccount = bankAccountService.findBankAccountByIdUser(formUserId);
TransactionRecord transactionRecord = new TransactionRecord();
@ -82,7 +82,7 @@ public class TransactionRecordServiceImpl extends AbstractService<TransactionRec
}
@Override
public TransactionRecord bankTransfer(Long idUser, TransactionEnum transactionType) throws Exception {
public TransactionRecord bankTransfer(Long idUser, TransactionEnum transactionType) {
BankAccountDTO toBankAccount = bankAccountService.findBankAccountByIdUser(idUser);
Boolean isTrue;
// 校验货币规则
@ -107,7 +107,7 @@ public class TransactionRecordServiceImpl extends AbstractService<TransactionRec
}
@Override
public TransactionRecord newbieRewards(TransactionRecord transactionRecord) throws Exception {
public TransactionRecord newbieRewards(TransactionRecord transactionRecord) {
// 判断是否重复发放
Boolean result = transactionRecordMapper.existsWithNewbieRewards(transactionRecord.getToBankAccount());
if (result) {

View File

@ -1,8 +1,6 @@
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.exception.ServiceException;
import com.rymcu.forest.core.exception.*;
import com.rymcu.forest.core.service.AbstractService;
import com.rymcu.forest.core.service.redis.RedisService;
import com.rymcu.forest.dto.*;
@ -61,13 +59,13 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
@Override
@Transactional(rollbackFor = Exception.class)
public void register(String email, String password, String code) throws ServiceException {
public boolean register(String email, String password, String code) {
String vCode = redisService.get(email);
if (StringUtils.isNotBlank(vCode)) {
if (vCode.equals(code)) {
User user = userMapper.findByAccount(email);
if (user != null) {
throw new ServiceException("该邮箱已被注册!");
throw new AccountExistsException("该邮箱已被注册!");
} else {
user = new User();
String nickname = email.split("@")[0];
@ -88,11 +86,11 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
.signature(user.getSignature())
.build());
redisService.delete(email);
return;
return true;
}
}
}
throw new ServiceException("验证码无效!");
throw new CaptchaException();
}
private String checkNickname(String nickname) {
@ -143,13 +141,16 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
}
@Override
public String forgetPassword(String code, String password) throws ServiceException {
public boolean forgetPassword(String code, String password) throws ServiceException {
String email = redisService.get(code);
if (StringUtils.isBlank(email)) {
throw new ServiceException("链接已失效");
} else {
userMapper.updatePasswordByEmail(email, Utils.entryptPassword(password));
return "修改成功,正在跳转登录登陆界面!";
int result = userMapper.updatePasswordByEmail(email, Utils.entryptPassword(password));
if (result == 0) {
throw new ServiceException("密码修改失败!");
}
return true;
}
}
@ -174,31 +175,21 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
}
@Override
public Map findUserInfo(Long idUser) {
Map map = new HashMap(2);
public UserInfoDTO findUserInfo(Long idUser) {
UserInfoDTO user = userMapper.selectUserInfo(idUser);
if (user == null) {
throw new ContentNotExistException("用户不存在!");
} else {
UserExtend userExtend = userExtendMapper.selectByPrimaryKey(user.getIdUser());
if (Objects.isNull(userExtend)) {
userExtend = new UserExtend();
userExtend.setIdUser(user.getIdUser());
userExtendMapper.insertSelective(userExtend);
}
map.put("user", user);
map.put("userExtend", userExtend);
}
return map;
return user;
}
@Override
@Transactional(rollbackFor = Exception.class)
public UserInfoDTO updateUserInfo(UserInfoDTO user) throws Exception {
public UserInfoDTO updateUserInfo(UserInfoDTO user) throws ServiceException {
user.setNickname(formatNickname(user.getNickname()));
Integer number = userMapper.checkNicknameByIdUser(user.getIdUser(), user.getNickname());
if (number > 0) {
throw new ServiceException("该昵称已使用!");
throw new NicknameOccupyException("该昵称已使用!");
}
if (StringUtils.isNotBlank(user.getAvatarType()) && AVATAR_SVG_TYPE.equals(user.getAvatarType())) {
String avatarUrl = UploadController.uploadBase64File(user.getAvatarUrl(), 0);
@ -222,12 +213,10 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
return nickname.replaceAll("\\.", "");
}
@Override
public boolean checkNickname(Long idUser, String nickname) throws ServiceException {
Map map = new HashMap(2);
public boolean checkNicknameByIdUser(Long idUser, String nickname) {
Integer number = userMapper.checkNicknameByIdUser(idUser, nickname);
if (number > 0) {
throw new ServiceException("该昵称已使用!");
return false;
}
return true;
}
@ -244,7 +233,7 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
@Override
public UserExtend updateUserExtend(UserExtend userExtend) throws ServiceException {
int result = userExtendMapper.updateByPrimaryKeySelective(userExtend);
int result = userExtendMapper.updateByPrimaryKey(userExtend);
if (result == 0) {
throw new ServiceException("操作失败!");
}
@ -257,14 +246,17 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
}
@Override
public String updateEmail(ChangeEmailDTO changeEmailDTO) throws ServiceException {
public boolean updateEmail(ChangeEmailDTO changeEmailDTO) throws ServiceException {
Long idUser = changeEmailDTO.getIdUser();
String email = changeEmailDTO.getEmail();
String code = changeEmailDTO.getCode();
String vCode = redisService.get(email);
if (StringUtils.isNotBlank(vCode) && StringUtils.isNotBlank(code) && vCode.equals(code)) {
userMapper.updateEmail(idUser, email);
return email;
int result = userMapper.updateEmail(idUser, email);
if (result == 0) {
throw new ServiceException("修改邮箱失败!");
}
return true;
}
throw new CaptchaException();
}
@ -297,4 +289,15 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
public Integer updateLastOnlineTimeByEmail(String email) {
return userMapper.updateLastOnlineTimeByEmail(email);
}
@Override
public UserExtend findUserExtendInfo(Long idUser) {
UserExtend userExtend = userExtendMapper.selectByPrimaryKey(idUser);
if (Objects.isNull(userExtend)) {
userExtend = new UserExtend();
userExtend.setIdUser(idUser);
userExtendMapper.insertSelective(userExtend);
}
return userExtend;
}
}

View File

@ -6,6 +6,7 @@ import com.rymcu.forest.core.exception.ServiceException;
import com.rymcu.forest.core.result.GlobalResult;
import com.rymcu.forest.core.result.GlobalResultGenerator;
import com.rymcu.forest.dto.*;
import com.rymcu.forest.dto.admin.TagDTO;
import com.rymcu.forest.dto.admin.TopicTagDTO;
import com.rymcu.forest.dto.admin.UserRoleDTO;
import com.rymcu.forest.entity.*;
@ -19,7 +20,7 @@ import java.util.List;
/**
* @author ronger
* */
*/
@RestController
@RequestMapping("/api/v1/admin")
public class AdminController {
@ -42,7 +43,7 @@ public class AdminController {
private ProductService productService;
@GetMapping("/users")
public GlobalResult<PageInfo<UserInfoDTO>> users(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, UserSearchDTO searchDTO){
public GlobalResult<PageInfo<UserInfoDTO>> users(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, UserSearchDTO searchDTO) {
PageHelper.startPage(page, rows);
List<UserInfoDTO> list = userService.findUsers(searchDTO);
PageInfo<UserInfoDTO> pageInfo = new PageInfo<>(list);
@ -50,13 +51,13 @@ public class AdminController {
}
@GetMapping("/user/{idUser}/role")
public GlobalResult<List<Role>> userRole(@PathVariable Long idUser){
public GlobalResult<List<Role>> userRole(@PathVariable Long idUser) {
List<Role> roles = roleService.findByIdUser(idUser);
return GlobalResultGenerator.genSuccessResult(roles);
}
@GetMapping("/roles")
public GlobalResult<PageInfo<Role>> roles(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows){
public GlobalResult<PageInfo<Role>> roles(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows) {
PageHelper.startPage(page, rows);
List<Role> list = roleService.findAll();
PageInfo<Role> pageInfo = new PageInfo<>(list);
@ -76,25 +77,25 @@ public class AdminController {
}
@PatchMapping("/role/update-status")
public GlobalResult<Boolean> updateRoleStatus(@RequestBody Role role) throws Exception {
public GlobalResult<Boolean> updateRoleStatus(@RequestBody Role role) throws ServiceException {
boolean flag = roleService.updateStatus(role.getIdRole(), role.getStatus());
return GlobalResultGenerator.genSuccessResult(flag);
}
@PostMapping("/role/post")
public GlobalResult<Role> addRole(@RequestBody Role role) throws Exception {
public GlobalResult<Boolean> addRole(@RequestBody Role role) throws ServiceException {
boolean flag = roleService.saveRole(role);
return GlobalResultGenerator.genSuccessResult(role);
return GlobalResultGenerator.genSuccessResult(flag);
}
@PutMapping("/role/post")
public GlobalResult<Role> updateRole(@RequestBody Role role) throws Exception {
public GlobalResult<Boolean> updateRole(@RequestBody Role role) throws Exception {
boolean flag = roleService.saveRole(role);
return GlobalResultGenerator.genSuccessResult(role);
return GlobalResultGenerator.genSuccessResult(flag);
}
@GetMapping("/topics")
public GlobalResult<PageInfo<Topic>> topics(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows){
public GlobalResult<PageInfo<Topic>> topics(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows) {
PageHelper.startPage(page, rows);
List<Topic> list = topicService.findAll();
PageInfo<Topic> pageInfo = new PageInfo<>(list);
@ -102,31 +103,33 @@ public class AdminController {
}
@GetMapping("/topic/{topicUri}")
public GlobalResult topic(@PathVariable String topicUri){
public GlobalResult topic(@PathVariable String topicUri) {
if (StringUtils.isBlank(topicUri)) {
return GlobalResultGenerator.genErrorResult("数据异常!");
throw new IllegalArgumentException("参数异常!");
}
Topic topic = topicService.findTopicByTopicUri(topicUri);
return GlobalResultGenerator.genSuccessResult(topic);
}
@GetMapping("/topic/{topicUri}/tags")
public GlobalResult topicTags(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows,@PathVariable String topicUri) {
public GlobalResult<PageInfo<TagDTO>> topicTags(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, @PathVariable String topicUri) {
if (StringUtils.isBlank(topicUri)) {
return GlobalResultGenerator.genErrorResult("数据异常!");
throw new IllegalArgumentException("参数异常!");
}
PageInfo pageInfo = topicService.findTagsByTopicUri(topicUri, page, rows);
PageHelper.startPage(page, rows);
List<TagDTO> list = topicService.findTagsByTopicUri(topicUri);
PageInfo<TagDTO> pageInfo = new PageInfo<>(list);
return GlobalResultGenerator.genSuccessResult(pageInfo);
}
@GetMapping("/topic/detail/{idTopic}")
public GlobalResult<Topic> topicDetail(@PathVariable Integer idTopic){
public GlobalResult<Topic> topicDetail(@PathVariable Integer idTopic) {
Topic topic = topicService.findById(idTopic.toString());
return GlobalResultGenerator.genSuccessResult(topic);
}
@GetMapping("/topic/unbind-topic-tags")
public GlobalResult<PageInfo<Tag>> unbindTopicTags(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, HttpServletRequest request){
public GlobalResult<PageInfo<Tag>> unbindTopicTags(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, HttpServletRequest request) {
Long idTopic = Long.valueOf(request.getParameter("idTopic"));
String tagTitle = request.getParameter("tagTitle");
PageHelper.startPage(page, rows);
@ -160,7 +163,7 @@ public class AdminController {
}
@GetMapping("/tags")
public GlobalResult<PageInfo<Tag>> tags(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows){
public GlobalResult<PageInfo<Tag>> tags(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows) {
PageHelper.startPage(page, rows);
List<Tag> list = tagService.findAll();
PageInfo<Tag> pageInfo = new PageInfo<>(list);
@ -174,7 +177,7 @@ public class AdminController {
}
@GetMapping("/tag/detail/{idTag}")
public GlobalResult<Tag> tagDetail(@PathVariable Integer idTag){
public GlobalResult<Tag> tagDetail(@PathVariable Integer idTag) {
Tag tag = tagService.findById(idTag.toString());
return GlobalResultGenerator.genSuccessResult(tag);
}
@ -224,5 +227,4 @@ public class AdminController {
}
}

View File

@ -2,6 +2,7 @@ package com.rymcu.forest.web.api.article;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.rymcu.forest.core.exception.BusinessException;
import com.rymcu.forest.core.result.GlobalResult;
import com.rymcu.forest.core.result.GlobalResultGenerator;
import com.rymcu.forest.core.service.security.annotation.AuthorshipInterceptor;
@ -105,13 +106,22 @@ public class ArticleController {
}
@PostMapping("/thumbs-up")
public GlobalResult thumbsUp(@RequestBody ArticleThumbsUp articleThumbsUp) throws Exception {
String str = articleThumbsUpService.thumbsUp(articleThumbsUp);
return GlobalResultGenerator.genSuccessResult(str);
public GlobalResult<Integer> thumbsUp(@RequestBody ArticleThumbsUp articleThumbsUp) throws Exception {
if (Objects.isNull(articleThumbsUp) || Objects.isNull(articleThumbsUp.getIdArticle())) {
throw new BusinessException("数据异常,文章不存在!");
}
User user = UserUtils.getCurrentUserByToken();
articleThumbsUp.setIdUser(user.getIdUser());
return GlobalResultGenerator.genSuccessResult(articleThumbsUpService.thumbsUp(articleThumbsUp));
}
@PostMapping("/sponsor")
public GlobalResult sponsor(@RequestBody Sponsor sponsor) throws Exception {
if (Objects.isNull(sponsor) || Objects.isNull(sponsor.getDataId()) || Objects.isNull(sponsor.getDataType())) {
throw new IllegalArgumentException("数据异常");
}
User user = UserUtils.getCurrentUserByToken();
sponsor.setSponsor(user.getIdUser());
boolean flag = sponsorService.sponsorship(sponsor);
return GlobalResultGenerator.genSuccessResult(flag);
}

View File

@ -22,13 +22,13 @@ public class TransactionRecordController {
private TransactionRecordService transactionRecordService;
@PostMapping("/transfer")
public GlobalResult transfer(@RequestBody TransactionRecord transactionRecord) throws Exception {
public GlobalResult transfer(@RequestBody TransactionRecord transactionRecord) {
transactionRecord = transactionRecordService.transfer(transactionRecord);
return GlobalResultGenerator.genSuccessResult(transactionRecord);
}
@PostMapping("/newbie-rewards")
public GlobalResult newbieRewards(@RequestBody TransactionRecord transactionRecord) throws Exception {
public GlobalResult newbieRewards(@RequestBody TransactionRecord transactionRecord) {
transactionRecord = transactionRecordService.newbieRewards(transactionRecord);
return GlobalResultGenerator.genSuccessResult(transactionRecord);
}

View File

@ -2,6 +2,7 @@ package com.rymcu.forest.web.api.common;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.rymcu.forest.core.exception.AccountExistsException;
import com.rymcu.forest.core.exception.ServiceException;
import com.rymcu.forest.core.result.GlobalResult;
import com.rymcu.forest.core.result.GlobalResultGenerator;
@ -10,6 +11,7 @@ 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 org.apache.shiro.authc.UnknownAccountException;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -42,7 +44,7 @@ public class CommonApiController {
map.put("message", GlobalResultMessage.SEND_SUCCESS.getMessage());
User user = userService.findByAccount(email);
if (user != null) {
map.put("message", "该邮箱已被注册!");
throw new AccountExistsException("该邮箱已被注册!");
} else {
Integer result = javaMailService.sendEmailCode(email);
if (result == 0) {
@ -53,25 +55,23 @@ public class CommonApiController {
}
@GetMapping("/get-forget-password-email")
public GlobalResult<Map<Object, Object>> getForgetPasswordEmail(@RequestParam("email") String email) throws MessagingException {
Map<Object, Object> map = new HashMap<>(1);
map.put("message", GlobalResultMessage.SEND_SUCCESS.getMessage());
public GlobalResult getForgetPasswordEmail(@RequestParam("email") String email) throws MessagingException, ServiceException {
User user = userService.findByAccount(email);
if (user != null) {
Integer result = javaMailService.sendForgetPasswordEmail(email);
if (result == 0) {
map.put("message", GlobalResultMessage.SEND_FAIL.getMessage());
throw new ServiceException(GlobalResultMessage.SEND_FAIL.getMessage());
}
} else {
map.put("message", "该邮箱未注册!");
throw new UnknownAccountException("该邮箱未注册!");
}
return GlobalResultGenerator.genSuccessResult(map);
return GlobalResultGenerator.genSuccessResult(GlobalResultMessage.SEND_SUCCESS.getMessage());
}
@PostMapping("/register")
public GlobalResult<Map> register(@RequestBody UserRegisterInfoDTO registerInfo) throws ServiceException {
userService.register(registerInfo.getEmail(), registerInfo.getPassword(), registerInfo.getCode());
return GlobalResultGenerator.genSuccessResult();
public GlobalResult<Boolean> register(@RequestBody UserRegisterInfoDTO registerInfo) {
boolean flag = userService.register(registerInfo.getEmail(), registerInfo.getPassword(), registerInfo.getCode());
return GlobalResultGenerator.genSuccessResult(flag);
}
@PostMapping("/login")
@ -90,7 +90,7 @@ public class CommonApiController {
public GlobalResult<PageInfo<ArticleDTO>> articles(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, ArticleSearchDTO searchDTO) {
PageHelper.startPage(page, rows);
List<ArticleDTO> list = articleService.findArticles(searchDTO);
PageInfo<ArticleDTO> pageInfo = new PageInfo(list);
PageInfo<ArticleDTO> pageInfo = new PageInfo<>(list);
return GlobalResultGenerator.genSuccessResult(pageInfo);
}
@ -98,7 +98,7 @@ public class CommonApiController {
public GlobalResult<PageInfo<ArticleDTO>> announcements(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "5") Integer rows) {
PageHelper.startPage(page, rows);
List<ArticleDTO> list = articleService.findAnnouncements();
PageInfo<ArticleDTO> pageInfo = new PageInfo(list);
PageInfo<ArticleDTO> pageInfo = new PageInfo<>(list);
return GlobalResultGenerator.genSuccessResult(pageInfo);
}
@ -110,9 +110,9 @@ public class CommonApiController {
}
@PatchMapping("/forget-password")
public GlobalResult<String> forgetPassword(@RequestBody ForgetPasswordDTO forgetPassword) throws ServiceException {
String str = userService.forgetPassword(forgetPassword.getCode(), forgetPassword.getPassword());
return GlobalResultGenerator.genSuccessResult(str);
public GlobalResult<Boolean> forgetPassword(@RequestBody ForgetPasswordDTO forgetPassword) throws ServiceException {
boolean flag = userService.forgetPassword(forgetPassword.getCode(), forgetPassword.getPassword());
return GlobalResultGenerator.genSuccessResult(flag);
}
@GetMapping("/portfolio/{id}")
@ -126,7 +126,7 @@ public class CommonApiController {
public GlobalResult<PageInfo<ArticleDTO>> articles(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, @PathVariable Long id) {
PageHelper.startPage(page, rows);
List<ArticleDTO> list = articleService.findArticlesByIdPortfolio(id);
PageInfo<ArticleDTO> pageInfo = new PageInfo(list);
PageInfo<ArticleDTO> pageInfo = new PageInfo<>(list);
return GlobalResultGenerator.genSuccessResult(pageInfo);
}
@ -134,7 +134,7 @@ public class CommonApiController {
public GlobalResult<PageInfo<PortfolioDTO>> portfolios(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "12") Integer rows) {
PageHelper.startPage(page, rows);
List<PortfolioDTO> list = portfolioService.findPortfolios();
PageInfo<PortfolioDTO> pageInfo = new PageInfo(list);
PageInfo<PortfolioDTO> pageInfo = new PageInfo<>(list);
return GlobalResultGenerator.genSuccessResult(pageInfo);
}
@ -142,7 +142,7 @@ public class CommonApiController {
public GlobalResult<PageInfo<ProductDTO>> products(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "12") Integer rows) {
PageHelper.startPage(page, rows);
List<ProductDTO> list = productService.findProducts();
PageInfo<ProductDTO> pageInfo = new PageInfo(list);
PageInfo<ProductDTO> pageInfo = new PageInfo<>(list);
return GlobalResultGenerator.genSuccessResult(pageInfo);
}

View File

@ -1,6 +1,7 @@
package com.rymcu.forest.web.api.portfolio;
import com.github.pagehelper.PageInfo;
import com.rymcu.forest.core.exception.ServiceException;
import com.rymcu.forest.core.result.GlobalResult;
import com.rymcu.forest.core.result.GlobalResultGenerator;
import com.rymcu.forest.core.service.security.annotation.AuthorshipInterceptor;
@ -32,62 +33,94 @@ public class PortfolioController {
private UserService userService;
@GetMapping("/detail/{idPortfolio}")
public GlobalResult detail(@PathVariable Long idPortfolio,@RequestParam(defaultValue = "0") Integer type) {
PortfolioDTO portfolio = portfolioService.findPortfolioDTOById(idPortfolio, type);
Map map = new HashMap<>(1);
map.put("portfolio", portfolio);
return GlobalResultGenerator.genSuccessResult(map);
public GlobalResult<PortfolioDTO> detail(@PathVariable Long idPortfolio, @RequestParam(defaultValue = "0") Integer type) {
if (idPortfolio == null || idPortfolio == 0) {
throw new IllegalArgumentException("作品集主键参数异常!");
}
return GlobalResultGenerator.genSuccessResult(portfolioService.findPortfolioDTOById(idPortfolio, type));
}
@PostMapping("/post")
public GlobalResult add(@RequestBody Portfolio portfolio) throws BaseApiException {
public GlobalResult<Portfolio> add(@RequestBody Portfolio portfolio) throws BaseApiException {
User user = UserUtils.getCurrentUserByToken();
portfolio.setPortfolioAuthorId(user.getIdUser());
portfolio = portfolioService.postPortfolio(portfolio);
return GlobalResultGenerator.genSuccessResult(portfolio);
}
@PutMapping("/post")
@AuthorshipInterceptor(moduleName = Module.PORTFOLIO)
public GlobalResult update(@RequestBody Portfolio portfolio) throws BaseApiException {
public GlobalResult<Portfolio> update(@RequestBody Portfolio portfolio) throws BaseApiException {
if (portfolio.getIdPortfolio() == null || portfolio.getIdPortfolio() == 0) {
throw new IllegalArgumentException("作品集主键参数异常!");
}
User user = UserUtils.getCurrentUserByToken();
portfolio.setPortfolioAuthorId(user.getIdUser());
portfolio = portfolioService.postPortfolio(portfolio);
return GlobalResultGenerator.genSuccessResult(portfolio);
}
@GetMapping("/{idPortfolio}/unbind-articles")
@AuthorshipInterceptor(moduleName = Module.PORTFOLIO)
public GlobalResult unbindArticles(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, @RequestParam(defaultValue = "") String searchText, @PathVariable Long idPortfolio) throws Exception {
PageInfo pageInfo = portfolioService.findUnbindArticles(page, rows, searchText, idPortfolio);
public GlobalResult<PageInfo> unbindArticles(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, @RequestParam(defaultValue = "") String searchText, @PathVariable Long idPortfolio) throws BaseApiException {
if (idPortfolio == null || idPortfolio == 0) {
throw new IllegalArgumentException("作品集主键参数异常!");
}
User user = UserUtils.getCurrentUserByToken();
PageInfo pageInfo = portfolioService.findUnbindArticles(page, rows, searchText, idPortfolio, user.getIdUser());
return GlobalResultGenerator.genSuccessResult(pageInfo);
}
@PostMapping("/bind-article")
@AuthorshipInterceptor(moduleName = Module.PORTFOLIO)
public GlobalResult bindArticle(@RequestBody PortfolioArticleDTO portfolioArticle) throws Exception {
public GlobalResult<Boolean> bindArticle(@RequestBody PortfolioArticleDTO portfolioArticle) throws ServiceException {
if (portfolioArticle.getIdPortfolio() == null || portfolioArticle.getIdPortfolio() == 0) {
throw new IllegalArgumentException("作品集主键参数异常!");
}
boolean flag = portfolioService.bindArticle(portfolioArticle);
return GlobalResultGenerator.genSuccessResult(flag);
}
@PutMapping("/update-article-sort-no")
@AuthorshipInterceptor(moduleName = Module.PORTFOLIO)
public GlobalResult updateArticleSortNo(@RequestBody PortfolioArticleDTO portfolioArticle) throws Exception {
public GlobalResult<Boolean> updateArticleSortNo(@RequestBody PortfolioArticleDTO portfolioArticle) throws ServiceException {
if (portfolioArticle.getIdPortfolio() == null || portfolioArticle.getIdPortfolio() == 0) {
throw new IllegalArgumentException("作品集主键参数异常!");
}
if (portfolioArticle.getIdArticle() == null || portfolioArticle.getIdArticle() == 0) {
throw new IllegalArgumentException("文章主键参数异常!");
}
if (portfolioArticle.getSortNo() == null) {
throw new IllegalArgumentException("排序号不能为空!");
}
boolean flag = portfolioService.updateArticleSortNo(portfolioArticle);
return GlobalResultGenerator.genSuccessResult(flag);
}
@DeleteMapping("/unbind-article")
@AuthorshipInterceptor(moduleName = Module.PORTFOLIO)
public GlobalResult unbindArticle(Long idArticle, Long idPortfolio) throws Exception {
public GlobalResult<Boolean> unbindArticle(Long idArticle, Long idPortfolio) throws ServiceException {
if (idPortfolio == null || idPortfolio == 0) {
throw new IllegalArgumentException("作品集主键参数异常");
}
if (idArticle == null || idArticle == 0) {
throw new IllegalArgumentException("文章主键参数异常");
}
boolean flag = portfolioService.unbindArticle(idPortfolio, idArticle);
return GlobalResultGenerator.genSuccessResult(flag);
}
@DeleteMapping("/delete")
@AuthorshipInterceptor(moduleName = Module.PORTFOLIO)
public GlobalResult delete(Long idPortfolio) throws BaseApiException, IllegalAccessException {
public GlobalResult<Boolean> delete(Long idPortfolio) throws BaseApiException {
if (idPortfolio == null || idPortfolio == 0) {
throw new IllegalArgumentException("参数异常!");
}
User user = UserUtils.getCurrentUserByToken();
Long idUser = user.getIdUser();
Integer roleWeights = userService.findRoleWeightsByUser(idUser);
boolean map = portfolioService.deletePortfolio(idPortfolio, idUser, roleWeights);
return GlobalResultGenerator.genSuccessResult(map);
boolean flag = portfolioService.deletePortfolio(idPortfolio, idUser, roleWeights);
return GlobalResultGenerator.genSuccessResult(flag);
}
}

View File

@ -35,57 +35,59 @@ public class UserInfoController {
@GetMapping("/detail/{idUser}")
@SecurityInterceptor
public GlobalResult detail(@PathVariable Long idUser) {
Map map = userService.findUserInfo(idUser);
return GlobalResultGenerator.genSuccessResult(map);
public GlobalResult<UserInfoDTO> detail(@PathVariable Long idUser) {
UserInfoDTO userInfo = userService.findUserInfo(idUser);
return GlobalResultGenerator.genSuccessResult(userInfo);
}
@GetMapping("/detail/{idUser}/extend-info")
@SecurityInterceptor
public GlobalResult<UserExtend> extendInfo(@PathVariable Long idUser) {
UserExtend userExtend = userService.findUserExtendInfo(idUser);
return GlobalResultGenerator.genSuccessResult(userExtend);
}
@GetMapping("/check-nickname")
@SecurityInterceptor
public GlobalResult checkNickname(@RequestParam Long idUser, @RequestParam String nickname) throws ServiceException {
boolean flag = userService.checkNickname(idUser, nickname);
public GlobalResult checkNickname(@RequestParam Long idUser, @RequestParam String nickname) {
boolean flag = userService.checkNicknameByIdUser(idUser, nickname);
return GlobalResultGenerator.genSuccessResult(flag);
}
@PatchMapping("/update")
@SecurityInterceptor
public GlobalResult updateUserInfo(@RequestBody UserInfoDTO user) throws Exception {
UserInfoDTO newUsers = userService.updateUserInfo(user);
return GlobalResultGenerator.genSuccessResult(newUsers);
public GlobalResult<UserInfoDTO> updateUserInfo(@RequestBody UserInfoDTO user) throws ServiceException {
user = userService.updateUserInfo(user);
return GlobalResultGenerator.genSuccessResult(user);
}
@PatchMapping("/update-extend")
@SecurityInterceptor
public GlobalResult updateUserExtend(@RequestBody UserExtend userExtend) throws ServiceException {
UserExtend map = userService.updateUserExtend(userExtend);
return GlobalResultGenerator.genSuccessResult(map);
public GlobalResult<UserExtend> updateUserExtend(@RequestBody UserExtend userExtend) throws ServiceException {
userExtend = userService.updateUserExtend(userExtend);
return GlobalResultGenerator.genSuccessResult(userExtend);
}
@PatchMapping("/update-email")
@SecurityInterceptor
public GlobalResult updateEmail(@RequestBody ChangeEmailDTO changeEmailDTO) throws ServiceException {
String email = userService.updateEmail(changeEmailDTO);
return GlobalResultGenerator.genSuccessResult(email);
public GlobalResult<Boolean> updateEmail(@RequestBody ChangeEmailDTO changeEmailDTO) throws ServiceException {
boolean flag = userService.updateEmail(changeEmailDTO);
return GlobalResultGenerator.genSuccessResult(flag);
}
@PatchMapping("/update-password")
@SecurityInterceptor
public GlobalResult updatePassword(@RequestBody UpdatePasswordDTO updatePasswordDTO) {
public GlobalResult<Boolean> updatePassword(@RequestBody UpdatePasswordDTO updatePasswordDTO) {
boolean flag = userService.updatePassword(updatePasswordDTO);
return GlobalResultGenerator.genSuccessResult(flag);
}
@GetMapping("/login-records")
@SecurityInterceptor
public GlobalResult loginRecords(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, @RequestParam Integer idUser) {
public GlobalResult<PageInfo<LoginRecord>> loginRecords(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, @RequestParam Integer idUser) {
PageHelper.startPage(page, rows);
List<LoginRecord> list = loginRecordService.findLoginRecordByIdUser(idUser);
PageInfo<LoginRecord> pageInfo = new PageInfo<>(list);
Map<String, Object> map = new HashMap<String, Object>(2);
map.put("records", pageInfo.getList());
Map pagination = Utils.getPagination(pageInfo);
map.put("pagination", pagination);
return GlobalResultGenerator.genSuccessResult(map);
return GlobalResultGenerator.genSuccessResult(pageInfo);
}
}