Merge remote-tracking branch 'origin/main'

# Conflicts:
#	ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/DifyServiceImpl.java
#	ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/generator/impl/GenTableServiceImpl.java
This commit is contained in:
Administrator
2025-08-27 10:49:37 +08:00
5 changed files with 56 additions and 16 deletions

View File

@@ -25,8 +25,10 @@ import org.ruoyi.service.IChatSessionService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import org.ruoyi.chat.support.ChatServiceHelper;
import java.util.Objects; import java.util.Objects;
import org.ruoyi.chat.support.RetryNotifier;
/** /**
* dify 聊天管理 * dify 聊天管理
@@ -111,23 +113,25 @@ public class DifyServiceImpl implements IChatService {
chatRequestResponse.setUserId(chatRequest.getUserId()); chatRequestResponse.setUserId(chatRequest.getUserId());
chatRequestResponse.setSessionId(chatRequest.getSessionId()); chatRequestResponse.setSessionId(chatRequest.getSessionId());
chatRequestResponse.setPrompt(respMessage.toString()); chatRequestResponse.setPrompt(respMessage.toString());
// 先保存助手消息,再发布异步计费事件 chatCostService.deductToken(chatRequestResponse);
chatCostService.saveMessage(chatRequestResponse); RetryNotifier.clear(emitter);
chatCostService.publishBillingEvent(chatRequestResponse);
} }
@Override @Override
public void onError(ErrorEvent event) { public void onError(ErrorEvent event) {
System.err.println("错误: " + event.getMessage()); System.err.println("错误: " + event.getMessage());
ChatServiceHelper.onStreamError(emitter, event.getMessage());
} }
@Override @Override
public void onException(Throwable throwable) { public void onException(Throwable throwable) {
System.err.println("异常: " + throwable.getMessage()); System.err.println("异常: " + throwable.getMessage());
ChatServiceHelper.onStreamError(emitter, throwable.getMessage());
} }
}); });
} catch (Exception e) { } catch (Exception e) {
log.error("dify请求失败{}", e.getMessage()); log.error("dify请求失败{}", e.getMessage());
ChatServiceHelper.onStreamError(emitter, e.getMessage());
} }
return emitter; return emitter;

View File

@@ -43,6 +43,11 @@ public class SchemaVo implements Serializable {
* 表名 * 表名
*/ */
private String tableName; private String tableName;
/**
* 字典
*/
private String dictType;
/** /**
* 表注释 * 表注释

View File

@@ -21,18 +21,9 @@ import org.ruoyi.generator.util.VelocityInitializer;
import org.ruoyi.generator.util.VelocityUtils; import org.ruoyi.generator.util.VelocityUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.File; import java.io.*;
import java.io.FileWriter;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
/** /**
* 业务 服务层实现 * 业务 服务层实现
@@ -62,6 +53,41 @@ public class GenTableServiceImpl implements IGenTableService {
} }
} }
@Override
public void generateFrontendTemplateFiles(String workPath, String previewCode) {
String os = System.getProperty("os.name").toLowerCase();
ProcessBuilder builder;
if (os.contains("win")) {
// Windows下用 cmd /c 执行 previewCode
builder = new ProcessBuilder("cmd.exe", "/c", previewCode);
} else {
// macOS/Linux 用 bash -c 执行 previewCode
builder = new ProcessBuilder("bash", "-c", previewCode);
}
// 设置工作目录
builder.directory(new File(workPath));
builder.redirectErrorStream(true);
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(
builder.start().getInputStream(),
StandardCharsets.UTF_8
)
)) {
String line;
log.info("执行结果:");
while ((line = reader.readLine()) != null) {
log.info(line);
}
} catch (Exception e) {
log.error("生成前端代码出错", e);
throw new RuntimeException("生成前端代码失败", e);
}
}
/** /**
* 根据表名称生成代码到classpath * 根据表名称生成代码到classpath
*/ */
@@ -223,7 +249,7 @@ public class GenTableServiceImpl implements IGenTableService {
column.put("javaField", javaField); column.put("javaField", javaField);
column.put("capJavaField", toCamelCase(field.getCode(), true)); column.put("capJavaField", toCamelCase(field.getCode(), true));
// 布尔值属性(兼容两种格式) // 布尔值dictType属性(兼容两种格式)
boolean isPk = "1".equals(field.getIsPk()); boolean isPk = "1".equals(field.getIsPk());
boolean isRequired = "1".equals(field.getIsRequired()); boolean isRequired = "1".equals(field.getIsRequired());
boolean isInsert = "1".equals(field.getIsInsert()); boolean isInsert = "1".equals(field.getIsInsert());

View File

@@ -207,6 +207,7 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
result.put("schemaGroupCode", schemaGroupVo.getCode()); result.put("schemaGroupCode", schemaGroupVo.getCode());
result.put("tableName", schema.getTableName()); result.put("tableName", schema.getTableName());
result.put("dictType",schema.getDictType());
result.put("tableComment", schema.getComment()); result.put("tableComment", schema.getComment());
result.put("className", toCamelCase(schema.getTableName(), true)); result.put("className", toCamelCase(schema.getTableName(), true));
result.put("tableCamelName", StrUtil.toCamelCase(schema.getTableName())); result.put("tableCamelName", StrUtil.toCamelCase(schema.getTableName()));
@@ -222,6 +223,8 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
if (pkField != null) { if (pkField != null) {
Map<String, Object> pkColumn = new HashMap<>(); Map<String, Object> pkColumn = new HashMap<>();
pkColumn.put("columnName", pkField.getCode()); pkColumn.put("columnName", pkField.getCode());
pkColumn.put("dictType", pkField.getDictType());
pkColumn.put("columnComment", pkField.getName()); pkColumn.put("columnComment", pkField.getName());
pkColumn.put("javaField", StrUtil.toCamelCase(pkField.getCode())); pkColumn.put("javaField", StrUtil.toCamelCase(pkField.getCode()));
pkColumn.put("javaType", getJavaType(pkField.getType())); pkColumn.put("javaType", getJavaType(pkField.getType()));
@@ -233,6 +236,7 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
for (SchemaFieldVo field : fields) { for (SchemaFieldVo field : fields) {
Map<String, Object> column = new HashMap<>(); Map<String, Object> column = new HashMap<>();
column.put("columnName", field.getCode()); column.put("columnName", field.getCode());
column.put("dictType", field.getDictType());
column.put("columnComment", field.getName()); column.put("columnComment", field.getName());
column.put("javaField", StrUtil.toCamelCase(field.getCode())); column.put("javaField", StrUtil.toCamelCase(field.getCode()));
column.put("javaType", getJavaType(field.getType())); column.put("javaType", getJavaType(field.getType()));
@@ -279,6 +283,7 @@ public class SchemaFieldServiceImpl implements SchemaFieldService {
field.setDefaultValue((String) columnInfo.get("columnDefault")); field.setDefaultValue((String) columnInfo.get("columnDefault"));
field.setComment((String) columnInfo.get("columnComment")); field.setComment((String) columnInfo.get("columnComment"));
field.setName((String) columnInfo.get("columnComment")); field.setName((String) columnInfo.get("columnComment"));
field.setDictType(StrUtil.toCamelCase((String) columnInfo.get("dictType")));
field.setCode(StrUtil.toCamelCase((String) columnInfo.get("columnName"))); field.setCode(StrUtil.toCamelCase((String) columnInfo.get("columnName")));
field.setType((String) columnInfo.get("dataType")); field.setType((String) columnInfo.get("dataType"));
field.setLength(Integer.valueOf(String.valueOf(columnInfo.get("columnSize")))); field.setLength(Integer.valueOf(String.valueOf(columnInfo.get("columnSize"))));

View File

@@ -29,7 +29,7 @@ public class ${ClassName} implements Serializable {
@Version @Version
#end #end
#if($column.isPk==1) #if($column.isPk==1)
@TableId(value = "$column.columnName") @TableId(value = "${column.columnName}", type = IdType.AUTO)
#end #end
private $column.javaType $column.javaField; private $column.javaType $column.javaField;