mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-04-15 04:43:40 +00:00
feat: 全局格式化代码
This commit is contained in:
@@ -1,27 +1,28 @@
|
||||
package org.ruoyi.aihuman.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.ruoyi.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.ruoyi.common.log.annotation.Log;
|
||||
import org.ruoyi.common.web.core.BaseController;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.ruoyi.aihuman.domain.bo.AihumanConfigBo;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanConfigVo;
|
||||
import org.ruoyi.aihuman.service.AihumanConfigService;
|
||||
import org.ruoyi.common.core.domain.R;
|
||||
import org.ruoyi.common.core.validate.AddGroup;
|
||||
import org.ruoyi.common.core.validate.EditGroup;
|
||||
import org.ruoyi.common.log.enums.BusinessType;
|
||||
import org.ruoyi.common.excel.utils.ExcelUtil;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanConfigVo;
|
||||
import org.ruoyi.aihuman.domain.bo.AihumanConfigBo;
|
||||
import org.ruoyi.aihuman.service.AihumanConfigService;
|
||||
import org.ruoyi.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.ruoyi.common.log.annotation.Log;
|
||||
import org.ruoyi.common.log.enums.BusinessType;
|
||||
import org.ruoyi.common.web.core.BaseController;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 交互数字人配置
|
||||
@@ -41,11 +42,11 @@ public class AihumanConfigController extends BaseController {
|
||||
|
||||
private final AihumanConfigService aihumanConfigService;
|
||||
|
||||
/**
|
||||
* 查询交互数字人配置列表
|
||||
*/
|
||||
@SaCheckPermission("aihuman:aihumanConfig:list")
|
||||
@GetMapping("/list")
|
||||
/**
|
||||
* 查询交互数字人配置列表
|
||||
*/
|
||||
@SaCheckPermission("aihuman:aihumanConfig:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<AihumanConfigVo> list(AihumanConfigBo bo, PageQuery pageQuery) {
|
||||
return aihumanConfigService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
@@ -69,7 +70,7 @@ public class AihumanConfigController extends BaseController {
|
||||
@SaCheckPermission("aihuman:aihumanConfig:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<AihumanConfigVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Integer id) {
|
||||
@PathVariable Integer id) {
|
||||
return R.ok(aihumanConfigService.queryById(id));
|
||||
}
|
||||
|
||||
|
||||
@@ -2,14 +2,14 @@ package org.ruoyi.aihuman.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.ruoyi.aihuman.domain.AihumanInfo;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanInfoVo;
|
||||
import org.ruoyi.aihuman.service.IAihumanInfoService;
|
||||
import org.ruoyi.common.core.domain.R;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
package org.ruoyi.aihuman.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.ruoyi.common.log.enums.OperatorType;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.ruoyi.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.ruoyi.common.log.annotation.Log;
|
||||
import org.ruoyi.common.web.core.BaseController;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.ruoyi.aihuman.domain.bo.AihumanRealConfigBo;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanRealConfigVo;
|
||||
import org.ruoyi.aihuman.service.AihumanRealConfigService;
|
||||
import org.ruoyi.common.core.domain.R;
|
||||
import org.ruoyi.common.core.validate.AddGroup;
|
||||
import org.ruoyi.common.core.validate.EditGroup;
|
||||
import org.ruoyi.common.log.enums.BusinessType;
|
||||
import org.ruoyi.common.excel.utils.ExcelUtil;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanRealConfigVo;
|
||||
import org.ruoyi.aihuman.domain.bo.AihumanRealConfigBo;
|
||||
import org.ruoyi.aihuman.service.AihumanRealConfigService;
|
||||
import org.ruoyi.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.ruoyi.common.log.annotation.Log;
|
||||
import org.ruoyi.common.log.enums.BusinessType;
|
||||
import org.ruoyi.common.web.core.BaseController;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 真人交互数字人配置
|
||||
@@ -41,11 +41,11 @@ public class AihumanRealConfigController extends BaseController {
|
||||
|
||||
private final AihumanRealConfigService aihumanRealConfigService;
|
||||
|
||||
/**
|
||||
* 查询真人交互数字人配置列表
|
||||
*/
|
||||
@SaCheckPermission("aihuman:aihumanRealConfig:list")
|
||||
@GetMapping("/list")
|
||||
/**
|
||||
* 查询真人交互数字人配置列表
|
||||
*/
|
||||
@SaCheckPermission("aihuman:aihumanRealConfig:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<AihumanRealConfigVo> list(AihumanRealConfigBo bo, PageQuery pageQuery) {
|
||||
return aihumanRealConfigService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
@@ -69,7 +69,7 @@ public class AihumanRealConfigController extends BaseController {
|
||||
@SaCheckPermission("aihuman:aihumanRealConfig:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<AihumanRealConfigVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Integer id) {
|
||||
@PathVariable Integer id) {
|
||||
return R.ok(aihumanRealConfigService.queryById(id));
|
||||
}
|
||||
|
||||
@@ -113,45 +113,45 @@ public class AihumanRealConfigController extends BaseController {
|
||||
* cd F:\Projects\AI-Human\LiveTalking
|
||||
* conda activate D:\zg117\C\Users\zg117\.conda\envs\livetalking_new
|
||||
* python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1
|
||||
*
|
||||
* <p>
|
||||
* 2.监听 python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1 执行情况
|
||||
*
|
||||
* <p>
|
||||
* 3.返回执行结果并打开页面
|
||||
* http://127.0.0.1:8010/webrtcapi-diy.html
|
||||
*/
|
||||
@SaCheckPermission("aihuman:aihumanRealConfig:run")
|
||||
//@Log(title = "真人交互数字人配置", businessType = BusinessType.UPDATE, operatorType = OperatorType.OTHER)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/run")
|
||||
public R<String> run(@Validated(EditGroup.class) @RequestBody AihumanRealConfigBo bo) {
|
||||
boolean result = aihumanRealConfigService.runByBo(bo);
|
||||
if (result) {
|
||||
// 返回前端页面URL,前端可以根据这个URL跳转或打开新页面
|
||||
// http://127.0.0.1:8010/webrtcapi-diy.html 其中的 http://127.0.0.1 获取当前java服务的IP地址
|
||||
// return R.ok("http://127.0.0.1:8010/webrtcapi-diy.html");
|
||||
// 运行状态
|
||||
bo.setRunStatus("1");
|
||||
return R.ok("http://127.0.0.1:8010/webrtcapi-diy.html");
|
||||
} else {
|
||||
return R.fail("启动真人交互数字人失败");
|
||||
}
|
||||
}
|
||||
@SaCheckPermission("aihuman:aihumanRealConfig:run")
|
||||
//@Log(title = "真人交互数字人配置", businessType = BusinessType.UPDATE, operatorType = OperatorType.OTHER)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/run")
|
||||
public R<String> run(@Validated(EditGroup.class) @RequestBody AihumanRealConfigBo bo) {
|
||||
boolean result = aihumanRealConfigService.runByBo(bo);
|
||||
if (result) {
|
||||
// 返回前端页面URL,前端可以根据这个URL跳转或打开新页面
|
||||
// http://127.0.0.1:8010/webrtcapi-diy.html 其中的 http://127.0.0.1 获取当前java服务的IP地址
|
||||
// return R.ok("http://127.0.0.1:8010/webrtcapi-diy.html");
|
||||
// 运行状态
|
||||
bo.setRunStatus("1");
|
||||
return R.ok("http://127.0.0.1:8010/webrtcapi-diy.html");
|
||||
} else {
|
||||
return R.fail("启动真人交互数字人失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止真人交互数字人配置任务
|
||||
*/
|
||||
@SaCheckPermission("aihuman:aihumanRealConfig:stop")
|
||||
//@Log(title = "真人交互数字人配置", businessType = BusinessType.UPDATE, operatorType = OperatorType.OTHER)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/stop")
|
||||
public R<String> stop(@Validated(EditGroup.class) @RequestBody AihumanRealConfigBo bo) {
|
||||
boolean result = aihumanRealConfigService.stopByBo(bo);
|
||||
if (result) {
|
||||
// 运行状态
|
||||
bo.setRunStatus("0");
|
||||
return R.ok("真人交互数字人任务已停止");
|
||||
} else {
|
||||
return R.fail("停止真人交互数字人任务失败或没有正在运行的任务");
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 停止真人交互数字人配置任务
|
||||
*/
|
||||
@SaCheckPermission("aihuman:aihumanRealConfig:stop")
|
||||
//@Log(title = "真人交互数字人配置", businessType = BusinessType.UPDATE, operatorType = OperatorType.OTHER)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/stop")
|
||||
public R<String> stop(@Validated(EditGroup.class) @RequestBody AihumanRealConfigBo bo) {
|
||||
boolean result = aihumanRealConfigService.stopByBo(bo);
|
||||
if (result) {
|
||||
// 运行状态
|
||||
bo.setRunStatus("0");
|
||||
return R.ok("真人交互数字人任务已停止");
|
||||
} else {
|
||||
return R.fail("停止真人交互数字人任务失败或没有正在运行的任务");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,43 +1,39 @@
|
||||
package org.ruoyi.aihuman.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.ruoyi.aihuman.domain.VoiceRequest;
|
||||
import org.ruoyi.aihuman.protocol.EventType;
|
||||
import org.ruoyi.aihuman.protocol.Message;
|
||||
import org.ruoyi.aihuman.protocol.MsgType;
|
||||
import org.ruoyi.aihuman.protocol.SpeechWebSocketClient;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 火山引擎相关接口
|
||||
@@ -54,12 +50,10 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
@RequestMapping("/aihuman/volcengine")
|
||||
public class AihumanVolcengineController {
|
||||
|
||||
@Autowired
|
||||
private ResourceLoader resourceLoader;
|
||||
|
||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||
private static final Logger logger = LoggerFactory.getLogger(AihumanVolcengineController.class);
|
||||
|
||||
@Autowired
|
||||
private ResourceLoader resourceLoader;
|
||||
|
||||
@PostMapping("/generate-voice-direct")
|
||||
public ResponseEntity<byte[]> generateVoiceDirect(@RequestBody VoiceRequest request) {
|
||||
@@ -304,7 +298,7 @@ public class AihumanVolcengineController {
|
||||
* 调用火山引擎TTS API生成音频文件
|
||||
*/
|
||||
private String callVolcengineTtsApi(String endpoint, String appId, String accessToken,
|
||||
String resourceId, String voice, String text, String encoding) {
|
||||
String resourceId, String voice, String text, String encoding) {
|
||||
try {
|
||||
// 确保resourceId不为空,如果为空则根据voice类型获取默认值
|
||||
if (resourceId == null || resourceId.isEmpty()) {
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package org.ruoyi.aihuman.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 交互数字人配置对象 aihuman_config
|
||||
@@ -19,7 +22,7 @@ public class AihumanConfig implements Serializable {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.ruoyi.aihuman.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@@ -15,25 +16,37 @@ import java.util.Date;
|
||||
public class AihumanInfo implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键ID */
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/** 交互名称 */
|
||||
/**
|
||||
* 交互名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/** 交互内容 */
|
||||
/**
|
||||
* 交互内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/** 创建时间 */
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
/** 更新时间 */
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
/** 删除标志(0代表存在 2代表删除) */
|
||||
/**
|
||||
* 删除标志(0代表存在 2代表删除)
|
||||
*/
|
||||
@TableLogic
|
||||
private String delFlag;
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
package org.ruoyi.aihuman.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 真人交互数字人配置对象 aihuman_real_config
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
package org.ruoyi.aihuman.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@@ -1,19 +1,14 @@
|
||||
package org.ruoyi.aihuman.domain.bo;
|
||||
|
||||
import org.ruoyi.aihuman.domain.AihumanConfig;
|
||||
import org.ruoyi.core.domain.BaseEntity;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import org.ruoyi.aihuman.domain.AihumanConfig;
|
||||
import org.ruoyi.common.core.validate.AddGroup;
|
||||
import org.ruoyi.common.core.validate.EditGroup;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.io.Serializable;
|
||||
import org.ruoyi.common.core.validate.AddGroup;
|
||||
import org.ruoyi.common.core.validate.EditGroup;
|
||||
import java.io.Serializable;
|
||||
import java.io.Serializable;
|
||||
import org.ruoyi.common.core.validate.AddGroup;
|
||||
import org.ruoyi.common.core.validate.EditGroup;
|
||||
|
||||
/**
|
||||
* 交互数字人配置业务对象 aihuman_config
|
||||
@@ -59,12 +54,12 @@ public class AihumanConfigBo implements Serializable {
|
||||
/**
|
||||
* status
|
||||
*/
|
||||
@NotNull(message = "status不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "status不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Integer status;
|
||||
/**
|
||||
* publish
|
||||
*/
|
||||
@NotNull(message = "publish不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "publish不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Integer publish;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,19 +1,11 @@
|
||||
package org.ruoyi.aihuman.domain.bo;
|
||||
|
||||
import org.ruoyi.aihuman.domain.AihumanInfo;
|
||||
import org.ruoyi.core.domain.BaseEntity;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import org.ruoyi.aihuman.domain.AihumanInfo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.io.Serializable;
|
||||
import org.ruoyi.common.core.validate.AddGroup;
|
||||
import org.ruoyi.common.core.validate.EditGroup;
|
||||
import java.io.Serializable;
|
||||
import java.io.Serializable;
|
||||
import org.ruoyi.common.core.validate.AddGroup;
|
||||
import org.ruoyi.common.core.validate.EditGroup;
|
||||
|
||||
/**
|
||||
* 数字人信息管理业务对象 aihuman_info
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package org.ruoyi.aihuman.domain.bo;
|
||||
|
||||
import org.ruoyi.aihuman.domain.AihumanRealConfig;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.ruoyi.aihuman.domain.AihumanRealConfig;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 真人交互数字人配置业务对象 aihuman_real_config
|
||||
@@ -66,9 +66,9 @@ public class AihumanRealConfigBo implements Serializable {
|
||||
*/
|
||||
private String runParams;
|
||||
|
||||
/**
|
||||
* 运行状态
|
||||
*/
|
||||
/**
|
||||
* 运行状态
|
||||
*/
|
||||
private String runStatus;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
package org.ruoyi.aihuman.domain.vo;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.io.Serializable;
|
||||
import org.ruoyi.aihuman.domain.AihumanConfig;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.ruoyi.aihuman.domain.AihumanConfig;
|
||||
import org.ruoyi.common.excel.annotation.ExcelDictFormat;
|
||||
import org.ruoyi.common.excel.convert.ExcelDictConvert;
|
||||
|
||||
import java.util.Date;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.ruoyi.aihuman.domain.vo;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.ruoyi.aihuman.domain.AihumanInfo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@@ -16,18 +17,28 @@ import java.util.Date;
|
||||
public class AihumanInfoVo implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键ID */
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/** 交互名称 */
|
||||
/**
|
||||
* 交互名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/** 交互内容 */
|
||||
/**
|
||||
* 交互内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/** 创建时间 */
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/** 更新时间 */
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
}
|
||||
@@ -1,15 +1,16 @@
|
||||
package org.ruoyi.aihuman.domain.vo;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.io.Serializable;
|
||||
import org.ruoyi.aihuman.domain.AihumanRealConfig;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.ruoyi.aihuman.domain.AihumanRealConfig;
|
||||
import org.ruoyi.common.excel.annotation.ExcelDictFormat;
|
||||
import org.ruoyi.common.excel.convert.ExcelDictConvert;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
/**
|
||||
* 真人交互数字人配置视图对象 aihuman_real_config
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package org.ruoyi.aihuman.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.ruoyi.aihuman.domain.AihumanConfig;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanConfigVo;
|
||||
import org.ruoyi.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 交互数字人配置Mapper接口
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package org.ruoyi.aihuman.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.ruoyi.core.mapper.BaseMapperPlus;
|
||||
import org.ruoyi.aihuman.domain.AihumanInfo;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanInfoVo;
|
||||
import org.ruoyi.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* AI人类交互信息Mapper接口
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package org.ruoyi.aihuman.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.ruoyi.aihuman.domain.AihumanRealConfig;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanRealConfigVo;
|
||||
import org.ruoyi.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 真人交互数字人配置Mapper接口
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package org.ruoyi.aihuman.service;
|
||||
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanConfigVo;
|
||||
import org.ruoyi.aihuman.domain.bo.AihumanConfigBo;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanConfigVo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -19,12 +19,12 @@ public interface AihumanConfigService {
|
||||
/**
|
||||
* 查询交互数字人配置
|
||||
*/
|
||||
AihumanConfigVo queryById(Integer id);
|
||||
AihumanConfigVo queryById(Integer id);
|
||||
|
||||
/**
|
||||
* 查询交互数字人配置列表
|
||||
*/
|
||||
TableDataInfo<AihumanConfigVo> queryPageList(AihumanConfigBo bo, PageQuery pageQuery);
|
||||
/**
|
||||
* 查询交互数字人配置列表
|
||||
*/
|
||||
TableDataInfo<AihumanConfigVo> queryPageList(AihumanConfigBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询交互数字人配置列表
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package org.ruoyi.aihuman.service;
|
||||
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanRealConfigVo;
|
||||
import org.ruoyi.aihuman.domain.bo.AihumanRealConfigBo;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanRealConfigVo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -19,12 +19,12 @@ public interface AihumanRealConfigService {
|
||||
/**
|
||||
* 查询真人交互数字人配置
|
||||
*/
|
||||
AihumanRealConfigVo queryById(Integer id);
|
||||
AihumanRealConfigVo queryById(Integer id);
|
||||
|
||||
/**
|
||||
* 查询真人交互数字人配置列表
|
||||
*/
|
||||
TableDataInfo<AihumanRealConfigVo> queryPageList(AihumanRealConfigBo bo, PageQuery pageQuery);
|
||||
/**
|
||||
* 查询真人交互数字人配置列表
|
||||
*/
|
||||
TableDataInfo<AihumanRealConfigVo> queryPageList(AihumanRealConfigBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询真人交互数字人配置列表
|
||||
|
||||
@@ -2,8 +2,8 @@ package org.ruoyi.aihuman.service;
|
||||
|
||||
import org.ruoyi.aihuman.domain.AihumanInfo;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanInfoVo;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
package org.ruoyi.aihuman.service.impl;
|
||||
|
||||
import org.ruoyi.common.core.utils.MapstructUtils;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.ruoyi.aihuman.domain.AihumanConfig;
|
||||
import org.ruoyi.aihuman.domain.bo.AihumanConfigBo;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanConfigVo;
|
||||
import org.ruoyi.aihuman.domain.AihumanConfig;
|
||||
import org.ruoyi.aihuman.mapper.AihumanConfigMapper;
|
||||
import org.ruoyi.aihuman.service.AihumanConfigService;
|
||||
import org.ruoyi.common.core.utils.MapstructUtils;
|
||||
import org.ruoyi.common.core.utils.StringUtils;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 交互数字人配置Service业务层处理
|
||||
@@ -39,15 +38,15 @@ public class AihumanConfigServiceImpl implements AihumanConfigService {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询交互数字人配置列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<AihumanConfigVo> queryPageList(AihumanConfigBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<AihumanConfig> lqw = buildQueryWrapper(bo);
|
||||
Page<AihumanConfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
/**
|
||||
* 查询交互数字人配置列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<AihumanConfigVo> queryPageList(AihumanConfigBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<AihumanConfig> lqw = buildQueryWrapper(bo);
|
||||
Page<AihumanConfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询交互数字人配置列表
|
||||
@@ -60,15 +59,15 @@ public class AihumanConfigServiceImpl implements AihumanConfigService {
|
||||
|
||||
private LambdaQueryWrapper<AihumanConfig> buildQueryWrapper(AihumanConfigBo bo) {
|
||||
LambdaQueryWrapper<AihumanConfig> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getName()), AihumanConfig::getName, bo.getName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getModelName()), AihumanConfig::getModelName, bo.getModelName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getModelPath()), AihumanConfig::getModelPath, bo.getModelPath());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getModelParams()), AihumanConfig::getModelParams, bo.getModelParams());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAgentParams()), AihumanConfig::getAgentParams, bo.getAgentParams());
|
||||
lqw.eq(bo.getCreateTime() != null, AihumanConfig::getCreateTime, bo.getCreateTime());
|
||||
lqw.eq(bo.getUpdateTime() != null, AihumanConfig::getUpdateTime, bo.getUpdateTime());
|
||||
lqw.eq(bo.getStatus() != null, AihumanConfig::getStatus, bo.getStatus());
|
||||
lqw.eq(bo.getPublish() != null, AihumanConfig::getPublish, bo.getPublish());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getName()), AihumanConfig::getName, bo.getName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getModelName()), AihumanConfig::getModelName, bo.getModelName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getModelPath()), AihumanConfig::getModelPath, bo.getModelPath());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getModelParams()), AihumanConfig::getModelParams, bo.getModelParams());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAgentParams()), AihumanConfig::getAgentParams, bo.getAgentParams());
|
||||
lqw.eq(bo.getCreateTime() != null, AihumanConfig::getCreateTime, bo.getCreateTime());
|
||||
lqw.eq(bo.getUpdateTime() != null, AihumanConfig::getUpdateTime, bo.getUpdateTime());
|
||||
lqw.eq(bo.getStatus() != null, AihumanConfig::getStatus, bo.getStatus());
|
||||
lqw.eq(bo.getPublish() != null, AihumanConfig::getPublish, bo.getPublish());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@@ -77,7 +76,7 @@ public class AihumanConfigServiceImpl implements AihumanConfigService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(AihumanConfigBo bo) {
|
||||
AihumanConfig add = MapstructUtils.convert(bo, AihumanConfig. class);
|
||||
AihumanConfig add = MapstructUtils.convert(bo, AihumanConfig.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
@@ -91,7 +90,7 @@ public class AihumanConfigServiceImpl implements AihumanConfigService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(AihumanConfigBo bo) {
|
||||
AihumanConfig update = MapstructUtils.convert(bo, AihumanConfig. class);
|
||||
AihumanConfig update = MapstructUtils.convert(bo, AihumanConfig.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
@@ -4,14 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.ruoyi.aihuman.domain.AihumanInfo;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanInfoVo;
|
||||
import org.ruoyi.aihuman.mapper.AihumanInfoMapper;
|
||||
import org.ruoyi.aihuman.service.IAihumanInfoService;
|
||||
import org.ruoyi.common.core.utils.StringUtils;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,37 +1,36 @@
|
||||
package org.ruoyi.aihuman.service.impl;
|
||||
|
||||
import com.sun.jna.Library;
|
||||
import com.sun.jna.Native;
|
||||
import jakarta.annotation.PreDestroy;
|
||||
import org.ruoyi.common.core.utils.MapstructUtils;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.sun.jna.Library;
|
||||
import com.sun.jna.Native;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.WinNT;
|
||||
import jakarta.annotation.PreDestroy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.ruoyi.aihuman.domain.AihumanRealConfig;
|
||||
import org.ruoyi.aihuman.domain.bo.AihumanRealConfigBo;
|
||||
import org.ruoyi.aihuman.domain.vo.AihumanRealConfigVo;
|
||||
import org.ruoyi.aihuman.domain.AihumanRealConfig;
|
||||
import org.ruoyi.aihuman.mapper.AihumanRealConfigMapper;
|
||||
import org.ruoyi.aihuman.service.AihumanRealConfigService;
|
||||
import org.ruoyi.common.core.utils.MapstructUtils;
|
||||
import org.ruoyi.common.core.utils.StringUtils;
|
||||
import org.ruoyi.common.redis.utils.RedisUtils;
|
||||
import org.ruoyi.core.page.PageQuery;
|
||||
import org.ruoyi.core.page.TableDataInfo;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
import java.util.Collection;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.sun.jna.platform.win32.WinNT;
|
||||
import com.sun.jna.Pointer;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
@@ -44,6 +43,7 @@ import java.util.concurrent.TimeUnit;
|
||||
@Service
|
||||
public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(AihumanRealConfigServiceImpl.class);
|
||||
private final AihumanRealConfigMapper baseMapper;
|
||||
// 存储当前运行的进程,用于停止操作
|
||||
private volatile Process runningProcess = null;
|
||||
@@ -56,15 +56,15 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询真人交互数字人配置列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<AihumanRealConfigVo> queryPageList(AihumanRealConfigBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<AihumanRealConfig> lqw = buildQueryWrapper(bo);
|
||||
Page<AihumanRealConfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
/**
|
||||
* 查询真人交互数字人配置列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<AihumanRealConfigVo> queryPageList(AihumanRealConfigBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<AihumanRealConfig> lqw = buildQueryWrapper(bo);
|
||||
Page<AihumanRealConfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询真人交互数字人配置列表
|
||||
@@ -77,22 +77,22 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
|
||||
private LambdaQueryWrapper<AihumanRealConfig> buildQueryWrapper(AihumanRealConfigBo bo) {
|
||||
LambdaQueryWrapper<AihumanRealConfig> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getName()), AihumanRealConfig::getName, bo.getName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAvatars()), AihumanRealConfig::getAvatars, bo.getAvatars());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getModels()), AihumanRealConfig::getModels, bo.getModels());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAvatarsParams()), AihumanRealConfig::getAvatarsParams, bo.getAvatarsParams());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getModelsParams()), AihumanRealConfig::getModelsParams, bo.getModelsParams());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAgentParams()), AihumanRealConfig::getAgentParams, bo.getAgentParams());
|
||||
lqw.eq(bo.getCreateTime() != null, AihumanRealConfig::getCreateTime, bo.getCreateTime());
|
||||
lqw.eq(bo.getUpdateTime() != null, AihumanRealConfig::getUpdateTime, bo.getUpdateTime());
|
||||
lqw.eq(bo.getStatus() != null, AihumanRealConfig::getStatus, bo.getStatus());
|
||||
lqw.eq(bo.getPublish() != null, AihumanRealConfig::getPublish, bo.getPublish());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRunParams()), AihumanRealConfig::getRunParams, bo.getRunParams());
|
||||
// 添加runStatus字段的查询条件
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRunStatus()), AihumanRealConfig::getRunStatus, bo.getRunStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCreateDept()), AihumanRealConfig::getCreateDept, bo.getCreateDept());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), AihumanRealConfig::getCreateBy, bo.getCreateBy());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUpdateBy()), AihumanRealConfig::getUpdateBy, bo.getUpdateBy());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getName()), AihumanRealConfig::getName, bo.getName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAvatars()), AihumanRealConfig::getAvatars, bo.getAvatars());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getModels()), AihumanRealConfig::getModels, bo.getModels());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAvatarsParams()), AihumanRealConfig::getAvatarsParams, bo.getAvatarsParams());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getModelsParams()), AihumanRealConfig::getModelsParams, bo.getModelsParams());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAgentParams()), AihumanRealConfig::getAgentParams, bo.getAgentParams());
|
||||
lqw.eq(bo.getCreateTime() != null, AihumanRealConfig::getCreateTime, bo.getCreateTime());
|
||||
lqw.eq(bo.getUpdateTime() != null, AihumanRealConfig::getUpdateTime, bo.getUpdateTime());
|
||||
lqw.eq(bo.getStatus() != null, AihumanRealConfig::getStatus, bo.getStatus());
|
||||
lqw.eq(bo.getPublish() != null, AihumanRealConfig::getPublish, bo.getPublish());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRunParams()), AihumanRealConfig::getRunParams, bo.getRunParams());
|
||||
// 添加runStatus字段的查询条件
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRunStatus()), AihumanRealConfig::getRunStatus, bo.getRunStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCreateDept()), AihumanRealConfig::getCreateDept, bo.getCreateDept());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), AihumanRealConfig::getCreateBy, bo.getCreateBy());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUpdateBy()), AihumanRealConfig::getUpdateBy, bo.getUpdateBy());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(AihumanRealConfigBo bo) {
|
||||
AihumanRealConfig add = MapstructUtils.convert(bo, AihumanRealConfig. class);
|
||||
AihumanRealConfig add = MapstructUtils.convert(bo, AihumanRealConfig.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
@@ -115,7 +115,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(AihumanRealConfigBo bo) {
|
||||
AihumanRealConfig update = MapstructUtils.convert(bo, AihumanRealConfig. class);
|
||||
AihumanRealConfig update = MapstructUtils.convert(bo, AihumanRealConfig.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
@@ -138,8 +138,6 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(AihumanRealConfigServiceImpl.class);
|
||||
|
||||
/**
|
||||
* 执行真人交互数字人配置
|
||||
* 通过主键获取数据库记录,然后从run_params字段读取命令并执行
|
||||
@@ -153,7 +151,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
log.error("执行命令失败:主键ID为空");
|
||||
throw new RuntimeException("执行命令失败:主键ID为空");
|
||||
}
|
||||
|
||||
|
||||
// 检查是否已经有对应的进程在运行
|
||||
String redisKey = "aihuman:process:" + id;
|
||||
String existingPid = RedisUtils.getCacheObject(redisKey);
|
||||
@@ -166,21 +164,21 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
baseMapper.updateById(updateStatus);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// 查询数据库记录
|
||||
AihumanRealConfig config = baseMapper.selectById(id);
|
||||
if (config == null) {
|
||||
log.error("执行命令失败:未找到ID为{}的配置记录", id);
|
||||
throw new RuntimeException("执行命令失败:未找到对应的配置记录");
|
||||
}
|
||||
|
||||
|
||||
// 2. 从记录中获取run_params字段
|
||||
String runParams = config.getRunParams();
|
||||
if (StringUtils.isBlank(runParams)) {
|
||||
log.error("执行命令失败:ID为{}的记录中run_params字段为空", id);
|
||||
throw new RuntimeException("执行命令失败:run_params字段为空");
|
||||
}
|
||||
|
||||
|
||||
// 3. 解析并执行命令
|
||||
// 将多行命令合并为一个命令字符串
|
||||
String[] commands = runParams.split("\\r?\\n");
|
||||
@@ -188,7 +186,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
log.error("执行命令失败:runParams中没有有效的命令");
|
||||
throw new RuntimeException("执行命令失败:runParams中没有有效的命令");
|
||||
}
|
||||
|
||||
|
||||
// 将所有命令合并到一个命令字符串中,使用&&连接,确保在同一个进程中执行
|
||||
StringBuilder mergedCmd = new StringBuilder();
|
||||
for (int i = 0; i < commands.length; i++) {
|
||||
@@ -196,23 +194,23 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
if (command.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (mergedCmd.length() > 0) {
|
||||
mergedCmd.append(" && ");
|
||||
}
|
||||
|
||||
|
||||
mergedCmd.append(command);
|
||||
}
|
||||
|
||||
|
||||
String cmd = "cmd.exe /c " + mergedCmd.toString();
|
||||
log.info("准备执行合并命令:{}", cmd);
|
||||
|
||||
|
||||
// 更新数据库中的运行状态为运行中
|
||||
AihumanRealConfig updateStatus = new AihumanRealConfig();
|
||||
updateStatus.setId(id);
|
||||
updateStatus.setRunStatus("1"); // 1表示运行中
|
||||
baseMapper.updateById(updateStatus);
|
||||
|
||||
|
||||
// 使用线程池执行命令并监听输出
|
||||
ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||
executor.submit(() -> {
|
||||
@@ -220,14 +218,14 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
Process process = Runtime.getRuntime().exec(cmd);
|
||||
// 保存进程引用,用于后续停止操作
|
||||
runningProcess = process;
|
||||
|
||||
|
||||
// 获取进程ID并保存到Redis
|
||||
String pid = getProcessId(process);
|
||||
if (!"unknown".equals(pid)) {
|
||||
RedisUtils.setCacheObject(redisKey, pid);
|
||||
log.info("保存进程ID到Redis:key={}, pid={}", redisKey, pid);
|
||||
}
|
||||
|
||||
|
||||
// 读取标准输出
|
||||
new Thread(() -> {
|
||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
|
||||
@@ -239,7 +237,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
log.error("读取命令输出失败", e);
|
||||
}
|
||||
}).start();
|
||||
|
||||
|
||||
// 读取debug输出
|
||||
new Thread(() -> {
|
||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()))) {
|
||||
@@ -251,21 +249,21 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
log.error("读取命令debug输出失败", e);
|
||||
}
|
||||
}).start();
|
||||
|
||||
|
||||
// 等待进程结束
|
||||
int exitCode = process.waitFor();
|
||||
log.info("LiveTalking进程结束,退出码: {}", exitCode);
|
||||
|
||||
|
||||
// 进程结束后更新数据库状态为已停止
|
||||
AihumanRealConfig endStatus = new AihumanRealConfig();
|
||||
endStatus.setId(id);
|
||||
endStatus.setRunStatus("0"); // 0表示已停止
|
||||
baseMapper.updateById(endStatus);
|
||||
|
||||
|
||||
// 进程结束后从Redis中删除进程ID
|
||||
RedisUtils.deleteObject(redisKey);
|
||||
log.info("从Redis中删除进程ID:key={}", redisKey);
|
||||
|
||||
|
||||
// 进程结束后清空引用
|
||||
runningProcess = null;
|
||||
} catch (Exception e) {
|
||||
@@ -285,7 +283,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
runningProcess = null;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
executor.shutdown();
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
@@ -293,9 +291,10 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检查进程是否正在运行
|
||||
*
|
||||
* @param pid 进程ID
|
||||
* @return 是否正在运行
|
||||
*/
|
||||
@@ -303,20 +302,20 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
if (StringUtils.isEmpty(pid) || "unknown".equals(pid)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
boolean isWindows = System.getProperty("os.name").toLowerCase().contains("win");
|
||||
ProcessBuilder processBuilder;
|
||||
|
||||
|
||||
if (isWindows) {
|
||||
processBuilder = new ProcessBuilder("tasklist", "/FI", "PID eq " + pid);
|
||||
} else {
|
||||
processBuilder = new ProcessBuilder("ps", "-p", pid);
|
||||
}
|
||||
|
||||
|
||||
Process process = processBuilder.start();
|
||||
int exitCode = process.waitFor();
|
||||
|
||||
|
||||
// 在Windows上,tasklist命令如果找不到进程,退出码也是0,但输出中不会包含PID
|
||||
if (isWindows) {
|
||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
|
||||
@@ -346,7 +345,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
try {
|
||||
Integer id = bo.getId();
|
||||
String redisKey = "aihuman:process:" + id;
|
||||
|
||||
|
||||
// 首先检查Redis中是否有对应的进程ID
|
||||
String pid = RedisUtils.getCacheObject(redisKey);
|
||||
if (StringUtils.isNotEmpty(pid)) {
|
||||
@@ -367,19 +366,19 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
log.error("通过Redis中的PID停止进程失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 然后检查本地runningProcess引用
|
||||
if (runningProcess != null && runningProcess.isAlive()) {
|
||||
log.info("正在停止LiveTalking进程...");
|
||||
// 强制销毁进程树,确保完全停止
|
||||
destroyProcessTree(runningProcess);
|
||||
|
||||
|
||||
// 更新数据库中的运行状态为已停止
|
||||
AihumanRealConfig updateStatus = new AihumanRealConfig();
|
||||
updateStatus.setId(id);
|
||||
updateStatus.setRunStatus("0"); // 0表示已停止
|
||||
baseMapper.updateById(updateStatus);
|
||||
|
||||
|
||||
runningProcess = null;
|
||||
log.info("LiveTalking进程已停止");
|
||||
} else {
|
||||
@@ -390,11 +389,11 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
updateStatus.setRunStatus("0"); // 0表示已停止
|
||||
baseMapper.updateById(updateStatus);
|
||||
}
|
||||
|
||||
|
||||
// 无论如何都从Redis中删除进程ID
|
||||
RedisUtils.deleteObject(redisKey);
|
||||
log.info("从Redis中删除进程ID:key={}", redisKey);
|
||||
|
||||
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error("停止进程时发生异常", e);
|
||||
@@ -410,6 +409,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
|
||||
/**
|
||||
* 销毁进程及其子进程(进程树)
|
||||
*
|
||||
* @param process 要销毁的进程
|
||||
*/
|
||||
private void destroyProcessTree(Process process) {
|
||||
@@ -418,7 +418,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
// 获取进程ID
|
||||
String pid = getProcessId(process);
|
||||
log.info("获取到进程ID: {}", pid);
|
||||
|
||||
|
||||
// 根据操作系统类型,使用不同的命令终止进程树
|
||||
if (System.getProperty("os.name").toLowerCase().contains("win")) {
|
||||
// Windows系统使用taskkill命令终止进程树
|
||||
@@ -449,14 +449,15 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
|
||||
/**
|
||||
* 获取进程ID
|
||||
*
|
||||
* @param process 进程对象
|
||||
* @return 进程ID
|
||||
*/
|
||||
private String getProcessId(Process process) {
|
||||
try {
|
||||
// 不同JVM实现可能有所不同,这里尝试通过反射获取
|
||||
if (process.getClass().getName().equals("java.lang.Win32Process") ||
|
||||
process.getClass().getName().equals("java.lang.ProcessImpl")) {
|
||||
if (process.getClass().getName().equals("java.lang.Win32Process") ||
|
||||
process.getClass().getName().equals("java.lang.ProcessImpl")) {
|
||||
Field f = process.getClass().getDeclaredField("handle");
|
||||
f.setAccessible(true);
|
||||
long handl = f.getLong(process);
|
||||
@@ -472,7 +473,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
} catch (Exception e) {
|
||||
log.error("获取进程ID失败", e);
|
||||
}
|
||||
|
||||
|
||||
// 如果反射获取失败,尝试通过wmic命令获取
|
||||
try {
|
||||
// 对于Windows系统,可以尝试使用wmic命令获取进程ID
|
||||
@@ -483,14 +484,8 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
} catch (Exception e) {
|
||||
log.error("通过ProcessHandle获取进程ID失败", e);
|
||||
}
|
||||
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
// JNA接口定义,用于Windows系统获取进程ID
|
||||
interface Kernel32 extends Library {
|
||||
Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
|
||||
int GetProcessId(WinNT.HANDLE hProcess);
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
@@ -499,7 +494,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
try {
|
||||
log.info("应用关闭,正在停止数字人进程");
|
||||
destroyProcessTree(runningProcess);
|
||||
|
||||
|
||||
// 查找所有运行状态为运行中的配置,并更新为已停止
|
||||
LambdaQueryWrapper<AihumanRealConfig> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(AihumanRealConfig::getRunStatus, "1");
|
||||
@@ -507,7 +502,7 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
for (AihumanRealConfig config : runningConfigs) {
|
||||
config.setRunStatus("0");
|
||||
baseMapper.updateById(config);
|
||||
|
||||
|
||||
// 从Redis中删除对应的进程ID记录
|
||||
String redisKey = "aihuman:process:" + config.getId();
|
||||
RedisUtils.deleteObject(redisKey);
|
||||
@@ -529,4 +524,11 @@ public class AihumanRealConfigServiceImpl implements AihumanRealConfigService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// JNA接口定义,用于Windows系统获取进程ID
|
||||
interface Kernel32 extends Library {
|
||||
Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
|
||||
|
||||
int GetProcessId(WinNT.HANDLE hProcess);
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,31 @@
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971582278942666752, '交互数字人配置', '2000', '1', 'aihumanConfig', 'aihuman/aihumanConfig/index', 1, 0, 'C', '0', '0', 'aihuman:aihumanConfig:list', '#', 103, 1, sysdate(), null, null, '交互数字人配置菜单');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971582278942666752, '交互数字人配置', '2000', '1', 'aihumanConfig', 'aihuman/aihumanConfig/index', 1, 0, 'C',
|
||||
'0', '0', 'aihuman:aihumanConfig:list', '#', 103, 1, sysdate(), null, null, '交互数字人配置菜单');
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971582278942666753, '交互数字人配置查询', 1971582278942666752, '1', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanConfig:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971582278942666753, '交互数字人配置查询', 1971582278942666752, '1', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanConfig:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971582278942666754, '交互数字人配置新增', 1971582278942666752, '2', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanConfig:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971582278942666754, '交互数字人配置新增', 1971582278942666752, '2', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanConfig:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971582278942666755, '交互数字人配置修改', 1971582278942666752, '3', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanConfig:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971582278942666755, '交互数字人配置修改', 1971582278942666752, '3', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanConfig:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971582278942666756, '交互数字人配置删除', 1971582278942666752, '4', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanConfig:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971582278942666756, '交互数字人配置删除', 1971582278942666752, '4', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanConfig:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971582278942666757, '交互数字人配置导出', 1971582278942666752, '5', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanConfig:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971582278942666757, '交互数字人配置导出', 1971582278942666752, '5', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanConfig:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
@@ -1,19 +1,31 @@
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971546066781597696, '数字人信息管理', '2000', '1', 'aihumanInfo', 'aihuman/aihumanInfo/index', 1, 0, 'C', '0', '0', 'aihuman:aihumanInfo:list', '#', 103, 1, sysdate(), null, null, '数字人信息管理菜单');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971546066781597696, '数字人信息管理', '2000', '1', 'aihumanInfo', 'aihuman/aihumanInfo/index', 1, 0, 'C', '0',
|
||||
'0', 'aihuman:aihumanInfo:list', '#', 103, 1, sysdate(), null, null, '数字人信息管理菜单');
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971546066781597697, '数字人信息管理查询', 1971546066781597696, '1', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanInfo:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971546066781597697, '数字人信息管理查询', 1971546066781597696, '1', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanInfo:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971546066781597698, '数字人信息管理新增', 1971546066781597696, '2', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanInfo:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971546066781597698, '数字人信息管理新增', 1971546066781597696, '2', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanInfo:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971546066781597699, '数字人信息管理修改', 1971546066781597696, '3', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanInfo:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971546066781597699, '数字人信息管理修改', 1971546066781597696, '3', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanInfo:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971546066781597700, '数字人信息管理删除', 1971546066781597696, '4', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanInfo:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971546066781597700, '数字人信息管理删除', 1971546066781597696, '4', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanInfo:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1971546066781597701, '数字人信息管理导出', 1971546066781597696, '5', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanInfo:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1971546066781597701, '数字人信息管理导出', 1971546066781597696, '5', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanInfo:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
@@ -1,19 +1,32 @@
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1980480880138051584, '真人交互数字人配置', '2000', '1', 'aihumanRealConfig', 'aihuman/aihumanRealConfig/index', 1, 0, 'C', '0', '0', 'aihuman:aihumanRealConfig:list', '#', 103, 1, sysdate(), null, null, '真人交互数字人配置菜单');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1980480880138051584, '真人交互数字人配置', '2000', '1', 'aihumanRealConfig', 'aihuman/aihumanRealConfig/index',
|
||||
1, 0, 'C', '0', '0', 'aihuman:aihumanRealConfig:list', '#', 103, 1, sysdate(), null, null,
|
||||
'真人交互数字人配置菜单');
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1980480880138051585, '真人交互数字人配置查询', 1980480880138051584, '1', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanRealConfig:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1980480880138051585, '真人交互数字人配置查询', 1980480880138051584, '1', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanRealConfig:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1980480880138051586, '真人交互数字人配置新增', 1980480880138051584, '2', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanRealConfig:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1980480880138051586, '真人交互数字人配置新增', 1980480880138051584, '2', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanRealConfig:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1980480880138051587, '真人交互数字人配置修改', 1980480880138051584, '3', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanRealConfig:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1980480880138051587, '真人交互数字人配置修改', 1980480880138051584, '3', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanRealConfig:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1980480880138051588, '真人交互数字人配置删除', 1980480880138051584, '4', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanRealConfig:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1980480880138051588, '真人交互数字人配置删除', 1980480880138051584, '4', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanRealConfig:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1980480880138051589, '真人交互数字人配置导出', 1980480880138051584, '5', '#', '', 1, 0, 'F', '0', '0', 'aihuman:aihumanRealConfig:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1980480880138051589, '真人交互数字人配置导出', 1980480880138051584, '5', '#', '', 1, 0, 'F', '0', '0',
|
||||
'aihuman:aihumanRealConfig:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package org.ruoyi.aihuman.volcengine;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.ruoyi.aihuman.protocol.EventType;
|
||||
import org.ruoyi.aihuman.protocol.Message;
|
||||
import org.ruoyi.aihuman.protocol.MsgType;
|
||||
import org.ruoyi.aihuman.protocol.SpeechWebSocketClient;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
|
||||
Reference in New Issue
Block a user