From 31602cb85e55987958c5a9ad5245ab08aa77caa4 Mon Sep 17 00:00:00 2001
From: Maxchen <1174344944@qq.com>
Date: Thu, 9 Oct 2025 18:53:28 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E5=AD=97=E4=BA=BA=E5=90=8E=E7=AB=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-modules/ruoyi-aihuman/pom.xml | 74 +++++++++++
.../controller/AihumanConfigController.java | 125 ++++++++++++++++++
.../controller/AihumanInfoController.java | 80 +++++++++++
.../ruoyi/aihuman/domain/AihumanConfig.java | 71 ++++++++++
.../org/ruoyi/aihuman/domain/AihumanInfo.java | 39 ++++++
.../aihuman/domain/bo/AihumanConfigBo.java | 70 ++++++++++
.../aihuman/domain/bo/AihumanInfoBo.java | 52 ++++++++
.../aihuman/domain/vo/AihumanConfigVo.java | 76 +++++++++++
.../aihuman/domain/vo/AihumanInfoVo.java | 33 +++++
.../aihuman/mapper/AihumanConfigMapper.java | 17 +++
.../aihuman/mapper/AihumanInfoMapper.java | 16 +++
.../aihuman/service/AihumanConfigService.java | 48 +++++++
.../aihuman/service/IAihumanInfoService.java | 47 +++++++
.../impl/AihumanConfigServiceImpl.java | 116 ++++++++++++++++
.../service/impl/AihumanInfoServiceImpl.java | 96 ++++++++++++++
.../ruoyi/aihuman/sql/aihuman_config_menu.sql | 19 +++
.../ruoyi/aihuman/sql/aihuman_info_menu.sql | 19 +++
.../resources/mapper/AihumanInfoMapper.xml | 9 ++
.../mapper/aihuman/AihumanConfigMapper.xml | 7 +
19 files changed, 1014 insertions(+)
create mode 100644 ruoyi-modules/ruoyi-aihuman/pom.xml
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/controller/AihumanConfigController.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/controller/AihumanInfoController.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/AihumanConfig.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/AihumanInfo.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/bo/AihumanConfigBo.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/bo/AihumanInfoBo.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/vo/AihumanConfigVo.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/vo/AihumanInfoVo.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/mapper/AihumanConfigMapper.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/mapper/AihumanInfoMapper.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/AihumanConfigService.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/IAihumanInfoService.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/impl/AihumanConfigServiceImpl.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/impl/AihumanInfoServiceImpl.java
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/sql/aihuman_config_menu.sql
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/sql/aihuman_info_menu.sql
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/resources/mapper/AihumanInfoMapper.xml
create mode 100644 ruoyi-modules/ruoyi-aihuman/src/main/resources/mapper/aihuman/AihumanConfigMapper.xml
diff --git a/ruoyi-modules/ruoyi-aihuman/pom.xml b/ruoyi-modules/ruoyi-aihuman/pom.xml
new file mode 100644
index 00000000..d594c634
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/pom.xml
@@ -0,0 +1,74 @@
+
+
+ 4.0.0
+
+ org.ruoyi
+ ruoyi-modules
+ ${revision}
+ ../pom.xml
+
+
+ ruoyi-aihuman
+
+
+ aihuman模块
+
+
+
+ 3.2.1
+
+
+
+
+
+
+ org.ruoyi
+ ruoyi-common-core
+
+
+
+ org.ruoyi
+ ruoyi-common-doc
+
+
+
+ org.ruoyi
+ ruoyi-common-mybatis
+
+
+
+ org.ruoyi
+ ruoyi-common-web
+
+
+
+ org.ruoyi
+ ruoyi-common-log
+
+
+
+
+ org.apache.velocity
+ velocity-engine-core
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.ruoyi
+ ruoyi-common-excel
+
+
+
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/controller/AihumanConfigController.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/controller/AihumanConfigController.java
new file mode 100644
index 00000000..4eecdf83
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/controller/AihumanConfigController.java
@@ -0,0 +1,125 @@
+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 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.core.page.TableDataInfo;
+
+/**
+ * 交互数字人配置
+ *
+ * @author ageerle
+ * @date Fri Sep 26 22:27:00 GMT+08:00 2025
+ */
+
+//临时免登录
+@SaIgnore
+
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/aihuman/aihumanConfig")
+public class AihumanConfigController extends BaseController {
+
+ private final AihumanConfigService aihumanConfigService;
+
+/**
+ * 查询交互数字人配置列表
+ */
+@SaCheckPermission("aihuman:aihumanConfig:list")
+@GetMapping("/list")
+ public TableDataInfo list(AihumanConfigBo bo, PageQuery pageQuery) {
+ return aihumanConfigService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出交互数字人配置列表
+ */
+ @SaCheckPermission("aihuman:aihumanConfig:export")
+ @Log(title = "交互数字人配置", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(AihumanConfigBo bo, HttpServletResponse response) {
+ List list = aihumanConfigService.queryList(bo);
+ ExcelUtil.exportExcel(list, "交互数字人配置", AihumanConfigVo.class, response);
+ }
+
+ /**
+ * 获取交互数字人配置详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("aihuman:aihumanConfig:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Integer id) {
+ return R.ok(aihumanConfigService.queryById(id));
+ }
+
+ /**
+ * 新增交互数字人配置
+ */
+ @SaCheckPermission("aihuman:aihumanConfig:add")
+ @Log(title = "交互数字人配置", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody AihumanConfigBo bo) {
+ return toAjax(aihumanConfigService.insertByBo(bo));
+ }
+
+ /**
+ * 修改交互数字人配置
+ */
+ @SaCheckPermission("aihuman:aihumanConfig:edit")
+ @Log(title = "交互数字人配置", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody AihumanConfigBo bo) {
+ return toAjax(aihumanConfigService.updateByBo(bo));
+ }
+
+ /**
+ * 删除交互数字人配置
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("aihuman:aihumanConfig:remove")
+ @Log(title = "交互数字人配置", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Integer[] ids) {
+ return toAjax(aihumanConfigService.deleteWithValidByIds(List.of(ids), true));
+ }
+
+ /**
+ * 查询已发布的交互数字人配置列表
+ * 只返回 publish = 1 的数据
+ */
+ @GetMapping("/publishedList")
+ public TableDataInfo publishedList(PageQuery pageQuery) {
+ // 创建查询条件对象并设置publish=1
+ AihumanConfigBo bo = new AihumanConfigBo();
+ bo.setPublish(1);
+ // 调用现有的查询方法,传入预设了publish=1条件的bo对象
+ return aihumanConfigService.queryPageList(bo, pageQuery);
+ }
+
+
+}
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/controller/AihumanInfoController.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/controller/AihumanInfoController.java
new file mode 100644
index 00000000..444e8ee2
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/controller/AihumanInfoController.java
@@ -0,0 +1,80 @@
+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 java.util.Arrays;
+
+/**
+ * AI人类交互信息Controller
+ * 免登录接口,方便验证
+ *
+ * @author QingYunAI
+ */
+@SaIgnore
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/aihuman/info")
+public class AihumanInfoController {
+
+ private final IAihumanInfoService aihumanInfoService;
+
+ /**
+ * 获取AI人类交互信息详情
+ */
+ @GetMapping("/{id}")
+ public R getInfo(@PathVariable Long id) {
+ return R.ok(aihumanInfoService.queryById(id));
+ }
+
+ /**
+ * 查询AI人类交互信息列表
+ */
+ @GetMapping("/list")
+ public R> list(AihumanInfo aihumanInfo, PageQuery pageQuery) {
+ TableDataInfo tableDataInfo = aihumanInfoService.queryPageList(aihumanInfo, pageQuery);
+ return R.ok(tableDataInfo);
+ }
+
+ /**
+ * 新增AI人类交互信息
+ */
+ @PostMapping
+ public R add(@Validated @RequestBody AihumanInfo aihumanInfo) {
+ return R.ok(aihumanInfoService.insert(aihumanInfo));
+ }
+
+ /**
+ * 修改AI人类交互信息
+ */
+ @PutMapping
+ public R edit(@Validated @RequestBody AihumanInfo aihumanInfo) {
+ return R.ok(aihumanInfoService.update(aihumanInfo));
+ }
+
+ /**
+ * 删除AI人类交互信息
+ */
+ @DeleteMapping("/{ids}")
+ public R remove(@PathVariable Long[] ids) {
+ return R.ok(aihumanInfoService.deleteWithValidByIds(Arrays.asList(ids), true));
+ }
+
+ /**
+ * 测试接口
+ * 提供一个简单的GET接口用于快速验证控制器是否正常工作
+ */
+ @GetMapping("/test")
+ public R test() {
+ return R.ok("AI Human Controller is working!");
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/AihumanConfig.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/AihumanConfig.java
new file mode 100644
index 00000000..6b894806
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/AihumanConfig.java
@@ -0,0 +1,71 @@
+package org.ruoyi.aihuman.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * 交互数字人配置对象 aihuman_config
+ *
+ * @author ageerle
+ * @date Fri Sep 26 22:27:00 GMT+08:00 2025
+ */
+@Data
+@TableName("aihuman_config")
+public class AihumanConfig implements Serializable {
+
+
+ /**
+ * id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * name
+ */
+ private String name;
+
+ /**
+ * modelName
+ */
+ private String modelName;
+
+ /**
+ * modelPath
+ */
+ private String modelPath;
+
+ /**
+ * modelParams
+ */
+ private String modelParams;
+
+ /**
+ * agentParams
+ */
+ private String agentParams;
+
+ /**
+ * createTime
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * updateTime
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * status
+ */
+ private Integer status;
+
+ /**
+ * publish
+ */
+ private Integer publish;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/AihumanInfo.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/AihumanInfo.java
new file mode 100644
index 00000000..73be9174
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/AihumanInfo.java
@@ -0,0 +1,39 @@
+package org.ruoyi.aihuman.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * AI人类交互信息实体类
+ *
+ * @author QingYunAI
+ */
+@Data
+@TableName("aihuman_info")
+public class AihumanInfo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** 主键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代表删除) */
+ @TableLogic
+ private String delFlag;
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/bo/AihumanConfigBo.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/bo/AihumanConfigBo.java
new file mode 100644
index 00000000..5144b95b
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/bo/AihumanConfigBo.java
@@ -0,0 +1,70 @@
+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 lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+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
+ *
+ * @author ageerle
+ * @date Fri Sep 26 22:27:00 GMT+08:00 2025
+ */
+@Data
+
+@AutoMapper(target = AihumanConfig.class, reverseConvertGenerate = false)
+public class AihumanConfigBo implements Serializable {
+
+ private Integer id;
+
+ /**
+ * name
+ */
+ private String name;
+ /**
+ * modelName
+ */
+ private String modelName;
+ /**
+ * modelPath
+ */
+ private String modelPath;
+ /**
+ * modelParams
+ */
+ private String modelParams;
+ /**
+ * agentParams
+ */
+ private String agentParams;
+ /**
+ * createTime
+ */
+ private LocalDateTime createTime;
+ /**
+ * updateTime
+ */
+ private LocalDateTime updateTime;
+ /**
+ * status
+ */
+ @NotNull(message = "status不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer status;
+ /**
+ * publish
+ */
+ @NotNull(message = "publish不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer publish;
+
+}
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/bo/AihumanInfoBo.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/bo/AihumanInfoBo.java
new file mode 100644
index 00000000..074f165a
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/bo/AihumanInfoBo.java
@@ -0,0 +1,52 @@
+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 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
+ *
+ * @author ageerle
+ * @date Fri Sep 26 20:03:06 GMT+08:00 2025
+ */
+@Data
+
+@AutoMapper(target = AihumanInfo.class, reverseConvertGenerate = false)
+public class AihumanInfoBo implements Serializable {
+
+ private Long id;
+
+ /**
+ * 交互名称
+ */
+ private String name;
+ /**
+ * 交互内容
+ */
+ private String content;
+ /**
+ * 创建时间
+ */
+ private LocalDateTime createTime;
+ /**
+ * 更新时间
+ */
+ private LocalDateTime updateTime;
+ /**
+ * 删除标志(0代表存在 2代表删除)
+ */
+ private String delFlag;
+
+}
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/vo/AihumanConfigVo.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/vo/AihumanConfigVo.java
new file mode 100644
index 00000000..0a8eea8e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/vo/AihumanConfigVo.java
@@ -0,0 +1,76 @@
+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.common.excel.annotation.ExcelDictFormat;
+import org.ruoyi.common.excel.convert.ExcelDictConvert;
+
+import java.util.Date;
+
+
+/**
+ * 交互数字人配置视图对象 aihuman_config
+ *
+ * @author ageerle
+ * @date Fri Sep 26 22:27:00 GMT+08:00 2025
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = AihumanConfig.class)
+public class AihumanConfigVo implements Serializable {
+
+ private Integer id;
+ /**
+ * name
+ */
+ @ExcelProperty(value = "name")
+ private String name;
+ /**
+ * modelName
+ */
+ @ExcelProperty(value = "modelName")
+ private String modelName;
+ /**
+ * modelPath
+ */
+ @ExcelProperty(value = "modelPath")
+ private String modelPath;
+ /**
+ * modelParams
+ */
+ @ExcelProperty(value = "modelParams")
+ private String modelParams;
+ /**
+ * agentParams
+ */
+ @ExcelProperty(value = "agentParams")
+ private String agentParams;
+ /**
+ * createTime
+ */
+ @ExcelProperty(value = "createTime")
+ private LocalDateTime createTime;
+ /**
+ * updateTime
+ */
+ @ExcelProperty(value = "updateTime")
+ private LocalDateTime updateTime;
+ /**
+ * status
+ */
+ @ExcelProperty(value = "status", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_common_status")
+ private Integer status;
+ /**
+ * publish
+ */
+ @ExcelProperty(value = "publish", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "sys_common_status")
+ private Integer publish;
+
+}
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/vo/AihumanInfoVo.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/vo/AihumanInfoVo.java
new file mode 100644
index 00000000..e0868a5f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/domain/vo/AihumanInfoVo.java
@@ -0,0 +1,33 @@
+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;
+
+/**
+ * AI人类交互信息视图对象
+ *
+ * @author QingYunAI
+ */
+@Data
+@AutoMapper(target = AihumanInfo.class)
+public class AihumanInfoVo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long id;
+
+ /** 交互名称 */
+ private String name;
+
+ /** 交互内容 */
+ private String content;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/mapper/AihumanConfigMapper.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/mapper/AihumanConfigMapper.java
new file mode 100644
index 00000000..3dca6078
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/mapper/AihumanConfigMapper.java
@@ -0,0 +1,17 @@
+package org.ruoyi.aihuman.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接口
+ *
+ * @author ageerle
+ * @date Fri Sep 26 22:27:00 GMT+08:00 2025
+ */
+@Mapper
+public interface AihumanConfigMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/mapper/AihumanInfoMapper.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/mapper/AihumanInfoMapper.java
new file mode 100644
index 00000000..afb8b414
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/mapper/AihumanInfoMapper.java
@@ -0,0 +1,16 @@
+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;
+
+/**
+ * AI人类交互信息Mapper接口
+ *
+ * @author QingYunAI
+ */
+@Mapper
+public interface AihumanInfoMapper extends BaseMapperPlus {
+
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/AihumanConfigService.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/AihumanConfigService.java
new file mode 100644
index 00000000..3f155bc2
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/AihumanConfigService.java
@@ -0,0 +1,48 @@
+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 java.util.Collection;
+import java.util.List;
+
+/**
+ * 交互数字人配置Service接口
+ *
+ * @author ageerle
+ * @date Fri Sep 26 22:27:00 GMT+08:00 2025
+ */
+public interface AihumanConfigService {
+
+ /**
+ * 查询交互数字人配置
+ */
+ AihumanConfigVo queryById(Integer id);
+
+ /**
+ * 查询交互数字人配置列表
+ */
+ TableDataInfo queryPageList(AihumanConfigBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询交互数字人配置列表
+ */
+ List queryList(AihumanConfigBo bo);
+
+ /**
+ * 新增交互数字人配置
+ */
+ Boolean insertByBo(AihumanConfigBo bo);
+
+ /**
+ * 修改交互数字人配置
+ */
+ Boolean updateByBo(AihumanConfigBo bo);
+
+ /**
+ * 校验并批量删除交互数字人配置信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/IAihumanInfoService.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/IAihumanInfoService.java
new file mode 100644
index 00000000..f121ac4b
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/IAihumanInfoService.java
@@ -0,0 +1,47 @@
+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 java.util.Collection;
+import java.util.List;
+
+/**
+ * AI人类交互信息Service接口
+ *
+ * @author QingYunAI
+ */
+public interface IAihumanInfoService {
+
+ /**
+ * 查询AI人类交互信息
+ */
+ AihumanInfoVo queryById(Long id);
+
+ /**
+ * 查询AI人类交互信息列表
+ */
+ TableDataInfo queryPageList(AihumanInfo record, PageQuery pageQuery);
+
+ /**
+ * 查询AI人类交互信息列表
+ */
+ List queryList(AihumanInfo record);
+
+ /**
+ * 新增AI人类交互信息
+ */
+ int insert(AihumanInfo record);
+
+ /**
+ * 修改AI人类交互信息
+ */
+ int update(AihumanInfo record);
+
+ /**
+ * 批量删除AI人类交互信息
+ */
+ int deleteWithValidByIds(Collection ids, Boolean isValid);
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/impl/AihumanConfigServiceImpl.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/impl/AihumanConfigServiceImpl.java
new file mode 100644
index 00000000..48c1f629
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/impl/AihumanConfigServiceImpl.java
@@ -0,0 +1,116 @@
+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 lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+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.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 交互数字人配置Service业务层处理
+ *
+ * @author ageerle
+ * @date Fri Sep 26 22:27:00 GMT+08:00 2025
+ */
+@RequiredArgsConstructor
+@Service
+public class AihumanConfigServiceImpl implements AihumanConfigService {
+
+ private final AihumanConfigMapper baseMapper;
+
+ /**
+ * 查询交互数字人配置
+ */
+ @Override
+ public AihumanConfigVo queryById(Integer id) {
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询交互数字人配置列表
+ */
+ @Override
+ public TableDataInfo queryPageList(AihumanConfigBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询交互数字人配置列表
+ */
+ @Override
+ public List queryList(AihumanConfigBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(AihumanConfigBo bo) {
+ LambdaQueryWrapper 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());
+ return lqw;
+ }
+
+ /**
+ * 新增交互数字人配置
+ */
+ @Override
+ public Boolean insertByBo(AihumanConfigBo bo) {
+ AihumanConfig add = MapstructUtils.convert(bo, AihumanConfig. class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改交互数字人配置
+ */
+ @Override
+ public Boolean updateByBo(AihumanConfigBo bo) {
+ AihumanConfig update = MapstructUtils.convert(bo, AihumanConfig. class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(AihumanConfig entity) {
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除交互数字人配置
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if (isValid) {
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/impl/AihumanInfoServiceImpl.java b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/impl/AihumanInfoServiceImpl.java
new file mode 100644
index 00000000..cb354c71
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/service/impl/AihumanInfoServiceImpl.java
@@ -0,0 +1,96 @@
+package org.ruoyi.aihuman.service.impl;
+
+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 java.util.Collection;
+import java.util.List;
+
+/**
+ * AI人类交互信息Service业务层处理
+ *
+ * @author QingYunAI
+ */
+@RequiredArgsConstructor
+@Service
+public class AihumanInfoServiceImpl implements IAihumanInfoService {
+
+ private final AihumanInfoMapper baseMapper;
+
+ /**
+ * 查询AI人类交互信息
+ */
+ @Override
+ public AihumanInfoVo queryById(Long id) {
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询AI人类交互信息列表
+ */
+ @Override
+ public TableDataInfo queryPageList(AihumanInfo record, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(record);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询AI人类交互信息列表
+ */
+ @Override
+ public List queryList(AihumanInfo record) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(record);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ /**
+ * 构建查询条件
+ */
+ private LambdaQueryWrapper buildQueryWrapper(AihumanInfo record) {
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.eq(record.getId() != null, AihumanInfo::getId, record.getId());
+ lqw.like(StringUtils.isNotBlank(record.getName()), AihumanInfo::getName, record.getName());
+ lqw.like(StringUtils.isNotBlank(record.getContent()), AihumanInfo::getContent, record.getContent());
+ lqw.orderByDesc(AihumanInfo::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增AI人类交互信息
+ */
+ @Override
+ public int insert(AihumanInfo record) {
+ return baseMapper.insert(record);
+ }
+
+ /**
+ * 修改AI人类交互信息
+ */
+ @Override
+ public int update(AihumanInfo record) {
+ return baseMapper.updateById(record);
+ }
+
+ /**
+ * 批量删除AI人类交互信息
+ */
+ @Override
+ public int deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if (isValid) {
+ // 如果需要逻辑删除,MyBatis-Plus会自动处理
+ // 这里的@TableLogic注解已经在实体类中配置
+ }
+ return baseMapper.deleteBatchIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/sql/aihuman_config_menu.sql b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/sql/aihuman_config_menu.sql
new file mode 100644
index 00000000..55453518
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/sql/aihuman_config_menu.sql
@@ -0,0 +1,19 @@
+-- 菜单 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, '交互数字人配置菜单');
+
+-- 按钮 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(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(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, '');
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/sql/aihuman_info_menu.sql b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/sql/aihuman_info_menu.sql
new file mode 100644
index 00000000..a2a80efd
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/java/org/ruoyi/aihuman/sql/aihuman_info_menu.sql
@@ -0,0 +1,19 @@
+-- 菜单 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, '数字人信息管理菜单');
+
+-- 按钮 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(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(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, '');
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/resources/mapper/AihumanInfoMapper.xml b/ruoyi-modules/ruoyi-aihuman/src/main/resources/mapper/AihumanInfoMapper.xml
new file mode 100644
index 00000000..22bd47aa
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/resources/mapper/AihumanInfoMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-aihuman/src/main/resources/mapper/aihuman/AihumanConfigMapper.xml b/ruoyi-modules/ruoyi-aihuman/src/main/resources/mapper/aihuman/AihumanConfigMapper.xml
new file mode 100644
index 00000000..0cbe9dcb
--- /dev/null
+++ b/ruoyi-modules/ruoyi-aihuman/src/main/resources/mapper/aihuman/AihumanConfigMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+