新增了评论

This commit is contained in:
2025-05-23 13:18:54 +08:00
parent c106bce7e2
commit f719a1d347
18 changed files with 1169 additions and 320 deletions
@@ -1,18 +1,28 @@
package com.example.caseData.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.caseData.common.Response;
import com.example.caseData.dao.*;
import com.example.caseData.dto.T;
import com.example.caseData.dto.caseClinicalVideo.CaseClinicalVideoDto;
import com.example.caseData.dto.userCommentClinicalVideo.UserCommentClinicalVideoDto;
import com.example.caseData.exception.BusinessException;
import com.example.caseData.model.*;
import com.example.caseData.service.CaseClinicalArticleService;
import com.example.caseData.request.CaseClinicalVideoRequest.addClinicalVideoComment;
import com.example.caseData.request.CaseClinicalVideoRequest.getClinicalVideoCommentPage;
import com.example.caseData.service.CaseClinicalVideoService;
import com.example.caseData.service.CaseClinicalVideoService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@RestController
@RequestMapping("/api")
@@ -38,6 +48,12 @@ public class CaseClinicalVideoController {
@Resource
private CaseClinicalVideoService caseClinicalVideoService;
@Resource
private UserDao userDao;
@Resource
private UserCommentClinicalVideoDao userCommentClinicalVideoDao;
/**
* 临床病例库-视频-详情
*/
@@ -46,14 +62,14 @@ public class CaseClinicalVideoController {
@PathVariable("video_id") String videoId
) {
// 获取视频数据
CaseClinicalVideoModel article = caseClinicalVideoDao.selectById(videoId);
if (article == null) {
CaseClinicalVideoModel video = caseClinicalVideoDao.selectById(videoId);
if (video == null) {
return Response.error("非法视频");
}
// 查找作者
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, article.getVideoId());
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, video.getVideoId());
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
@@ -66,9 +82,9 @@ public class CaseClinicalVideoController {
author.setCaseClinicalDoctor(caseClinicalDoctor);
}
article.setAuthor(caseClinicalVideoAuthors);
video.setAuthor(caseClinicalVideoAuthors);
CaseClinicalVideoDto g = CaseClinicalVideoDto.GetDto(article);
CaseClinicalVideoDto g = CaseClinicalVideoDto.GetDto(video);
// 是否已收藏
String userId = (String) httpServletRequest.getAttribute("userId");
@@ -84,11 +100,11 @@ public class CaseClinicalVideoController {
}
/**
* 临床病例库-文章-收藏
* 临床病例库-视频-收藏
*/
@PostMapping("/clinical/video/collect/{video_id}")
public Response<T> AddClinicalVideoCollect(
@PathVariable("video_id") String articleId
@PathVariable("video_id") String videoId
) {
String userId = (String) httpServletRequest.getAttribute("userId");
@@ -97,7 +113,7 @@ public class CaseClinicalVideoController {
return Response.error("操作失败");
}
boolean res = caseClinicalVideoService.AddClinicalVideoCollect(articleId,userId);
boolean res = caseClinicalVideoService.AddClinicalVideoCollect(videoId,userId);
if (!res){
return Response.error("操作失败");
}
@@ -106,7 +122,7 @@ public class CaseClinicalVideoController {
}
/**
* 临床病例库-文章-取消收藏
* 临床病例库-视频-取消收藏
*/
@DeleteMapping("/clinical/video/collect/{video_id}")
public Response<T> DeleteClinicalVideoCollect(
@@ -126,4 +142,192 @@ public class CaseClinicalVideoController {
return Response.success();
}
/**
* 临床病例库-视频-新增评论
*/
@PostMapping("/clinical/video/comment/{video_id}")
public Response<T> AddClinicalVideoComment(
@PathVariable("video_id") String videoId,
@Validated()
@RequestBody addClinicalVideoComment request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
try {
boolean res = caseClinicalVideoService.AddClinicalVideoComment(videoId,userId,request);
if (!res){
return Response.error("操作失败");
}
} catch (BusinessException e) {
return Response.error(e.getMessage());
}
return Response.success();
}
/**
* 临床病例库-视频-评论-删除
*/
@DeleteMapping("/clinical/video/comment/{comment_id}")
public Response<T> DeleteClinicalVideoComment(
@PathVariable("comment_id") String commentId
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
try {
boolean res = caseClinicalVideoService.DeleteClinicalVideoComment(commentId,userId);
if (!res){
return Response.error("操作失败");
}
} catch (BusinessException e) {
return Response.error(e.getMessage());
}
return Response.success();
}
/**
* 临床病例库-视频-评论-置顶
*/
@PutMapping("/clinical/video/comment/top/{comment_id}")
public Response<T> AddTopClinicalVideoComment(
@PathVariable("comment_id") String commentId
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
try {
boolean res = caseClinicalVideoService.AddTopClinicalVideoComment(commentId,userId);
if (!res){
return Response.error("操作失败");
}
} catch (BusinessException e) {
return Response.error(e.getMessage());
}
return Response.success();
}
/**
* 临床病例库-视频-评论-取消置顶
*/
@DeleteMapping("/clinical/video/comment/top/{comment_id}")
public Response<T> deleteTopClinicalVideoComment(
@PathVariable("comment_id") String commentId
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
try {
boolean res = caseClinicalVideoService.deleteTopClinicalVideoComment(commentId,userId);
if (!res){
return Response.error("操作失败");
}
} catch (BusinessException e) {
return Response.error(e.getMessage());
}
return Response.success();
}
/**
* 临床病例库-视频-评论-列表
*/
@PostMapping("/clinical/video/comment/page")
public Response<Map<String, Object>> getClinicalVideoCommentPage(
@Validated()
@RequestBody getClinicalVideoCommentPage request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
// 获取当前登录用户数据
UserModel user = userDao.selectById(Long.valueOf(userId));
if (user == null) {
return Response.error();
}
request.validateForPage();
Map<String, Object> resultMap = new HashMap<>();
Page<UserCommentClinicalVideoDto> page = new Page<>(request.getPage(), request.getPageSize());
// 获取视频评论数据
IPage<UserCommentClinicalVideoDto> resultPage = userCommentClinicalVideoDao.getClinicalVideoCommentPage(
page,
request.getVideoId(),
request.getRootId()
);
// 获取视频数据
CaseClinicalVideoModel video = caseClinicalVideoDao.selectById(request.getVideoId());
if (video == null) {
return Response.error();
}
if (video.getVideoStatus() != 1){
return Response.error();
}
// 获取视频作者数据
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, request.getVideoId());
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
if (caseClinicalDoctor == null) {
return Response.error();
}
// 处理是否本人评论
for (UserCommentClinicalVideoDto dto : resultPage.getRecords()) {
if (Objects.equals(dto.getUserIden(), caseClinicalDoctor.getDoctorIden())){
dto.setIsAuthor(1);
}
}
}
// 处理返回值
for (UserCommentClinicalVideoDto dto : resultPage.getRecords()) {
// 去除用户唯一标识
dto.setUserIden(null);
// 获取次级评论
if (dto.getRootId() == null){
List<UserCommentClinicalVideoDto> subComments = userCommentClinicalVideoDao.getClinicalVideoCommentList(
dto.getVideoId(),
dto.getCommentId(),
5
);
dto.setSubComment(subComments);
}
}
resultMap.put("page", resultPage.getCurrent());
resultMap.put("pageSize", resultPage.getSize());
resultMap.put("total", resultPage.getTotal());
resultMap.put("data", resultPage.getRecords());
return Response.success(resultMap);
}
}