package com.xly.tts.bean; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; /** * 语音查询条件数据传输对象 */ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class VoiceQueryDTO implements Serializable { private static final long serialVersionUID = 1L; /** * 语言代码(如:zh, en, ja) */ private String languageCode; /** * 国家/地区代码(如:CN, US, JP) */ private String countryCode; /** * 完整区域代码(如:zh-CN, en-US) */ private String locale; /** * 性别:Male, Female, Any */ private String gender; /** * 语音类型:Standard, Neural, All */ private String voiceType; /** * 是否只返回默认语音 */ private Boolean defaultOnly; /** * 是否只返回推荐语音 */ private Boolean recommendedOnly; /** * 是否返回本地可用语音 */ @Builder.Default private Boolean localAvailable = true; /** * 状态:available, unavailable, all */ @Builder.Default private String status = "available"; /** * 搜索关键词(名称或显示名称) */ private String keyword; /** * 页码(从1开始) */ @Builder.Default private Integer page = 1; /** * 每页大小 */ @Builder.Default private Integer pageSize = 20; /** * 排序字段 */ private String sortField; /** * 排序方向:asc, desc */ private String sortDirection; // 便捷方法 /** * 获取偏移量 */ public Integer getOffset() { return (page - 1) * pageSize; } /** * 是否查询所有语音 */ public Boolean isQueryAll() { return "all".equalsIgnoreCase(status); } /** * 是否查询女性语音 */ public Boolean isQueryFemale() { return "female".equalsIgnoreCase(gender); } /** * 是否查询男性语音 */ public Boolean isQueryMale() { return "male".equalsIgnoreCase(gender); } /** * 是否为Neural语音 */ public Boolean isNeuralVoice() { return "neural".equalsIgnoreCase(voiceType); } }