Commit f952aead by 段启岩

各个点赞列表完成

parent 7405f4a2
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
u.nick_name, u.nick_name,
u.user_avatar, u.user_avatar,
u.signature, u.signature,
bp.create_time praise_yime bp.create_time praise_time
from blog_praise bp, user u from blog_praise bp, user u
where bp.user_id = u.user_id where bp.user_id = u.user_id
and bp.target_id = #{targetId} and bp.target_id = #{targetId}
......
package cn.meteor.beyondclouds.modules.post.api; package cn.meteor.beyondclouds.modules.post.api;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.post.exception.PostServiceException; import cn.meteor.beyondclouds.modules.post.exception.PostServiceException;
import cn.meteor.beyondclouds.modules.post.service.IPostPraiseService; import cn.meteor.beyondclouds.modules.post.service.IPostPraiseService;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import cn.meteor.beyondclouds.util.SubjectUtils; import cn.meteor.beyondclouds.util.SubjectUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/** /**
* @author gaoTong * @author gaoTong
* @date 2020/1/31 9:27 * @date 2020/1/31 9:27
...@@ -56,4 +63,17 @@ public class PostPraiseApi { ...@@ -56,4 +63,17 @@ public class PostPraiseApi {
} }
} }
@Anonymous
@ApiOperation("动态点赞列表")
@GetMapping("/post/{postId}/praises")
public Response getPraises(@Valid PageForm pageForm, BindingResult bindingResult,
@PathVariable("postId") String postId) {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
PageDTO<PraiseUserDTO> pageDTO = postPraiseService.getPostPraises(pageForm.getPage(), pageForm.getSize(), postId);
return Response.success(pageDTO);
}
} }
package cn.meteor.beyondclouds.modules.post.mapper; package cn.meteor.beyondclouds.modules.post.mapper;
import cn.meteor.beyondclouds.modules.post.entity.PostPraise; import cn.meteor.beyondclouds.modules.post.entity.PostPraise;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/** /**
* <p> * <p>
...@@ -12,5 +16,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -12,5 +16,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2020-02-20 * @since 2020-02-20
*/ */
public interface PostPraiseMapper extends BaseMapper<PostPraise> { public interface PostPraiseMapper extends BaseMapper<PostPraise> {
/**
* 查询点赞列表分页
* @param page
* @param targetId
* @param targetType
* @return
*/
IPage<PraiseUserDTO> selectPraisePage(Page<?> page, @Param("targetId") String targetId, @Param("targetType") Integer targetType);
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.meteor.beyondclouds.modules.post.mapper.PostPraiseMapper"> <mapper namespace="cn.meteor.beyondclouds.modules.post.mapper.PostPraiseMapper">
<select id="selectPraisePage" resultType="cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO">
select
u.user_id,
u.nick_name,
u.user_avatar,
u.signature,
pp.create_time praise_time
from post_praise pp, user u
where pp.user_id = u.user_id
and pp.target_id = #{targetId}
and pp.target_type = #{targetType}
order by pp.create_time desc
</select>
</mapper> </mapper>
package cn.meteor.beyondclouds.modules.post.service; package cn.meteor.beyondclouds.modules.post.service;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.modules.post.entity.PostPraise; import cn.meteor.beyondclouds.modules.post.entity.PostPraise;
import cn.meteor.beyondclouds.modules.post.exception.PostServiceException; import cn.meteor.beyondclouds.modules.post.exception.PostServiceException;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -29,4 +31,14 @@ public interface IPostPraiseService extends IService<PostPraise> { ...@@ -29,4 +31,14 @@ public interface IPostPraiseService extends IService<PostPraise> {
* @throws PostServiceException * @throws PostServiceException
*/ */
void delPostPraise(String currentUserId, String postId) throws PostServiceException; void delPostPraise(String currentUserId, String postId) throws PostServiceException;
/**
* 动态点赞列表
* @param page
* @param size
* @param postId
* @return
*/
PageDTO<PraiseUserDTO> getPostPraises(Integer page, Integer size, String postId);
} }
package cn.meteor.beyondclouds.modules.post.service.impl; package cn.meteor.beyondclouds.modules.post.service.impl;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage; import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.core.queue.message.DataItemType; import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.modules.blog.enums.BlogPraiseType;
import cn.meteor.beyondclouds.modules.post.entity.Post; import cn.meteor.beyondclouds.modules.post.entity.Post;
import cn.meteor.beyondclouds.modules.post.entity.PostPraise; import cn.meteor.beyondclouds.modules.post.entity.PostPraise;
import cn.meteor.beyondclouds.modules.post.enums.PostErrorCode; import cn.meteor.beyondclouds.modules.post.enums.PostErrorCode;
...@@ -12,7 +14,11 @@ import cn.meteor.beyondclouds.modules.post.service.IPostCommentService; ...@@ -12,7 +14,11 @@ import cn.meteor.beyondclouds.modules.post.service.IPostCommentService;
import cn.meteor.beyondclouds.modules.post.service.IPostPraiseService; import cn.meteor.beyondclouds.modules.post.service.IPostPraiseService;
import cn.meteor.beyondclouds.modules.post.service.IPostService; import cn.meteor.beyondclouds.modules.post.service.IPostService;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService; import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import cn.meteor.beyondclouds.util.PageUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -30,6 +36,7 @@ public class PostPraiseServiceImpl extends ServiceImpl<PostPraiseMapper, PostPra ...@@ -30,6 +36,7 @@ public class PostPraiseServiceImpl extends ServiceImpl<PostPraiseMapper, PostPra
private IPostService postService; private IPostService postService;
private IMessageQueueService messageQueueService; private IMessageQueueService messageQueueService;
private PostPraiseMapper postPraiseMapper;
@Autowired @Autowired
public void setPostService(IPostService postService) { public void setPostService(IPostService postService) {
...@@ -41,6 +48,11 @@ public class PostPraiseServiceImpl extends ServiceImpl<PostPraiseMapper, PostPra ...@@ -41,6 +48,11 @@ public class PostPraiseServiceImpl extends ServiceImpl<PostPraiseMapper, PostPra
this.messageQueueService = messageQueueService; this.messageQueueService = messageQueueService;
} }
@Autowired
public void setPostPraiseMapper(PostPraiseMapper postPraiseMapper) {
this.postPraiseMapper = postPraiseMapper;
}
@Override @Override
public void postPraise(String currentUserId, String postId) throws PostServiceException { public void postPraise(String currentUserId, String postId) throws PostServiceException {
...@@ -104,4 +116,16 @@ public class PostPraiseServiceImpl extends ServiceImpl<PostPraiseMapper, PostPra ...@@ -104,4 +116,16 @@ public class PostPraiseServiceImpl extends ServiceImpl<PostPraiseMapper, PostPra
post.setPraiseNum(post.getPraiseNum() - 1); post.setPraiseNum(post.getPraiseNum() - 1);
postService.updateById(post); postService.updateById(post);
} }
@Override
public PageDTO<PraiseUserDTO> getPostPraises(Integer page, Integer size, String postId) {
IPage<PraiseUserDTO> praiseUserDTOPage = postPraiseMapper.selectPraisePage(
new Page(page, size),
postId,
PostPraiseType.POST_PRAISE.getPraiseType());
PageDTO<PraiseUserDTO> pageDTO = new PageDTO<>();
PageUtils.copyMeta(praiseUserDTOPage, pageDTO);
pageDTO.setDataList(praiseUserDTOPage.getRecords());
return pageDTO;
}
} }
package cn.meteor.beyondclouds.modules.project.api; package cn.meteor.beyondclouds.modules.project.api;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException; import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import cn.meteor.beyondclouds.modules.project.service.IProjectPraiseService; import cn.meteor.beyondclouds.modules.project.service.IProjectPraiseService;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import cn.meteor.beyondclouds.util.SubjectUtils; import cn.meteor.beyondclouds.util.SubjectUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/** /**
* @author gaoTong * @author gaoTong
* @date 2020/1/31 9:27 * @date 2020/1/31 9:27
...@@ -79,4 +86,17 @@ public class ProjectPraiseApi { ...@@ -79,4 +86,17 @@ public class ProjectPraiseApi {
} }
} }
@Anonymous
@ApiOperation("项目点赞列表")
@GetMapping("/project/{projectId}/praises")
public Response getPraises(@Valid PageForm pageForm, BindingResult bindingResult,
@PathVariable("projectId") String projectId) {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
PageDTO<PraiseUserDTO> pageDTO = projectPraiseService.getProjectPraises(pageForm.getPage(), pageForm.getSize(), projectId);
return Response.success(pageDTO);
}
} }
package cn.meteor.beyondclouds.modules.project.mapper; package cn.meteor.beyondclouds.modules.project.mapper;
import cn.meteor.beyondclouds.modules.project.entity.ProjectPraise; import cn.meteor.beyondclouds.modules.project.entity.ProjectPraise;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/** /**
* <p> * <p>
...@@ -12,5 +16,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -12,5 +16,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2020-02-20 * @since 2020-02-20
*/ */
public interface ProjectPraiseMapper extends BaseMapper<ProjectPraise> { public interface ProjectPraiseMapper extends BaseMapper<ProjectPraise> {
/**
* 查询点赞列表分页
* @param page
* @param targetId
* @param targetType
* @return
*/
IPage<PraiseUserDTO> selectPraisePage(Page<?> page, @Param("targetId") String targetId, @Param("targetType") Integer targetType);
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.meteor.beyondclouds.modules.project.mapper.ProjectPraiseMapper"> <mapper namespace="cn.meteor.beyondclouds.modules.project.mapper.ProjectPraiseMapper">
<select id="selectPraisePage" resultType="cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO">
select
u.user_id,
u.nick_name,
u.user_avatar,
u.signature,
pp.create_time praise_time
from project_praise pp, user u
where pp.user_id = u.user_id
and pp.target_id = #{targetId}
and pp.target_type = #{targetType}
order by pp.create_time desc
</select>
</mapper> </mapper>
package cn.meteor.beyondclouds.modules.project.service; package cn.meteor.beyondclouds.modules.project.service;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.modules.project.entity.ProjectPraise; import cn.meteor.beyondclouds.modules.project.entity.ProjectPraise;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException; import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -42,4 +44,13 @@ public interface IProjectPraiseService extends IService<ProjectPraise> { ...@@ -42,4 +44,13 @@ public interface IProjectPraiseService extends IService<ProjectPraise> {
* @param commentId * @param commentId
*/ */
void deleteProjectCommentPraise(String currentUserId, String commentId) throws ProjectServiceException; void deleteProjectCommentPraise(String currentUserId, String commentId) throws ProjectServiceException;
/**
* 项目点赞列表
* @param page
* @param size
* @param projectId
* @return
*/
PageDTO<PraiseUserDTO> getProjectPraises(Integer page, Integer size, String projectId);
} }
package cn.meteor.beyondclouds.modules.project.service.impl; package cn.meteor.beyondclouds.modules.project.service.impl;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.common.enums.ErrorCode; import cn.meteor.beyondclouds.common.enums.ErrorCode;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage; import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.core.queue.message.DataItemType; import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.modules.post.enums.PostPraiseType;
import cn.meteor.beyondclouds.modules.post.service.IPostCommentService; import cn.meteor.beyondclouds.modules.post.service.IPostCommentService;
import cn.meteor.beyondclouds.modules.project.entity.Project; import cn.meteor.beyondclouds.modules.project.entity.Project;
import cn.meteor.beyondclouds.modules.project.entity.ProjectComment; import cn.meteor.beyondclouds.modules.project.entity.ProjectComment;
...@@ -17,7 +19,11 @@ import cn.meteor.beyondclouds.modules.project.service.IProjectCommentService; ...@@ -17,7 +19,11 @@ import cn.meteor.beyondclouds.modules.project.service.IProjectCommentService;
import cn.meteor.beyondclouds.modules.project.service.IProjectPraiseService; import cn.meteor.beyondclouds.modules.project.service.IProjectPraiseService;
import cn.meteor.beyondclouds.modules.project.service.IProjectService; import cn.meteor.beyondclouds.modules.project.service.IProjectService;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService; import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import cn.meteor.beyondclouds.util.PageUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -36,6 +42,7 @@ public class ProjectPraiseServiceImpl extends ServiceImpl<ProjectPraiseMapper, P ...@@ -36,6 +42,7 @@ public class ProjectPraiseServiceImpl extends ServiceImpl<ProjectPraiseMapper, P
private IProjectService projectService; private IProjectService projectService;
private IProjectCommentService projectCommentService; private IProjectCommentService projectCommentService;
private IMessageQueueService messageQueueService; private IMessageQueueService messageQueueService;
private ProjectPraiseMapper projectPraiseMapper;
@Autowired @Autowired
public void setProjectService(IProjectService projectService) { public void setProjectService(IProjectService projectService) {
...@@ -52,6 +59,11 @@ public class ProjectPraiseServiceImpl extends ServiceImpl<ProjectPraiseMapper, P ...@@ -52,6 +59,11 @@ public class ProjectPraiseServiceImpl extends ServiceImpl<ProjectPraiseMapper, P
this.messageQueueService = messageQueueService; this.messageQueueService = messageQueueService;
} }
@Autowired
public void setProjectPraiseMapper(ProjectPraiseMapper projectPraiseMapper) {
this.projectPraiseMapper = projectPraiseMapper;
}
@Override @Override
public void praiseProject(String currentUserId, String projectId) throws ProjectServiceException { public void praiseProject(String currentUserId, String projectId) throws ProjectServiceException {
...@@ -155,4 +167,16 @@ public class ProjectPraiseServiceImpl extends ServiceImpl<ProjectPraiseMapper, P ...@@ -155,4 +167,16 @@ public class ProjectPraiseServiceImpl extends ServiceImpl<ProjectPraiseMapper, P
// 1.删除 // 1.删除
remove(queryWrapper); remove(queryWrapper);
} }
@Override
public PageDTO<PraiseUserDTO> getProjectPraises(Integer page, Integer size, String projectId) {
IPage<PraiseUserDTO> praiseUserDTOPage = projectPraiseMapper.selectPraisePage(
new Page(page, size),
projectId,
ProjectPraiseType.PROJECT_PRAISE.getPraiseType());
PageDTO<PraiseUserDTO> pageDTO = new PageDTO<>();
PageUtils.copyMeta(praiseUserDTOPage, pageDTO);
pageDTO.setDataList(praiseUserDTOPage.getRecords());
return pageDTO;
}
} }
package cn.meteor.beyondclouds.modules.question.api; package cn.meteor.beyondclouds.modules.question.api;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.authentication.Subject; import cn.meteor.beyondclouds.core.authentication.Subject;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException; import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
import cn.meteor.beyondclouds.modules.question.service.IQuestionPraiseService; import cn.meteor.beyondclouds.modules.question.service.IQuestionPraiseService;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import cn.meteor.beyondclouds.util.SubjectUtils; import cn.meteor.beyondclouds.util.SubjectUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/** /**
* @author gaoTong * @author gaoTong
* @date 2020/1/31 9:27 * @date 2020/1/31 9:27
...@@ -79,4 +86,17 @@ public class QuestionPraiseApi { ...@@ -79,4 +86,17 @@ public class QuestionPraiseApi {
} }
} }
@Anonymous
@ApiOperation("问题点赞列表")
@GetMapping("/question/{questionId}/praises")
public Response getPraises(@Valid PageForm pageForm, BindingResult bindingResult,
@PathVariable("questionId") String questionId) {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
PageDTO<PraiseUserDTO> pageDTO = questionPraiseService.getQuestionPraises(pageForm.getPage(), pageForm.getSize(), questionId);
return Response.success(pageDTO);
}
} }
package cn.meteor.beyondclouds.modules.question.mapper; package cn.meteor.beyondclouds.modules.question.mapper;
import cn.meteor.beyondclouds.modules.question.entity.QuestionPraise; import cn.meteor.beyondclouds.modules.question.entity.QuestionPraise;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/** /**
* <p> * <p>
...@@ -12,5 +16,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -12,5 +16,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2020-02-20 * @since 2020-02-20
*/ */
public interface QuestionPraiseMapper extends BaseMapper<QuestionPraise> { public interface QuestionPraiseMapper extends BaseMapper<QuestionPraise> {
/**
* 查询点赞列表分页
* @param page
* @param targetId
* @param targetType
* @return
*/
IPage<PraiseUserDTO> selectPraisePage(Page<?> page, @Param("targetId") String targetId, @Param("targetType") Integer targetType);
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.meteor.beyondclouds.modules.question.mapper.QuestionPraiseMapper"> <mapper namespace="cn.meteor.beyondclouds.modules.question.mapper.QuestionPraiseMapper">
<select id="selectPraisePage" resultType="cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO">
select
u.user_id,
u.nick_name,
u.user_avatar,
u.signature,
qp.create_time praise_time
from question_praise qp, user u
where qp.user_id = u.user_id
and qp.target_id = #{targetId}
and qp.target_type = #{targetType}
order by qp.create_time desc
</select>
</mapper> </mapper>
package cn.meteor.beyondclouds.modules.question.service; package cn.meteor.beyondclouds.modules.question.service;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.modules.question.entity.QuestionPraise; import cn.meteor.beyondclouds.modules.question.entity.QuestionPraise;
import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException; import cn.meteor.beyondclouds.modules.question.exception.QuestionServiceException;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -41,4 +43,13 @@ public interface IQuestionPraiseService extends IService<QuestionPraise> { ...@@ -41,4 +43,13 @@ public interface IQuestionPraiseService extends IService<QuestionPraise> {
* @param replyId * @param replyId
*/ */
void deleteQuestionReplyPraise(String currentUserId, String replyId) throws QuestionServiceException; void deleteQuestionReplyPraise(String currentUserId, String replyId) throws QuestionServiceException;
/**
* 问题点赞列表
* @param page
* @param size
* @param questionId
* @return
*/
PageDTO<PraiseUserDTO> getQuestionPraises(Integer page, Integer size, String questionId);
} }
package cn.meteor.beyondclouds.modules.question.service.impl; package cn.meteor.beyondclouds.modules.question.service.impl;
import cn.meteor.beyondclouds.common.dto.PageDTO;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage; import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.core.queue.message.DataItemType; import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.modules.project.enums.ProjectPraiseType;
import cn.meteor.beyondclouds.modules.question.entity.Question; import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionPraise; import cn.meteor.beyondclouds.modules.question.entity.QuestionPraise;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply; import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
...@@ -13,7 +15,11 @@ import cn.meteor.beyondclouds.modules.question.service.IQuestionPraiseService; ...@@ -13,7 +15,11 @@ import cn.meteor.beyondclouds.modules.question.service.IQuestionPraiseService;
import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService; import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService;
import cn.meteor.beyondclouds.modules.question.service.IQuestionService; import cn.meteor.beyondclouds.modules.question.service.IQuestionService;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService; import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.user.dto.PraiseUserDTO;
import cn.meteor.beyondclouds.util.PageUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -32,6 +38,7 @@ public class QuestionPraiseServiceImpl extends ServiceImpl<QuestionPraiseMapper, ...@@ -32,6 +38,7 @@ public class QuestionPraiseServiceImpl extends ServiceImpl<QuestionPraiseMapper,
private IQuestionService questionService; private IQuestionService questionService;
private IQuestionReplyService questionReplyService; private IQuestionReplyService questionReplyService;
private IMessageQueueService messageQueueService; private IMessageQueueService messageQueueService;
private QuestionPraiseMapper questionPraiseMapper;
@Autowired @Autowired
public void setQuestionService(IQuestionService questionService) { public void setQuestionService(IQuestionService questionService) {
...@@ -48,6 +55,11 @@ public class QuestionPraiseServiceImpl extends ServiceImpl<QuestionPraiseMapper, ...@@ -48,6 +55,11 @@ public class QuestionPraiseServiceImpl extends ServiceImpl<QuestionPraiseMapper,
this.messageQueueService = messageQueueService; this.messageQueueService = messageQueueService;
} }
@Autowired
public void setQuestionPraiseMapper(QuestionPraiseMapper questionPraiseMapper) {
this.questionPraiseMapper = questionPraiseMapper;
}
@Override @Override
public void questionPraise(String currentUserId, String questionId) throws QuestionServiceException { public void questionPraise(String currentUserId, String questionId) throws QuestionServiceException {
//1.查找问题是否存在 //1.查找问题是否存在
...@@ -148,4 +160,16 @@ public class QuestionPraiseServiceImpl extends ServiceImpl<QuestionPraiseMapper, ...@@ -148,4 +160,16 @@ public class QuestionPraiseServiceImpl extends ServiceImpl<QuestionPraiseMapper,
// 2.删除点赞 // 2.删除点赞
remove(questionPraiseQueryWrapper); remove(questionPraiseQueryWrapper);
} }
@Override
public PageDTO<PraiseUserDTO> getQuestionPraises(Integer page, Integer size, String questionId) {
IPage<PraiseUserDTO> praiseUserDTOPage = questionPraiseMapper.selectPraisePage(
new Page(page, size),
questionId,
QuestionPraiseType.QUESTION_PRAISE.getPraiseType());
PageDTO<PraiseUserDTO> pageDTO = new PageDTO<>();
PageUtils.copyMeta(praiseUserDTOPage, pageDTO);
pageDTO.setDataList(praiseUserDTOPage.getRecords());
return pageDTO;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment