mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 07:03:53 +08:00
添加音色管理的功能
--TimbreController.java 音色控制层,添加了分页,删除,保存,修改接口 --TimbreDetailsVO.java 音色详情展示对象 --TimbrePageDTO.java 音色分页参数 --TimbreDataDTO.java 音色保存数据参数 --TimbreDao.java 音色持久定义 --TimbreService.java 音色业务层定义,添加了分页,删除,保存,修改,获取详情 --TimbreServiceImpl.java --TimbreEntity.java 音色表对应的实体
This commit is contained in:
+57
@@ -0,0 +1,57 @@
|
||||
package xiaozhi.modules.Timbre.controller;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import xiaozhi.common.page.PageData;
|
||||
import xiaozhi.common.utils.Result;
|
||||
import xiaozhi.modules.Timbre.dto.TimbreDataDTO;
|
||||
import xiaozhi.modules.Timbre.dto.TimbrePageDTO;
|
||||
import xiaozhi.modules.Timbre.service.TimbreService;
|
||||
import xiaozhi.modules.Timbre.vo.TimbreDetailsVO;
|
||||
|
||||
/**
|
||||
* 音色控制层
|
||||
* @author zjy
|
||||
* @since 2025-3-21
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/ttsVoice")
|
||||
@Tag(name = "音色管理")
|
||||
public class TimbreController {
|
||||
private final TimbreService timbreService;
|
||||
|
||||
@GetMapping
|
||||
@Operation(summary = "分页查找")
|
||||
// @RequiresPermissions("sys:role:normal")
|
||||
public Result<PageData<TimbreDetailsVO>> page(@RequestParam TimbrePageDTO dto) {
|
||||
PageData<TimbreDetailsVO> page = timbreService.page(dto);
|
||||
return new Result<PageData<TimbreDetailsVO>>().ok(page);
|
||||
}
|
||||
@PostMapping
|
||||
@Operation(summary = "音色保存")
|
||||
// @RequiresPermissions("sys:role:normal")
|
||||
public Result<Void> save(@RequestBody TimbreDataDTO dto) {
|
||||
timbreService.save(dto);
|
||||
return new Result<>();
|
||||
}
|
||||
@PutMapping("/{id}")
|
||||
@Operation(summary = "音色修改")
|
||||
// @RequiresPermissions("sys:role:normal")
|
||||
public Result<Void> update(@PathVariable Long id,@RequestBody TimbreDataDTO dto) {
|
||||
timbreService.update(id,dto);
|
||||
return new Result<>();
|
||||
}
|
||||
@DeleteMapping("/{id}")
|
||||
@Operation(summary = "音色删除")
|
||||
// @RequiresPermissions("sys:role:normal")
|
||||
public Result<Void> delete(@PathVariable Long id) {
|
||||
timbreService.delete(new Long[]{id});
|
||||
return new Result<>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package xiaozhi.modules.Timbre.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import xiaozhi.modules.Timbre.entity.TimbreEntity;
|
||||
|
||||
/**
|
||||
* 音色持久层定义
|
||||
* @author zjy
|
||||
* @since 2025-3-21
|
||||
*/
|
||||
@Mapper
|
||||
public interface TimbreDao extends BaseMapper<TimbreEntity> {
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package xiaozhi.modules.Timbre.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* 音色表数据DTO
|
||||
* @author zjy
|
||||
* @since 2025-3-21
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "音色表信息")
|
||||
public class TimbreDataDTO {
|
||||
|
||||
@Schema(description = "语言")
|
||||
private String languages;
|
||||
|
||||
@Schema(description = "音色名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "排序")
|
||||
private long sort;
|
||||
|
||||
@Schema(description = "对应 TTS 模型主键")
|
||||
private String ttsModelId;
|
||||
|
||||
@Schema(description = "音色编码")
|
||||
private String ttsVoice;
|
||||
|
||||
@Schema(description = "音频播放地址")
|
||||
private String voiceDemo;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package xiaozhi.modules.Timbre.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 音色分页参数DTO
|
||||
* @author zjy
|
||||
* @since 2025-3-21
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "音色分页参数")
|
||||
public class TimbrePageDTO {
|
||||
|
||||
@Schema(description = "对应 TTS 模型主键")
|
||||
private String ttsModelId;
|
||||
|
||||
@Schema(description = "音色名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "页数")
|
||||
private Long page;
|
||||
|
||||
@Schema(description = "显示列数")
|
||||
private Long limit;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package xiaozhi.modules.Timbre.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import xiaozhi.common.entity.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 音色表实体类
|
||||
* @author zjy
|
||||
* @since 2025-3-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("ai_tts_voice")
|
||||
@Schema(description = "音色信息")
|
||||
public class TimbreEntity extends BaseEntity {
|
||||
|
||||
@Schema(description = "语言")
|
||||
private String languages;
|
||||
|
||||
@Schema(description = "音色名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "排序")
|
||||
private long sort;
|
||||
|
||||
@Schema(description = "对应 TTS 模型主键")
|
||||
private String ttsModelId;
|
||||
|
||||
@Schema(description = "音色编码")
|
||||
private String ttsVoice;
|
||||
|
||||
@Schema(description = "音频播放地址")
|
||||
private String voiceDemo;
|
||||
|
||||
@Schema(description = "更新者")
|
||||
private Long updater;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
private Date updateDate;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package xiaozhi.modules.Timbre.service;
|
||||
|
||||
import xiaozhi.common.page.PageData;
|
||||
import xiaozhi.common.service.BaseService;
|
||||
import xiaozhi.modules.Timbre.dto.TimbreDataDTO;
|
||||
import xiaozhi.modules.Timbre.dto.TimbrePageDTO;
|
||||
import xiaozhi.modules.Timbre.entity.TimbreEntity;
|
||||
import xiaozhi.modules.Timbre.vo.TimbreDetailsVO;
|
||||
|
||||
|
||||
/**
|
||||
* 音色的业务层的定义
|
||||
* @author zjy
|
||||
* @since 2025-3-21
|
||||
*/
|
||||
public interface TimbreService extends BaseService<TimbreEntity> {
|
||||
/**
|
||||
* 分页获取音色指定tts的下的音色
|
||||
* @param dto 分页查找参数
|
||||
* @return 音色列表分页数据
|
||||
*/
|
||||
PageData<TimbreDetailsVO> page(TimbrePageDTO dto);
|
||||
|
||||
/**
|
||||
* 获取音色指定id的详情信息
|
||||
* @param timbreId 音色表id
|
||||
* @return 音色信息
|
||||
*/
|
||||
TimbreDetailsVO get(Long timbreId);
|
||||
|
||||
/**
|
||||
* 保存音色信息
|
||||
* @param dto 需要保存数据
|
||||
*/
|
||||
void save(TimbreDataDTO dto);
|
||||
|
||||
/**
|
||||
* 保存音色信息
|
||||
* @param timbreId 需要修改的id
|
||||
* @param dto 需要修改的数据
|
||||
*/
|
||||
void update(Long timbreId,TimbreDataDTO dto);
|
||||
|
||||
/**
|
||||
* 批量删除音色
|
||||
* @param ids 需要被删除的音色id列表
|
||||
*/
|
||||
void delete(Long[] ids);
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package xiaozhi.modules.Timbre.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import xiaozhi.common.constant.Constant;
|
||||
import xiaozhi.common.page.PageData;
|
||||
import xiaozhi.common.service.impl.BaseServiceImpl;
|
||||
import xiaozhi.common.utils.ConvertUtils;
|
||||
import xiaozhi.modules.Timbre.dao.TimbreDao;
|
||||
import xiaozhi.modules.Timbre.dto.TimbreDataDTO;
|
||||
import xiaozhi.modules.Timbre.dto.TimbrePageDTO;
|
||||
import xiaozhi.modules.Timbre.service.TimbreService;
|
||||
import xiaozhi.modules.Timbre.entity.TimbreEntity;
|
||||
import xiaozhi.modules.Timbre.vo.TimbreDetailsVO;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 音色的业务层的实现
|
||||
* @author zjy
|
||||
* @since 2025-3-21
|
||||
*/
|
||||
@Service
|
||||
public class TimbreServiceImpl extends BaseServiceImpl<TimbreDao, TimbreEntity> implements TimbreService {
|
||||
|
||||
|
||||
@Override
|
||||
public PageData<TimbreDetailsVO> page(TimbrePageDTO dto) {
|
||||
Map<String, Object> params = new HashMap<String, Object>();
|
||||
params.put(Constant.PAGE, dto.getPage());
|
||||
params.put(Constant.LIMIT,dto.getLimit());
|
||||
IPage<TimbreEntity> page = baseDao.selectPage(
|
||||
getPage(params, "sort", true),
|
||||
//定义查询条件
|
||||
new QueryWrapper<TimbreEntity>()
|
||||
//必须按照ttsID查找
|
||||
.eq("tts_model_id",dto.getTtsModelId())
|
||||
//如果有音色名字,按照音色名模糊查找
|
||||
.like(StringUtils.isNotBlank(dto.getName()),"name",dto.getName())
|
||||
);
|
||||
|
||||
return getPageData(page, TimbreDetailsVO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TimbreDetailsVO get(Long timbreId) {
|
||||
TimbreEntity entity = baseDao.selectById(timbreId);
|
||||
return ConvertUtils.sourceToTarget(entity, TimbreDetailsVO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void save(TimbreDataDTO dto) {
|
||||
isTtsModelId(dto.getTtsModelId());
|
||||
TimbreEntity timbreEntity = ConvertUtils.sourceToTarget(dto, TimbreEntity.class);
|
||||
baseDao.insert(timbreEntity);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(Long timbreId, TimbreDataDTO dto) {
|
||||
isTtsModelId(dto.getTtsModelId());
|
||||
TimbreEntity timbreEntity = ConvertUtils.sourceToTarget(dto, TimbreEntity.class);
|
||||
timbreEntity.setId(timbreId);
|
||||
baseDao.updateById(timbreEntity);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void delete(Long[] ids) {
|
||||
baseDao.deleteBatchIds(Arrays.asList(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理是不是tts模型的id
|
||||
*/
|
||||
private void isTtsModelId(String ttsModelId){
|
||||
//等模型配置那边写好调用方法判断
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package xiaozhi.modules.Timbre.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
/**
|
||||
* 音色详情展示VO
|
||||
* @author zjy
|
||||
* @since 2025-3-21
|
||||
*/
|
||||
public class TimbreDetailsVO {
|
||||
@Schema(description = "音色id")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "语言")
|
||||
private String languages;
|
||||
|
||||
@Schema(description = "音色名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "排序")
|
||||
private long sort;
|
||||
|
||||
@Schema(description = "对应 TTS 模型主键")
|
||||
private String ttsModelId;
|
||||
|
||||
@Schema(description = "音色编码")
|
||||
private String ttsVoice;
|
||||
|
||||
@Schema(description = "音频播放地址")
|
||||
private String voiceDemo;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user