新增AI陪聊角色国际化管理接口
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.yolo.keyboard.controller.admin.aicompanion;
|
||||
|
||||
import com.yolo.keyboard.dal.dataobject.aicompanion.AiCompanionI18nDO;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -101,4 +102,56 @@ public class KeyboardAiCompanionController {
|
||||
BeanUtils.toBean(list, KeyboardAiCompanionRespVO.class));
|
||||
}
|
||||
|
||||
// ==================== 子表(AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍) ====================
|
||||
|
||||
@GetMapping("/ai-companion-i18n/page")
|
||||
@Operation(summary = "获得AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍分页")
|
||||
@Parameter(name = "id", description = "主键ID")
|
||||
@PreAuthorize("@ss.hasPermission('keyboard:ai-companion:query')")
|
||||
public CommonResult<PageResult<AiCompanionI18nDO>> getAiCompanionI18nPage(PageParam pageReqVO,
|
||||
@RequestParam("id") Long id) {
|
||||
return success(aiCompanionService.getAiCompanionI18nPage(pageReqVO, id));
|
||||
}
|
||||
|
||||
@PostMapping("/ai-companion-i18n/create")
|
||||
@Operation(summary = "创建AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍")
|
||||
@PreAuthorize("@ss.hasPermission('keyboard:ai-companion:create')")
|
||||
public CommonResult<Long> createAiCompanionI18n(@Valid @RequestBody AiCompanionI18nDO aiCompanionI18n) {
|
||||
return success(aiCompanionService.createAiCompanionI18n(aiCompanionI18n));
|
||||
}
|
||||
|
||||
@PutMapping("/ai-companion-i18n/update")
|
||||
@Operation(summary = "更新AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍")
|
||||
@PreAuthorize("@ss.hasPermission('keyboard:ai-companion:update')")
|
||||
public CommonResult<Boolean> updateAiCompanionI18n(@Valid @RequestBody AiCompanionI18nDO aiCompanionI18n) {
|
||||
aiCompanionService.updateAiCompanionI18n(aiCompanionI18n);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/ai-companion-i18n/delete")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@Operation(summary = "删除AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍")
|
||||
@PreAuthorize("@ss.hasPermission('keyboard:ai-companion:delete')")
|
||||
public CommonResult<Boolean> deleteAiCompanionI18n(@RequestParam("id") Long id) {
|
||||
aiCompanionService.deleteAiCompanionI18n(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/ai-companion-i18n/delete-list")
|
||||
@Parameter(name = "ids", description = "编号", required = true)
|
||||
@Operation(summary = "批量删除AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍")
|
||||
@PreAuthorize("@ss.hasPermission('keyboard:ai-companion:delete')")
|
||||
public CommonResult<Boolean> deleteAiCompanionI18nList(@RequestParam("ids") List<Long> ids) {
|
||||
aiCompanionService.deleteAiCompanionI18nListByIds(ids);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/ai-companion-i18n/get")
|
||||
@Operation(summary = "获得AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('keyboard:ai-companion:query')")
|
||||
public CommonResult<AiCompanionI18nDO> getAiCompanionI18n(@RequestParam("id") Long id) {
|
||||
return success(aiCompanionService.getAiCompanionI18n(id));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,9 +13,6 @@ import static com.yolo.keyboard.framework.common.util.date.DateUtils.FORMAT_YEAR
|
||||
@Data
|
||||
public class KeyboardAiCompanionPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "角色名称(展示用,如:Katie Leona)", example = "张三")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "角色头像URL,用于列表页和聊天页", example = "https://www.iocoder.cn")
|
||||
private String avatarUrl;
|
||||
|
||||
@@ -28,14 +25,8 @@ public class KeyboardAiCompanionPageReqVO extends PageParam {
|
||||
@Schema(description = "角色年龄段描述(如:20s、25-30)")
|
||||
private String ageRange;
|
||||
|
||||
@Schema(description = "一句话人设描述,用于卡片或列表展示")
|
||||
private String shortDesc;
|
||||
|
||||
@Schema(description = "角色详细介绍文案,用于角色详情页")
|
||||
private String introText;
|
||||
|
||||
@Schema(description = "角色性格标签数组(如:温柔、黏人、治愈)")
|
||||
private List<String> personalityTags;
|
||||
private Object personalityTags;
|
||||
|
||||
@Schema(description = "角色说话风格(如:撒娇型、理性型、活泼型)")
|
||||
private String speakingStyle;
|
||||
@@ -67,7 +58,7 @@ public class KeyboardAiCompanionPageReqVO extends PageParam {
|
||||
@Schema(description = "开场白音频")
|
||||
private String prologueAudio;
|
||||
|
||||
@Schema(description = "音频Id", example = "31328")
|
||||
@Schema(description = "音频Id", example = "4155")
|
||||
private String voiceId;
|
||||
|
||||
}
|
||||
@@ -12,14 +12,10 @@ import cn.idev.excel.annotation.*;
|
||||
@ExcelIgnoreUnannotated
|
||||
public class KeyboardAiCompanionRespVO {
|
||||
|
||||
@Schema(description = "陪聊角色唯一ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7816")
|
||||
@Schema(description = "陪聊角色唯一ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28180")
|
||||
@ExcelProperty("陪聊角色唯一ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "角色名称(展示用,如:Katie Leona)", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
|
||||
@ExcelProperty("角色名称(展示用,如:Katie Leona)")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "角色头像URL,用于列表页和聊天页", example = "https://www.iocoder.cn")
|
||||
@ExcelProperty("角色头像URL,用于列表页和聊天页")
|
||||
private String avatarUrl;
|
||||
@@ -36,17 +32,9 @@ public class KeyboardAiCompanionRespVO {
|
||||
@ExcelProperty("角色年龄段描述(如:20s、25-30)")
|
||||
private String ageRange;
|
||||
|
||||
@Schema(description = "一句话人设描述,用于卡片或列表展示")
|
||||
@ExcelProperty("一句话人设描述,用于卡片或列表展示")
|
||||
private String shortDesc;
|
||||
|
||||
@Schema(description = "角色详细介绍文案,用于角色详情页")
|
||||
@ExcelProperty("角色详细介绍文案,用于角色详情页")
|
||||
private String introText;
|
||||
|
||||
@Schema(description = "角色性格标签数组(如:温柔、黏人、治愈)")
|
||||
@ExcelProperty("角色性格标签数组(如:温柔、黏人、治愈)")
|
||||
private List<String> personalityTags;
|
||||
private Object personalityTags;
|
||||
|
||||
@Schema(description = "角色说话风格(如:撒娇型、理性型、活泼型)")
|
||||
@ExcelProperty("角色说话风格(如:撒娇型、理性型、活泼型)")
|
||||
@@ -88,7 +76,7 @@ public class KeyboardAiCompanionRespVO {
|
||||
@ExcelProperty("开场白音频")
|
||||
private String prologueAudio;
|
||||
|
||||
@Schema(description = "音频Id", example = "31328")
|
||||
@Schema(description = "音频Id", example = "4155")
|
||||
@ExcelProperty("音频Id")
|
||||
private String voiceId;
|
||||
|
||||
|
||||
@@ -11,13 +11,9 @@ import java.time.LocalDateTime;
|
||||
@Data
|
||||
public class KeyboardAiCompanionSaveReqVO {
|
||||
|
||||
@Schema(description = "陪聊角色唯一ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7816")
|
||||
@Schema(description = "陪聊角色唯一ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28180")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "角色名称(展示用,如:Katie Leona)", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
|
||||
@NotEmpty(message = "角色名称(展示用,如:Katie Leona)不能为空")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "角色头像URL,用于列表页和聊天页", example = "https://www.iocoder.cn")
|
||||
private String avatarUrl;
|
||||
|
||||
@@ -30,14 +26,8 @@ public class KeyboardAiCompanionSaveReqVO {
|
||||
@Schema(description = "角色年龄段描述(如:20s、25-30)")
|
||||
private String ageRange;
|
||||
|
||||
@Schema(description = "一句话人设描述,用于卡片或列表展示")
|
||||
private String shortDesc;
|
||||
|
||||
@Schema(description = "角色详细介绍文案,用于角色详情页")
|
||||
private String introText;
|
||||
|
||||
@Schema(description = "角色性格标签数组(如:温柔、黏人、治愈)")
|
||||
private List<String> personalityTags;
|
||||
private Object personalityTags;
|
||||
|
||||
@Schema(description = "角色说话风格(如:撒娇型、理性型、活泼型)")
|
||||
private String speakingStyle;
|
||||
@@ -60,13 +50,21 @@ public class KeyboardAiCompanionSaveReqVO {
|
||||
@Schema(description = "角色热度评分,用于推荐排序")
|
||||
private Integer popularityScore;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "创建时间不能为空")
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
@Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "更新时间不能为空")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
@Schema(description = "开场白")
|
||||
private String prologue;
|
||||
|
||||
@Schema(description = "开场白音频")
|
||||
private String prologueAudio;
|
||||
|
||||
@Schema(description = "音频Id", example = "31328")
|
||||
@Schema(description = "音频Id", example = "4155")
|
||||
private String voiceId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.yolo.keyboard.dal.dataobject.aicompanion;
|
||||
|
||||
import com.yolo.keyboard.framework.tenant.core.aop.TenantIgnore;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.yolo.keyboard.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍 DO
|
||||
*
|
||||
* @author ziin
|
||||
*/
|
||||
@TableName("keyboard_ai_companion_i18n")
|
||||
@KeySequence("keyboard_ai_companion_i18n_id_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@TenantIgnore
|
||||
public class AiCompanionI18nDO {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 陪聊角色主表ID,对应 keyboard_ai_companion.id
|
||||
*/
|
||||
private Long companionId;
|
||||
/**
|
||||
* 语言标识,如 zh-CN、en-US、ja-JP
|
||||
*/
|
||||
private String locale;
|
||||
/**
|
||||
* 角色名称(多语言)
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 一句话人设描述(多语言)
|
||||
*/
|
||||
private String shortDesc;
|
||||
/**
|
||||
* 角色详细介绍文案(多语言)
|
||||
*/
|
||||
private String introText;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createdAt;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
}
|
||||
@@ -29,10 +29,7 @@ public class KeyboardAiCompanionDO {
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 角色名称(展示用,如:Katie Leona)
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 角色头像URL,用于列表页和聊天页
|
||||
*/
|
||||
@@ -49,14 +46,6 @@ public class KeyboardAiCompanionDO {
|
||||
* 角色年龄段描述(如:20s、25-30)
|
||||
*/
|
||||
private String ageRange;
|
||||
/**
|
||||
* 一句话人设描述,用于卡片或列表展示
|
||||
*/
|
||||
private String shortDesc;
|
||||
/**
|
||||
* 角色详细介绍文案,用于角色详情页
|
||||
*/
|
||||
private String introText;
|
||||
/**
|
||||
* 角色性格标签数组(如:温柔、黏人、治愈)
|
||||
*/
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.yolo.keyboard.framework.mybatis.core.dataobject.BaseDO;
|
||||
* @author ziin
|
||||
*/
|
||||
@TableName("keyboard_character_i18n")
|
||||
@KeySequence("keyboard_character_i18n_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@KeySequence("keyboard_character_i18n_id_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.yolo.keyboard.dal.mysql.aicompanion;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import com.yolo.keyboard.dal.dataobject.aicompanion.AiCompanionI18nDO;
|
||||
import com.yolo.keyboard.framework.common.pojo.PageResult;
|
||||
import com.yolo.keyboard.framework.common.pojo.PageParam;
|
||||
import com.yolo.keyboard.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.yolo.keyboard.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍 Mapper
|
||||
*
|
||||
* @author ziin
|
||||
*/
|
||||
@Mapper
|
||||
public interface AiCompanionI18nMapper extends BaseMapperX<AiCompanionI18nDO> {
|
||||
|
||||
default PageResult<AiCompanionI18nDO> selectPage(PageParam reqVO, Long id) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<AiCompanionI18nDO>()
|
||||
.eq(AiCompanionI18nDO::getCompanionId, id)
|
||||
.orderByDesc(AiCompanionI18nDO::getId));
|
||||
}
|
||||
|
||||
default int deleteById(Long id) {
|
||||
return delete(AiCompanionI18nDO::getId, id);
|
||||
}
|
||||
|
||||
default int deleteByIds(List<Long> ids) {
|
||||
return deleteBatch(AiCompanionI18nDO::getId, ids);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,13 +19,10 @@ public interface KeyboardAiCompanionMapper extends BaseMapperX<KeyboardAiCompani
|
||||
|
||||
default PageResult<KeyboardAiCompanionDO> selectPage(KeyboardAiCompanionPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<KeyboardAiCompanionDO>()
|
||||
.likeIfPresent(KeyboardAiCompanionDO::getName, reqVO.getName())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getAvatarUrl, reqVO.getAvatarUrl())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getCoverImageUrl, reqVO.getCoverImageUrl())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getGender, reqVO.getGender())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getAgeRange, reqVO.getAgeRange())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getShortDesc, reqVO.getShortDesc())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getIntroText, reqVO.getIntroText())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getPersonalityTags, reqVO.getPersonalityTags())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getSpeakingStyle, reqVO.getSpeakingStyle())
|
||||
.eqIfPresent(KeyboardAiCompanionDO::getSystemPrompt, reqVO.getSystemPrompt())
|
||||
|
||||
@@ -2,7 +2,9 @@ package com.yolo.keyboard.service.aicompanion;
|
||||
|
||||
import com.yolo.keyboard.controller.admin.aicompanion.vo.KeyboardAiCompanionPageReqVO;
|
||||
import com.yolo.keyboard.controller.admin.aicompanion.vo.KeyboardAiCompanionSaveReqVO;
|
||||
import com.yolo.keyboard.dal.dataobject.aicompanion.AiCompanionI18nDO;
|
||||
import com.yolo.keyboard.dal.dataobject.aicompanion.KeyboardAiCompanionDO;
|
||||
import com.yolo.keyboard.framework.common.pojo.PageParam;
|
||||
import com.yolo.keyboard.framework.common.pojo.PageResult;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
@@ -59,5 +61,51 @@ public interface KeyboardAiCompanionService {
|
||||
* @return AI陪聊角色表,用于定义恋爱/陪伴型虚拟角色的基础信息与人设分页
|
||||
*/
|
||||
PageResult<KeyboardAiCompanionDO> getAiCompanionPage(KeyboardAiCompanionPageReqVO pageReqVO);
|
||||
// ==================== 子表(AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍) ====================
|
||||
|
||||
/**
|
||||
* 获得AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @param id 主键ID
|
||||
* @return AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍分页
|
||||
*/
|
||||
PageResult<AiCompanionI18nDO> getAiCompanionI18nPage(PageParam pageReqVO, Long id);
|
||||
|
||||
/**
|
||||
* 创建AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍
|
||||
*
|
||||
* @param aiCompanionI18n 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createAiCompanionI18n(@Valid AiCompanionI18nDO aiCompanionI18n);
|
||||
|
||||
/**
|
||||
* 更新AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍
|
||||
*
|
||||
* @param aiCompanionI18n 更新信息
|
||||
*/
|
||||
void updateAiCompanionI18n(@Valid AiCompanionI18nDO aiCompanionI18n);
|
||||
|
||||
/**
|
||||
* 删除AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteAiCompanionI18n(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍
|
||||
*
|
||||
* @param ids 编号
|
||||
*/
|
||||
void deleteAiCompanionI18nListByIds(List<Long> ids);
|
||||
|
||||
/**
|
||||
* 获得AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍
|
||||
*
|
||||
* @param id 编号
|
||||
* @return AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍
|
||||
*/
|
||||
AiCompanionI18nDO getAiCompanionI18n(Long id);
|
||||
}
|
||||
@@ -2,17 +2,22 @@ package com.yolo.keyboard.service.aicompanion;
|
||||
|
||||
import com.yolo.keyboard.controller.admin.aicompanion.vo.KeyboardAiCompanionPageReqVO;
|
||||
import com.yolo.keyboard.controller.admin.aicompanion.vo.KeyboardAiCompanionSaveReqVO;
|
||||
import com.yolo.keyboard.dal.dataobject.aicompanion.AiCompanionI18nDO;
|
||||
import com.yolo.keyboard.dal.dataobject.aicompanion.KeyboardAiCompanionDO;
|
||||
import com.yolo.keyboard.dal.mysql.aicompanion.AiCompanionI18nMapper;
|
||||
import com.yolo.keyboard.dal.mysql.aicompanion.KeyboardAiCompanionMapper;
|
||||
import com.yolo.keyboard.framework.common.pojo.PageParam;
|
||||
import com.yolo.keyboard.framework.common.pojo.PageResult;
|
||||
import com.yolo.keyboard.framework.common.util.object.BeanUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.yolo.keyboard.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.yolo.keyboard.module.infra.enums.ErrorCodeConstants.AI_COMPANION_I18N_NOT_EXISTS;
|
||||
import static com.yolo.keyboard.module.infra.enums.ErrorCodeConstants.AI_COMPANION_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
@@ -26,6 +31,8 @@ public class KeyboardAiCompanionServiceImpl implements KeyboardAiCompanionServic
|
||||
|
||||
@Resource
|
||||
private KeyboardAiCompanionMapper aiCompanionMapper;
|
||||
@Resource
|
||||
private AiCompanionI18nMapper aiCompanionI18nMapper;
|
||||
|
||||
@Override
|
||||
public Long createAiCompanion(KeyboardAiCompanionSaveReqVO createReqVO) {
|
||||
@@ -47,18 +54,26 @@ public class KeyboardAiCompanionServiceImpl implements KeyboardAiCompanionServic
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteAiCompanion(Long id) {
|
||||
// 校验存在
|
||||
validateAiCompanionExists(id);
|
||||
// 删除
|
||||
aiCompanionMapper.deleteById(id);
|
||||
|
||||
// 删除子表
|
||||
deleteAiCompanionI18nById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAiCompanionListByIds(List<Long> ids) {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteAiCompanionListByIds(List<Long> ids) {
|
||||
// 删除
|
||||
aiCompanionMapper.deleteByIds(ids);
|
||||
}
|
||||
|
||||
// 删除子表
|
||||
deleteAiCompanionI18nByIds(ids);
|
||||
}
|
||||
|
||||
|
||||
private void validateAiCompanionExists(Long id) {
|
||||
@@ -77,4 +92,56 @@ public class KeyboardAiCompanionServiceImpl implements KeyboardAiCompanionServic
|
||||
return aiCompanionMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
// ==================== 子表(AI陪聊角色国际化表,用于存储不同语言下的角色名称、一句话描述和详细介绍) ====================
|
||||
|
||||
@Override
|
||||
public PageResult<AiCompanionI18nDO> getAiCompanionI18nPage(PageParam pageReqVO, Long id) {
|
||||
return aiCompanionI18nMapper.selectPage(pageReqVO, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long createAiCompanionI18n(AiCompanionI18nDO aiCompanionI18n) {
|
||||
aiCompanionI18nMapper.insert(aiCompanionI18n);
|
||||
return aiCompanionI18n.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateAiCompanionI18n(AiCompanionI18nDO aiCompanionI18n) {
|
||||
// 校验存在
|
||||
validateAiCompanionI18nExists(aiCompanionI18n.getId());
|
||||
// 更新
|
||||
aiCompanionI18nMapper.updateById(aiCompanionI18n);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAiCompanionI18n(Long id) {
|
||||
// 删除
|
||||
aiCompanionI18nMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAiCompanionI18nListByIds(List<Long> ids) {
|
||||
// 删除
|
||||
aiCompanionI18nMapper.deleteByIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AiCompanionI18nDO getAiCompanionI18n(Long id) {
|
||||
return aiCompanionI18nMapper.selectById(id);
|
||||
}
|
||||
|
||||
private void validateAiCompanionI18nExists(Long id) {
|
||||
if (aiCompanionI18nMapper.selectById(id) == null) {
|
||||
throw exception(AI_COMPANION_I18N_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteAiCompanionI18nById(Long id) {
|
||||
aiCompanionI18nMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void deleteAiCompanionI18nByIds(List<Long> ids) {
|
||||
aiCompanionI18nMapper.deleteByIds(ids);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user