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.userCollectClinicalArticle.UserCollectClinicalArticleDto; import com.example.caseData.dto.userCollectClinicalVideo.UserCollectClinicalVideoDto; import com.example.caseData.dto.userCollectExchange.UserCollectExchangeDto; import com.example.caseData.model.*; import com.example.caseData.request.userCollectRequest.getUserCollectSearchPage; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/api") public class UserCollectController 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; /** * 收藏记录-搜索-分页 */ @PostMapping("/user/collect/search") public Response> getUserCollectSearchPage( @Validated() @RequestBody getUserCollectSearchPage 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 = userCollectClinicalArticleDao.getUserCollectClinicalArticleSearchPage( page, request.getKeyword(), request.getHospitalId(), request.getDoctorId(), userId ); for (UserCollectClinicalArticleDto dto : resultPage.getRecords()) { UserCollectClinicalArticleDto.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) { UserCollectClinicalArticleDto.DataAuthorDto dataAuthor = new UserCollectClinicalArticleDto.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); } }