case-data-api/src/main/java/com/example/caseData/controller/UserCollectController.java

193 lines
8.1 KiB
Java

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<Map<String, Object>> getUserCollectSearchPage(
@Validated()
@RequestBody getUserCollectSearchPage request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
request.validateForPage();
Map<String, Object> resultMap = new HashMap<>();
if (request.getType() == 1){
// 文章
Page<UserCollectClinicalArticleDto> page = new Page<>(request.getPage(), request.getPageSize());
// 获取文章数据
IPage<UserCollectClinicalArticleDto> resultPage = userCollectClinicalArticleDao.getUserCollectClinicalArticleSearchPage(
page,
request.getKeyword(),
request.getHospitalId(),
request.getDoctorId(),
userId
);
for (UserCollectClinicalArticleDto dto : resultPage.getRecords()) {
UserCollectClinicalArticleDto.DataDto data = dto.getData();
List<UserCollectClinicalArticleDto.DataAuthorDto> dataAuthors = new ArrayList<>();
// 查找作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, dto.getId());
List<CaseClinicalArticleAuthorModel> 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<UserCollectClinicalVideoDto> page = new Page<>(request.getPage(), request.getPageSize());
// 获取文章数据
IPage<UserCollectClinicalVideoDto> resultPage = userCollectClinicalVideoDao.getUserCollectClinicalVideoSearchPage(
page,
request.getKeyword(),
request.getHospitalId(),
request.getDoctorId(),
userId
);
for (UserCollectClinicalVideoDto dto : resultPage.getRecords()) {
UserCollectClinicalVideoDto.DataDto data = dto.getData();
List<UserCollectClinicalVideoDto.DataAuthorDto> dataAuthors = new ArrayList<>();
// 查找作者
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, dto.getId());
List<CaseClinicalVideoAuthorModel> 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<UserCollectExchangeDto> page = new Page<>(request.getPage(), request.getPageSize());
// 获取文章数据
IPage<UserCollectExchangeDto> resultPage = userCollectExchangeDao.getUserCollectExchangeSearchPage(
page,
request.getKeyword(),
request.getHospitalId(),
request.getDoctorId(),
userId
);
for (UserCollectExchangeDto dto : resultPage.getRecords()) {
UserCollectExchangeDto.DataDto data = dto.getData();
List<UserCollectExchangeDto.DataAuthorDto> 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);
}
}