zhou zhou
13 小时以前 05148eeef860d33232874a640dbd67ba43ac5686
rsf-server/src/main/java/com/vincent/rsf/server/ai/service/impl/AiParamServiceImpl.java
@@ -4,15 +4,23 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.ai.config.AiDefaults;
import com.vincent.rsf.server.ai.dto.AiParamValidateResultDto;
import com.vincent.rsf.server.ai.entity.AiParam;
import com.vincent.rsf.server.ai.mapper.AiParamMapper;
import com.vincent.rsf.server.ai.service.AiParamService;
import com.vincent.rsf.server.system.enums.StatusType;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
@Service("aiParamService")
@RequiredArgsConstructor
public class AiParamServiceImpl extends ServiceImpl<AiParamMapper, AiParam> implements AiParamService {
    private final AiParamValidationSupport aiParamValidationSupport;
    @Override
    public AiParam getActiveParam(Long tenantId) {
@@ -35,6 +43,7 @@
        fillDefaults(aiParam);
        ensureBaseFields(aiParam);
        ensureSingleActive(tenantId, null, aiParam.getStatus());
        applyValidation(aiParam);
    }
    @Override
@@ -48,6 +57,15 @@
        aiParam.setTenantId(current.getTenantId());
        ensureBaseFields(aiParam);
        ensureSingleActive(tenantId, aiParam.getId(), aiParam.getStatus());
        applyValidation(aiParam);
    }
    @Override
    public AiParamValidateResultDto validateDraft(AiParam aiParam, Long tenantId) {
        ensureTenantId(tenantId);
        fillDefaults(aiParam);
        ensureBaseFields(aiParam);
        return aiParamValidationSupport.validate(aiParam);
    }
    private void ensureBaseFields(AiParam aiParam) {
@@ -118,8 +136,33 @@
        if (aiParam.getStreamingEnabled() == null) {
            aiParam.setStreamingEnabled(Boolean.TRUE);
        }
        if (!StringUtils.hasText(aiParam.getValidateStatus())) {
            aiParam.setValidateStatus(AiDefaults.PARAM_VALIDATE_NOT_TESTED);
        }
        if (aiParam.getStatus() == null) {
            aiParam.setStatus(StatusType.ENABLE.val);
        }
    }
    private void applyValidation(AiParam aiParam) {
        AiParamValidateResultDto validateResult = aiParamValidationSupport.validate(aiParam);
        aiParam.setValidateStatus(validateResult.getStatus());
        aiParam.setLastValidateMessage(validateResult.getMessage());
        aiParam.setLastValidateElapsedMs(validateResult.getElapsedMs());
        aiParam.setLastValidateTime(parseDate(validateResult.getValidatedAt()));
        if (!AiDefaults.PARAM_VALIDATE_VALID.equals(validateResult.getStatus())) {
            throw new CoolException(validateResult.getMessage());
        }
    }
    private Date parseDate(String dateTime) {
        if (!StringUtils.hasText(dateTime)) {
            return null;
        }
        try {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateTime);
        } catch (Exception e) {
            throw new CoolException("解析校验时间失败: " + e.getMessage());
        }
    }
}