diff --git a/src/main/java/com/example/caseData/controller/UserCaseReadController.java b/src/main/java/com/example/caseData/controller/UserCaseReadController.java new file mode 100644 index 0000000..c8ccdc8 --- /dev/null +++ b/src/main/java/com/example/caseData/controller/UserCaseReadController.java @@ -0,0 +1,193 @@ +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.userCaseRead.UserCaseReadDto; +import com.example.caseData.dto.userCollectClinicalVideo.UserCollectClinicalVideoDto; +import com.example.caseData.dto.userCollectExchange.UserCollectExchangeDto; +import com.example.caseData.model.*; +import com.example.caseData.request.userCaseReadRequest.getUserCaseReadSearchPage; +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 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; + + /** + * 浏览记录-搜索-分页 + */ + @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); + } +} diff --git a/src/main/java/com/example/caseData/controller/UserCollectController.java b/src/main/java/com/example/caseData/controller/UserCollectController.java new file mode 100644 index 0000000..4c8d03a --- /dev/null +++ b/src/main/java/com/example/caseData/controller/UserCollectController.java @@ -0,0 +1,192 @@ +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); + } +} diff --git a/src/main/java/com/example/caseData/controller/UserController.java b/src/main/java/com/example/caseData/controller/UserController.java index 9a57ac4..a66d647 100644 --- a/src/main/java/com/example/caseData/controller/UserController.java +++ b/src/main/java/com/example/caseData/controller/UserController.java @@ -1,29 +1,16 @@ 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.caseClinicalArticleAuthor.CaseClinicalArticleAuthorDto; import com.example.caseData.dto.user.UserDto; -import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto; -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.UserRequest.UserRequest; -import com.example.caseData.request.UserRequest.getUserCollectSearchPage; 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 UserController extends BaseController { @@ -54,6 +41,9 @@ public class UserController extends BaseController { @Resource private UserCollectExchangeDao userCollectExchangeDao; + @Resource + private UserCaseReadDao userCaseReadDao; + // // 查询所有用户 // @GetMapping("/users") // public Response> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) { @@ -119,158 +109,6 @@ public class UserController extends BaseController { return Response.success(g); } - /** - * 收藏记录-搜索-分页 - */ - @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()); - -// // 获取当前用户所属医院 -// BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId()); -// if (basicHospital == null) { -// return Response.error(); -// } - - dataAuthor.setDoctorName(caseClinicalDoctor.getDoctorName()); -// 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 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()); - -// // 获取当前用户所属医院 -// BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId()); -// if (basicHospital == null) { -// return Response.error(); -// } - - dataAuthor.setDoctorName(caseClinicalDoctor.getDoctorName()); -// 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 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); - } - - // 浏览记录-搜索-分页 } diff --git a/src/main/java/com/example/caseData/dao/CaseReadDao.java b/src/main/java/com/example/caseData/dao/CaseReadDao.java deleted file mode 100644 index 7fe7a41..0000000 --- a/src/main/java/com/example/caseData/dao/CaseReadDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.caseData.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.example.caseData.model.CaseReadModel; -import com.example.caseData.model.UserModel; - -public interface CaseReadDao extends BaseMapper { -} diff --git a/src/main/java/com/example/caseData/dao/UserCaseReadDao.java b/src/main/java/com/example/caseData/dao/UserCaseReadDao.java new file mode 100644 index 0000000..a071591 --- /dev/null +++ b/src/main/java/com/example/caseData/dao/UserCaseReadDao.java @@ -0,0 +1,44 @@ +package com.example.caseData.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.example.caseData.dto.userCaseRead.UserCaseReadDto; +import com.example.caseData.dto.userCollectClinicalArticle.UserCollectClinicalArticleDto; +import com.example.caseData.model.UserCaseReadModel; +import org.apache.ibatis.annotations.Param; + +public interface UserCaseReadDao extends BaseMapper { + /** + * 用户阅读记录-搜索-文章 + * @param page 分页数据 + * @param keyword 搜索关键词-标题/医生名称/标签名称 + */ + IPage getUserCaseReadArticleSearchPage( + Page page, + @Param("keyword") String keyword, + @Param("userId") String userId + ); + + /** + * 用户阅读记录-搜索-视频 + * @param page 分页数据 + * @param keyword 搜索关键词-标题/医生名称/标签名称 + */ + IPage getUserCaseReadVideoSearchPage( + Page page, + @Param("keyword") String keyword, + @Param("userId") String userId + ); + + /** + * 用户阅读记录-搜索-病例交流 + * @param page 分页数据 + * @param keyword 搜索关键词-标题/医生名称/标签名称 + */ + IPage getUserCaseReadExchangeSearchPage( + Page page, + @Param("keyword") String keyword, + @Param("userId") String userId + ); +} diff --git a/src/main/java/com/example/caseData/dto/userCaseRead/UserCaseReadDto.java b/src/main/java/com/example/caseData/dto/userCaseRead/UserCaseReadDto.java new file mode 100644 index 0000000..61e01c4 --- /dev/null +++ b/src/main/java/com/example/caseData/dto/userCaseRead/UserCaseReadDto.java @@ -0,0 +1,102 @@ +package com.example.caseData.dto.userCaseRead; + + +import com.example.caseData.dto.userCollectClinicalArticle.UserCollectClinicalArticleDto; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class UserCaseReadDto { + /** + * 主键id + */ + @JsonProperty("read_id") + private String readId; + + /** + * 用户id + */ + @JsonProperty("user_id") + private String userId; + + /** + * 对应的id + */ + @JsonProperty("id") + private String id; + + /** + * 创建时间 + */ + @JsonProperty("created_at") + private LocalDateTime createdAt; + + /** + * 修改时间 + */ + @JsonProperty("updated_at") + private LocalDateTime updatedAt; + + /** + * 数据 + */ + @JsonProperty("data") + private UserCaseReadDto.DataDto data; + + @Data + public static class DataDto { + @JsonProperty("id") + private String id; + + /** + * 标题 + */ + @JsonProperty("title") + private String title; + + /** + * 发布时间 + */ + @JsonProperty("push_date") + private LocalDateTime pushDate; + + /** + * 阅读量 + */ + @JsonProperty("read_num") + private Integer readNum; + + /** + * 收藏量 + */ + @JsonProperty("collect_num") + private Integer collectNum; + + /** + * 作者 + */ + @JsonProperty("author") + private List author; + } + + /** + * 作者 + */ + @Data + public static class DataAuthorDto { + /** + * 医生名称 + */ + @JsonProperty("doctor_name") + private String doctorName; + + /** + * 医院名称 + */ + @JsonProperty("hospital_name") + private String hospitalName; + } +} diff --git a/src/main/java/com/example/caseData/model/CaseReadModel.java b/src/main/java/com/example/caseData/model/UserCaseReadModel.java similarity index 92% rename from src/main/java/com/example/caseData/model/CaseReadModel.java rename to src/main/java/com/example/caseData/model/UserCaseReadModel.java index dac8fff..95096bc 100644 --- a/src/main/java/com/example/caseData/model/CaseReadModel.java +++ b/src/main/java/com/example/caseData/model/UserCaseReadModel.java @@ -10,8 +10,8 @@ import java.time.LocalDateTime; * 病例-阅读记录实体类 */ @Data // Lombok注解,用于自动生成getter/setter方法等 -@TableName("`case_read`") // 指定数据库表名 -public class CaseReadModel { +@TableName("`user_case_read`") // 指定数据库表名 +public class UserCaseReadModel { /** * 主键id */ diff --git a/src/main/java/com/example/caseData/request/userCaseReadRequest/getUserCaseReadSearchPage.java b/src/main/java/com/example/caseData/request/userCaseReadRequest/getUserCaseReadSearchPage.java new file mode 100644 index 0000000..211a230 --- /dev/null +++ b/src/main/java/com/example/caseData/request/userCaseReadRequest/getUserCaseReadSearchPage.java @@ -0,0 +1,46 @@ +package com.example.caseData.request.userCaseReadRequest; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class getUserCaseReadSearchPage { + // ✅ 分页参数 + @Min(value = 1,message = "页码最小为 1") + private Integer page = 1; + + @JsonProperty("page_size") + @Min(value = 1, message = "每页个数最小为 1") + private Integer pageSize = 20; + + // 类型(1:文章 2:视频 3:病例交流) + @NotNull(message = "错误") + @JsonProperty("type") + private Integer type; + + // 标题/作者名称/疾病名称 + @JsonProperty("keyword") + private String keyword; + + // 医院id + @JsonProperty("hospital_id") + private String hospitalId; + + // 医生id + @JsonProperty("doctor_id") + private String doctorId; + + // ✅ 校验分页参数 + public void validateForPage() { + // 如果 page 为空,设为默认值 1 + if (page == null) { + page = 1; + } + + if (pageSize == null) { + pageSize = 20; + } + } +} diff --git a/src/main/java/com/example/caseData/request/UserRequest/getUserCollectSearchPage.java b/src/main/java/com/example/caseData/request/userCollectRequest/getUserCollectSearchPage.java similarity index 85% rename from src/main/java/com/example/caseData/request/UserRequest/getUserCollectSearchPage.java rename to src/main/java/com/example/caseData/request/userCollectRequest/getUserCollectSearchPage.java index 79a0da1..8e3500c 100644 --- a/src/main/java/com/example/caseData/request/UserRequest/getUserCollectSearchPage.java +++ b/src/main/java/com/example/caseData/request/userCollectRequest/getUserCollectSearchPage.java @@ -1,14 +1,9 @@ -package com.example.caseData.request.UserRequest; +package com.example.caseData.request.userCollectRequest; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.Min; -import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; -import org.springframework.util.StringUtils; - -import java.util.HashMap; -import java.util.Map; @Data public class getUserCollectSearchPage { diff --git a/src/main/resources/mapper/CaseExchangeMapper.xml b/src/main/resources/mapper/CaseExchangeMapper.xml index f3469e4..f2319e7 100644 --- a/src/main/resources/mapper/CaseExchangeMapper.xml +++ b/src/main/resources/mapper/CaseExchangeMapper.xml @@ -2,25 +2,30 @@ + SELECT + uc.read_id, + uc.user_id, + uc.id, + a.article_id, + a.article_title as title, + a.read_num, + a.collect_num, + a.push_date, + uc.created_at + FROM user_case_read uc + JOIN ( + SELECT DISTINCT a.article_id + FROM case_clinical_article a + LEFT JOIN case_clinical_article_author caa ON a.article_id = caa.article_id + LEFT JOIN case_clinical_doctor d ON caa.doctor_id = d.doctor_id + LEFT JOIN case_clinical_article_label l ON a.article_id = l.article_id + WHERE a.article_status = 1 + + AND ( + a.article_title LIKE CONCAT('%', #{keyword}, '%') + OR d.doctor_name LIKE CONCAT('%', #{keyword}, '%') + OR l.label_name LIKE CONCAT('%', #{keyword}, '%') + ) + + ) AS filtered ON uc.id = filtered.article_id + JOIN case_clinical_article a ON uc.id = a.article_id + WHERE uc.user_id = #{userId} + AND uc.type = 1 + ORDER BY uc.created_at desc + + + + + + \ No newline at end of file