diff --git a/README.md b/README.md index f8ce58b7..78ea6497 100644 --- a/README.md +++ b/README.md @@ -150,6 +150,13 @@ QQ技术交流群
技术讨论 + + +95e8b1b3baeadbd24650bfb974ca5a58
+微信技术交流群
+技术讨论 + + 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 @@ + + + + +