You've already forked DataMate
合并拉取请求 #74
* feat: Implement system parameter management with Redis integration
This commit is contained in:
@@ -38,5 +38,9 @@
|
||||
<artifactId>langchain4j-open-ai</artifactId>
|
||||
<version>1.8.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
package com.datamate.common.models.application;
|
||||
package com.datamate.common.setting.application;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.datamate.common.infrastructure.exception.BusinessAssert;
|
||||
import com.datamate.common.interfaces.PagedResponse;
|
||||
import com.datamate.common.models.domain.entity.ModelConfig;
|
||||
import com.datamate.common.models.domain.repository.ModelConfigRepository;
|
||||
import com.datamate.common.models.infrastructure.client.ModelClient;
|
||||
import com.datamate.common.models.infrastructure.exception.ModelsErrorCode;
|
||||
import com.datamate.common.models.interfaces.rest.dto.CreateModelRequest;
|
||||
import com.datamate.common.models.interfaces.rest.dto.QueryModelRequest;
|
||||
import dev.langchain4j.model.chat.ChatModel;
|
||||
import com.datamate.common.setting.domain.entity.ModelConfig;
|
||||
import com.datamate.common.setting.domain.repository.ModelConfigRepository;
|
||||
import com.datamate.common.setting.infrastructure.client.ModelClient;
|
||||
import com.datamate.common.setting.infrastructure.exception.ModelsErrorCode;
|
||||
import com.datamate.common.setting.interfaces.rest.dto.CreateModelRequest;
|
||||
import com.datamate.common.setting.interfaces.rest.dto.QueryModelRequest;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -33,7 +32,7 @@ public class ModelConfigApplicationService {
|
||||
providers.add(ModelConfig.builder().provider("ModelEngine").baseUrl("http://localhost:9981").build());
|
||||
providers.add(ModelConfig.builder().provider("Ollama").baseUrl("http://localhost:11434").build());
|
||||
providers.add(ModelConfig.builder().provider("OpenAI").baseUrl("https://api.openai.com/v1").build());
|
||||
providers.add(ModelConfig.builder().provider("DeepSeek").baseUrl("https://api.deepseek.cn/v1").build());
|
||||
providers.add(ModelConfig.builder().provider("DeepSeek").baseUrl("https://api.deepseek.com/v1").build());
|
||||
providers.add(ModelConfig.builder().provider("火山方舟").baseUrl("https://ark.cn-beijing.volces.com/api/v3").build());
|
||||
providers.add(ModelConfig.builder().provider("阿里云百炼").baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1").build());
|
||||
providers.add(ModelConfig.builder().provider("硅基流动").baseUrl("https://api.siliconflow.cn/v1").build());
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.datamate.common.setting.application;
|
||||
|
||||
import com.datamate.common.infrastructure.exception.BusinessAssert;
|
||||
import com.datamate.common.infrastructure.exception.SystemErrorCode;
|
||||
import com.datamate.common.setting.domain.entity.SysParam;
|
||||
import com.datamate.common.setting.domain.repository.SysParamRepository;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 系统参数应用服务
|
||||
*
|
||||
* @author dallas
|
||||
* @since 2025-11-04
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysParamApplicationService {
|
||||
private final SysParamRepository sysParamRepository;
|
||||
private final StringRedisTemplate redisTemplate;
|
||||
|
||||
/**
|
||||
* 列表查询系统参数
|
||||
*
|
||||
* @return 系统参数列表
|
||||
*/
|
||||
public List<SysParam> list() {
|
||||
return sysParamRepository.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据参数id修改系统参数值
|
||||
*
|
||||
* @param paramId 参数id
|
||||
* @param paramValue 参数值
|
||||
*/
|
||||
public void updateParamValueById(String paramId, String paramValue) {
|
||||
SysParam sysParam = sysParamRepository.getById(paramId);
|
||||
BusinessAssert.notNull(sysParam, SystemErrorCode.RESOURCE_NOT_FOUND);
|
||||
sysParam.setParamValue(paramValue);
|
||||
sysParamRepository.updateById(sysParam);
|
||||
redisTemplate.opsForValue().set(sysParam.getParamKey(), paramValue);
|
||||
}
|
||||
|
||||
public void deleteParamById(String paramId) {
|
||||
SysParam sysParam = sysParamRepository.getById(paramId);
|
||||
BusinessAssert.notNull(sysParam, SystemErrorCode.RESOURCE_NOT_FOUND);
|
||||
sysParamRepository.removeById(paramId);
|
||||
redisTemplate.delete(sysParam.getParamKey());
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化系统参数到Redis
|
||||
*/
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
try {
|
||||
List<SysParam> sysParams = sysParamRepository.list();
|
||||
sysParams.forEach(sysParam -> redisTemplate.opsForValue().set(sysParam.getParamKey(), sysParam.getParamValue()));
|
||||
} catch (Exception e) {
|
||||
log.error("Init sys params to redis error", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.datamate.common.models.domain.entity;
|
||||
package com.datamate.common.setting.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.datamate.common.domain.model.base.BaseEntity;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.datamate.common.models.domain.entity;
|
||||
package com.datamate.common.setting.domain.entity;
|
||||
|
||||
/**
|
||||
* 模型类型枚举类
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.datamate.common.setting.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.datamate.common.domain.model.base.BaseEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 系统参数设置实体类
|
||||
*
|
||||
* @author dallas
|
||||
* @since 2025-10-27
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@TableName("t_sys_param")
|
||||
public class SysParam extends BaseEntity<String> {
|
||||
/**
|
||||
* 设置项键(唯一)
|
||||
*/
|
||||
private String paramKey;
|
||||
|
||||
/**
|
||||
* 设置项值
|
||||
*/
|
||||
private String paramValue;
|
||||
|
||||
/**
|
||||
* 设置项类型(如 string、integer、boolean)
|
||||
*/
|
||||
private String paramType;
|
||||
|
||||
/**
|
||||
* 选项列表(JSON格式,仅对enum类型有效)
|
||||
*/
|
||||
private String optionList;
|
||||
|
||||
/**
|
||||
* 设置项描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 是否内置:1-是,0-否
|
||||
*/
|
||||
private Boolean isBuiltIn;
|
||||
|
||||
/**
|
||||
* 是否可修改:1-可修改,0-不可修改
|
||||
*/
|
||||
private Boolean canModify;
|
||||
|
||||
/**
|
||||
* 是否启用:1-启用,0-禁用
|
||||
*/
|
||||
private Boolean isEnabled;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.datamate.common.models.domain.repository;
|
||||
package com.datamate.common.setting.domain.repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.repository.IRepository;
|
||||
import com.datamate.common.models.domain.entity.ModelConfig;
|
||||
import com.datamate.common.models.interfaces.rest.dto.QueryModelRequest;
|
||||
import com.datamate.common.setting.domain.entity.ModelConfig;
|
||||
import com.datamate.common.setting.interfaces.rest.dto.QueryModelRequest;
|
||||
|
||||
/**
|
||||
* 模型配置仓库接口
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.datamate.common.setting.domain.repository;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.repository.IRepository;
|
||||
import com.datamate.common.setting.domain.entity.SysParam;
|
||||
|
||||
/**
|
||||
* 系统参数仓库接口
|
||||
*
|
||||
* @author dallas
|
||||
* @since 2025-11-04
|
||||
*/
|
||||
public interface SysParamRepository extends IRepository<SysParam> {
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.datamate.common.models.infrastructure.client;
|
||||
package com.datamate.common.setting.infrastructure.client;
|
||||
|
||||
import com.datamate.common.infrastructure.exception.BusinessException;
|
||||
import com.datamate.common.models.domain.entity.ModelConfig;
|
||||
import com.datamate.common.models.infrastructure.exception.ModelsErrorCode;
|
||||
import com.datamate.common.setting.domain.entity.ModelConfig;
|
||||
import com.datamate.common.setting.infrastructure.exception.ModelsErrorCode;
|
||||
import dev.langchain4j.model.chat.ChatModel;
|
||||
import dev.langchain4j.model.embedding.EmbeddingModel;
|
||||
import dev.langchain4j.model.openai.OpenAiChatModel;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.datamate.common.models.infrastructure.exception;
|
||||
package com.datamate.common.setting.infrastructure.exception;
|
||||
|
||||
import com.datamate.common.infrastructure.exception.ErrorCode;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.datamate.common.models.infrastructure.persistence.impl;
|
||||
package com.datamate.common.setting.infrastructure.persistence.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.repository.CrudRepository;
|
||||
import com.datamate.common.models.domain.entity.ModelConfig;
|
||||
import com.datamate.common.models.domain.repository.ModelConfigRepository;
|
||||
import com.datamate.common.models.infrastructure.persistence.mapper.ModelConfigMapper;
|
||||
import com.datamate.common.models.interfaces.rest.dto.QueryModelRequest;
|
||||
import com.datamate.common.setting.domain.entity.ModelConfig;
|
||||
import com.datamate.common.setting.domain.repository.ModelConfigRepository;
|
||||
import com.datamate.common.setting.infrastructure.persistence.mapper.ModelConfigMapper;
|
||||
import com.datamate.common.setting.interfaces.rest.dto.QueryModelRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.util.StringUtils;
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.datamate.common.setting.infrastructure.persistence.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.repository.CrudRepository;
|
||||
import com.datamate.common.setting.domain.entity.SysParam;
|
||||
import com.datamate.common.setting.domain.repository.SysParamRepository;
|
||||
import com.datamate.common.setting.infrastructure.persistence.mapper.SysParamMapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* 系统参数仓储实现类
|
||||
*
|
||||
* @author dallas
|
||||
* @since 2025-11-04
|
||||
*/
|
||||
@Repository
|
||||
public class SysParamRepositoryImpl extends CrudRepository<SysParamMapper, SysParam> implements SysParamRepository {
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.datamate.common.models.infrastructure.persistence.mapper;
|
||||
package com.datamate.common.setting.infrastructure.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.datamate.common.models.domain.entity.ModelConfig;
|
||||
import com.datamate.common.setting.domain.entity.ModelConfig;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.datamate.common.setting.infrastructure.persistence.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.datamate.common.setting.domain.entity.SysParam;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 系统参数映射器
|
||||
*
|
||||
* @author dallas
|
||||
* @since 2025-11-04
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysParamMapper extends BaseMapper<SysParam> {
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.datamate.common.models.interfaces.rest;
|
||||
package com.datamate.common.setting.interfaces.rest;
|
||||
|
||||
|
||||
import com.datamate.common.interfaces.PagedResponse;
|
||||
import com.datamate.common.models.application.ModelConfigApplicationService;
|
||||
import com.datamate.common.models.domain.entity.ModelConfig;
|
||||
import com.datamate.common.models.interfaces.rest.dto.CreateModelRequest;
|
||||
import com.datamate.common.models.interfaces.rest.dto.QueryModelRequest;
|
||||
import com.datamate.common.setting.application.ModelConfigApplicationService;
|
||||
import com.datamate.common.setting.domain.entity.ModelConfig;
|
||||
import com.datamate.common.setting.interfaces.rest.dto.CreateModelRequest;
|
||||
import com.datamate.common.setting.interfaces.rest.dto.QueryModelRequest;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.datamate.common.setting.interfaces.rest;
|
||||
|
||||
import com.datamate.common.setting.application.SysParamApplicationService;
|
||||
import com.datamate.common.setting.domain.entity.SysParam;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 系统参数控制器
|
||||
*
|
||||
* @author dallas
|
||||
* @since 2025-11-04
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sys-param")
|
||||
@RequiredArgsConstructor
|
||||
public class SysParamController {
|
||||
private final SysParamApplicationService sysParamApplicationService;
|
||||
|
||||
/**
|
||||
* 获取系统参数列表
|
||||
*
|
||||
* @return 系统参数列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public List<SysParam> list() {
|
||||
return sysParamApplicationService.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据参数id修改系统参数值
|
||||
*
|
||||
* @param paramId 参数id
|
||||
* @param paramValue 参数值
|
||||
*/
|
||||
@PutMapping("/{paramId}")
|
||||
public void updateParamValueById(@PathVariable("paramId") String paramId, @RequestBody String paramValue) {
|
||||
sysParamApplicationService.updateParamValueById(paramId, paramValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据参数id删除系统参数
|
||||
*
|
||||
* @param paramId 参数id
|
||||
*/
|
||||
@DeleteMapping("/{paramId}")
|
||||
public void deleteParamById(@PathVariable("paramId") String paramId) {
|
||||
sysParamApplicationService.deleteParamById(paramId);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.datamate.common.models.interfaces.rest.dto;
|
||||
package com.datamate.common.setting.interfaces.rest.dto;
|
||||
|
||||
import com.datamate.common.models.domain.entity.ModelType;
|
||||
import com.datamate.common.setting.domain.entity.ModelType;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Getter;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.datamate.common.models.interfaces.rest.dto;
|
||||
package com.datamate.common.setting.interfaces.rest.dto;
|
||||
|
||||
import com.datamate.common.interfaces.PagingQuery;
|
||||
import com.datamate.common.models.domain.entity.ModelType;
|
||||
import com.datamate.common.setting.domain.entity.ModelType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
Reference in New Issue
Block a user