From 56b1b3b7ad5ee2948aae62509a9de5d159fe9974 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 9 Jun 2025 15:25:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E8=AE=BA=E6=96=B0=E5=A2=9E=E4=BA=86?= =?UTF-8?q?=E6=A0=87=E9=A2=981111444?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CaseExchangeController.java | 79 ++++++++----------- .../caseData/controller/IndexController.java | 7 -- .../example/caseData/dao/CaseExchangeDao.java | 12 +++ .../getCaseExchangeSearchList.java | 79 +++++++++++++++++++ 4 files changed, 126 insertions(+), 51 deletions(-) create mode 100644 src/main/java/com/example/caseData/request/caseExchangeRequest/getCaseExchangeSearchList.java diff --git a/src/main/java/com/example/caseData/controller/CaseExchangeController.java b/src/main/java/com/example/caseData/controller/CaseExchangeController.java index d82ab30..175a7f3 100644 --- a/src/main/java/com/example/caseData/controller/CaseExchangeController.java +++ b/src/main/java/com/example/caseData/controller/CaseExchangeController.java @@ -73,6 +73,7 @@ public class CaseExchangeController { UserModel user = new UserModel(); BasicHospitalModel basicHospital = new BasicHospitalModel(); + // 此步骤是为了在我的病例交流列表页面少查询 String userId = (String) httpServletRequest.getAttribute("userId"); if (userId != null) { user = userDao.selectById(Long.valueOf(userId)); @@ -270,43 +271,33 @@ public class CaseExchangeController { /** * 临床病例库-病例交流-列表 */ -// @PostMapping("/exchange/list") -// public Response> getCaseExchangeSearchPage( -// @Validated() -// @RequestBody getCaseExchangeSearchPage request -// ) { -// UserModel user = new UserModel(); -// BasicHospitalModel basicHospital = new BasicHospitalModel(); -// -// String userId = (String) httpServletRequest.getAttribute("userId"); -// if (userId != null) { -// user = userDao.selectById(Long.valueOf(userId)); -// if (user == null) { -// return Response.error(); -// } -// -// // 获取当前用户所属医院 -// basicHospital = basicHospitalDao.selectById(user.getHospitalId()); -// if (basicHospital == null) { -// return Response.error(); -// } -// } -// -// request.validateForPage(); -// -// Map resultMap = new HashMap<>(); -// -// Page page = new Page<>(request.getPage(), request.getPageSize()); -// -// // 获取文章数据 -// IPage resultPage = caseExchangeDao.getCaseExchangeSearchPage( -// page, -// request.getKeyword(), -// request.getUserId(), -// request.getIsSelected(), -// request.handleOrder() -// ); -// + @PostMapping("/exchange/list") + public Response> getCaseExchangeSearchList( + @Validated() + @RequestBody getCaseExchangeSearchList request + ) { + request.validateForLimit(); + + + LambdaQueryWrapper selectedQueryWrapper = new LambdaQueryWrapper<>(); + selectedQueryWrapper.eq(CaseExchangeModel::getExchangeStatus, 1) // 上线状态 + .eq(CaseExchangeModel::getIsSelected, 1) + .orderByDesc(CaseExchangeModel::getCreatedAt) // 按发布时间倒序 + .last("LIMIT 3"); // 只取2条记录 + List selectedExchanges = caseExchangeDao.selectList(selectedQueryWrapper); + + + Map resultMap = new HashMap<>(); + + + // 获取文章数据 + IPage resultPage = caseExchangeDao.getCaseExchangeSearchList( + request.getLimit(), + request.getKeyword(), + request.getIsSelected(), + request.handleOrder() + ); + // for (CaseExchangeDto dto : resultPage.getRecords()) { // // 查找用户所属医院 // if (userId != null){ @@ -357,13 +348,13 @@ public class CaseExchangeController { // dto.setLabel(caseExchangeLabelDto); // } // } -// -// resultMap.put("page", resultPage.getCurrent()); -// resultMap.put("pageSize", resultPage.getSize()); -// resultMap.put("total", resultPage.getTotal()); -// resultMap.put("data", resultPage.getRecords()); -// return Response.success(resultMap); -// } + + resultMap.put("page", resultPage.getCurrent()); + resultMap.put("pageSize", resultPage.getSize()); + resultMap.put("total", resultPage.getTotal()); + resultMap.put("data", resultPage.getRecords()); + return Response.success(resultMap); + } /** * 病例交流-详情-投票数据 diff --git a/src/main/java/com/example/caseData/controller/IndexController.java b/src/main/java/com/example/caseData/controller/IndexController.java index e3aafcd..d7c9e14 100644 --- a/src/main/java/com/example/caseData/controller/IndexController.java +++ b/src/main/java/com/example/caseData/controller/IndexController.java @@ -20,11 +20,4 @@ public class IndexController extends BaseController { public Response getIndexClinical() { return Response.success(indexService.GetIndexClinical()); } - - // 首页-病例交流 -// @GetMapping("/index/exchange") -// public Response getIndexExchange() { -// return Response.success(indexService.GetIndexExchange()); -// } - } diff --git a/src/main/java/com/example/caseData/dao/CaseExchangeDao.java b/src/main/java/com/example/caseData/dao/CaseExchangeDao.java index 345226d..32dfc1a 100644 --- a/src/main/java/com/example/caseData/dao/CaseExchangeDao.java +++ b/src/main/java/com/example/caseData/dao/CaseExchangeDao.java @@ -30,6 +30,18 @@ public interface CaseExchangeDao extends BaseMapper { @Param("order") Map order ); + /** + * 临床病例库-搜索 + * @param keyword 搜索关键词-标题/医生名称/标签名称 + * @param order 排序 + */ + IPage getCaseExchangeSearchList( + @Param("limit") Integer limit, + @Param("keyword") String keyword, + @Param("isSelected") Integer isSelected, + @Param("order") Map order + ); + /** * Inc 自增 * @param exchangeId 文章 ID diff --git a/src/main/java/com/example/caseData/request/caseExchangeRequest/getCaseExchangeSearchList.java b/src/main/java/com/example/caseData/request/caseExchangeRequest/getCaseExchangeSearchList.java new file mode 100644 index 0000000..1529b61 --- /dev/null +++ b/src/main/java/com/example/caseData/request/caseExchangeRequest/getCaseExchangeSearchList.java @@ -0,0 +1,79 @@ +package com.example.caseData.request.caseExchangeRequest; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.Min; +import lombok.Data; +import org.springframework.util.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +@Data +public class getCaseExchangeSearchList { + @JsonProperty("limit") + private Integer limit = 1; + + // 标题/作者名称/疾病名称 + @JsonProperty("keyword") + private String keyword; + + // 是否被精选(0:否 1:是) + @JsonProperty("is_selected") + private Integer isSelected; + + // 排序字段 + private OrderRequest order; + + /** + * 排序字段嵌套结构体 + */ + @Data + public static class OrderRequest { + @JsonProperty("created_at") + private String createdAt; // 创建时间 + + @JsonProperty("read_num") + private String readNum; // 阅读量 + + @JsonProperty("push_date") + private String pushDate; // 发表时间 + + public Map toMap() { + Map map = new HashMap<>(); + if (StringUtils.hasText(createdAt)) { + map.put("a.created_at", createdAt); + } + + if (StringUtils.hasText(readNum)) { + map.put("a.read_num", readNum); + } + + if (StringUtils.hasText(pushDate)) { + map.put("a.push_date", pushDate); + } + + // 默认排序(如果用户未传递任何排序字段) + if (map.isEmpty()) { + map.put("a.updated_at", "desc"); + } + + return map; + } + } + + /** + * 获取排序字段,若无用户输入则使用默认排序 + */ + public Map handleOrder() { + return order != null ? order.toMap() : new OrderRequest().toMap(); + } + + // ✅ 校验分页参数 + public void validateForLimit() { + // 如果 page 为空,设为默认值 1 + if (limit == null) { + limit = 1; + } + } +}