Files
case-data-api/src/main/java/com/example/caseData/request/clinicalRequest/getClinicalLabelSearchPage.java
T
2025-08-29 16:06:08 +08:00

94 lines
2.5 KiB
Java

package com.example.caseData.request.clinicalRequest;
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 getClinicalLabelSearchPage {
// ✅ 分页参数
@Min(value = 1, message = "页码最小为 1")
private Integer page = 1;
@JsonProperty("page_size")
@Min(value = 1, message = "每页个数最小为 1")
private Integer pageSize = 20;
// 疾病标签名称
@JsonProperty("label_name")
private String labelName;
// 排序字段
private OrderRequest order;
/**
* 排序字段嵌套结构体
*/
@Data
public static class OrderRequest {
@JsonProperty("updated_at")
private String updatedAt; // 更新时间排序
@JsonProperty("label_name")
private String labelName; // 医院名称
@JsonProperty("article_num")
private String articleNum; // 数量-文章
@JsonProperty("push_date")
private String pushDate; // 发布时间
public Map<String, String> toMap() {
Map<String, String> map = new HashMap<>();
if (StringUtils.hasText(updatedAt)) {
map.put("a.updated_at", updatedAt);
}
if (StringUtils.hasText(labelName)) {
map.put("CONVERT(a.label_name USING gbk)", labelName);
}
if (StringUtils.hasText(articleNum)) {
map.put("a.article_num + a.video_num", articleNum);
}
if (StringUtils.hasText(pushDate)) {
map.put("a.last_push_date", pushDate);
}else{
map.put("a.last_push_date", "desc");
}
// // 默认排序(如果用户未传递任何排序字段)
// if (map.isEmpty()) {
// map.put("a.updated_at", "desc");
// }
return map;
}
}
/**
* 获取排序字段,若无用户输入则使用默认排序
*/
public Map<String, String> handleOrder() {
return order != null ? order.toMap() : new OrderRequest().toMap();
}
// ✅ 校验分页参数
public void validateForPage() {
// 如果 page 为空,设为默认值 1
if (page == null) {
page = 1;
}
if (pageSize == null) {
pageSize = 20;
}
}
}