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.userCaseRead.UserCaseReadDto; import com.example.caseData.dto.userCollectClinicalVideo.UserCollectClinicalVideoDto; import com.example.caseData.dto.userCollectExchange.UserCollectExchangeDto; import com.example.caseData.exception.BusinessException; import com.example.caseData.model.*; import com.example.caseData.request.caseExchangeRequest.addCaseExchangeComment; import com.example.caseData.request.caseExchangeRequest.getCaseExchangeCommentPage; import com.example.caseData.request.userCaseReadRequest.addUserCaseRead; import com.example.caseData.request.userCaseReadRequest.getUserCaseReadSearchPage; import com.example.caseData.service.UserCaseReadService; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/api") public class UserCaseReadController extends BaseController { @Resource private UserDao userDao; @Resource private BasicHospitalDao basicHospitalDao; @Resource private HttpServletRequest httpServletRequest; @Resource private CaseClinicalDoctorDao caseClinicalDoctorDao; @Resource private UserCollectClinicalArticleDao userCollectClinicalArticleDao; @Resource private CaseClinicalArticleAuthorDao caseClinicalArticleAuthorDao; @Resource private UserCollectClinicalVideoDao userCollectClinicalVideoDao; @Resource private CaseClinicalVideoAuthorDao caseClinicalVideoAuthorDao; @Resource private UserCollectExchangeDao userCollectExchangeDao; @Resource private UserCaseReadDao userCaseReadDao; @Resource private UserCaseReadService userCaseReadService; /** * 浏览记录-搜索-分页 */ @PostMapping("/user/case/read/search") public Response> getUserCaseReadSearchPage( @Validated() @RequestBody getUserCaseReadSearchPage request ) { String userId = (String) httpServletRequest.getAttribute("userId"); request.validateForPage(); Map resultMap = new HashMap<>(); if (request.getType() == 1){ // 文章 Page page = new Page<>(request.getPage(), request.getPageSize()); // 获取文章数据 IPage resultPage = userCaseReadDao.getUserCaseReadArticleSearchPage( page, request.getKeyword(), userId ); for (UserCaseReadDto dto : resultPage.getRecords()) { UserCaseReadDto.DataDto data = dto.getData(); List dataAuthors = new ArrayList<>(); // 查找作者 LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, dto.getId()); List caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper); for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) { UserCaseReadDto.DataAuthorDto dataAuthor = new UserCaseReadDto.DataAuthorDto(); // 查询医生 CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); dataAuthor.setDoctorName(caseClinicalDoctor.getDoctorName()); dataAuthors.add(dataAuthor); } data.setAuthor(dataAuthors); } resultMap.put("page", resultPage.getCurrent()); resultMap.put("pageSize", resultPage.getSize()); resultMap.put("total", resultPage.getTotal()); resultMap.put("data", resultPage.getRecords()); }else if (request.getType() == 2){ // 视频 Page page = new Page<>(request.getPage(), request.getPageSize()); // 获取文章数据 IPage resultPage = userCollectClinicalVideoDao.getUserCollectClinicalVideoSearchPage( page, request.getKeyword(), request.getHospitalId(), request.getDoctorId(), userId ); for (UserCollectClinicalVideoDto dto : resultPage.getRecords()) { UserCollectClinicalVideoDto.DataDto data = dto.getData(); List dataAuthors = new ArrayList<>(); // 查找作者 LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, dto.getId()); List caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper); for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) { UserCollectClinicalVideoDto.DataAuthorDto dataAuthor = new UserCollectClinicalVideoDto.DataAuthorDto(); // 查询医生 CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); dataAuthor.setDoctorName(caseClinicalDoctor.getDoctorName()); dataAuthors.add(dataAuthor); } data.setAuthor(dataAuthors); } resultMap.put("page", resultPage.getCurrent()); resultMap.put("pageSize", resultPage.getSize()); resultMap.put("total", resultPage.getTotal()); resultMap.put("data", resultPage.getRecords()); } else if (request.getType() == 3) { // 病例交流 Page page = new Page<>(request.getPage(), request.getPageSize()); // 获取文章数据 IPage resultPage = userCollectExchangeDao.getUserCollectExchangeSearchPage( page, request.getKeyword(), request.getHospitalId(), request.getDoctorId(), userId ); for (UserCollectExchangeDto dto : resultPage.getRecords()) { UserCollectExchangeDto.DataDto data = dto.getData(); List dataAuthors = new ArrayList<>(); UserModel user = userDao.selectById(Long.valueOf(userId)); if (user == null) { return Response.error(); } // 获取当前用户所属医院 BasicHospitalModel basicHospital = basicHospitalDao.selectById(user.getHospitalId()); if (basicHospital == null) { return Response.error(); } UserCollectExchangeDto.DataAuthorDto dataAuthor = new UserCollectExchangeDto.DataAuthorDto(); dataAuthor.setDoctorName(user.getUserName()); dataAuthor.setHospitalName(basicHospital.getHospitalName()); dataAuthors.add(dataAuthor); data.setAuthor(dataAuthors); } resultMap.put("page", resultPage.getCurrent()); resultMap.put("pageSize", resultPage.getSize()); resultMap.put("total", resultPage.getTotal()); resultMap.put("data", resultPage.getRecords()); }else{ return Response.error(); } return Response.success(resultMap); } /** * 浏览记录-新增 */ @PostMapping("/user/case/read") public Response AddUserCaseRead( @Validated() @RequestBody addUserCaseRead request ) { String loginUserId = (String) httpServletRequest.getAttribute("userId"); if (loginUserId == null) { return Response.error("操作失败"); } try { boolean res = userCaseReadService.AddUserCaseRead(request,loginUserId); if (!res){ return Response.error("操作失败"); } } catch (BusinessException e) { return Response.error(e.getMessage()); } return Response.success(); } }