Commit a110ec2de3ec4e76c7cf45fd9670620500d15f2b

Authored by 芋道源码
Committed by Gitee
2 parents fc9fe221 b84db7c1

!1486 perf: 优化数据库兼容性

Merge pull request !1486 from 半栈幼儿员/hotfix/db
yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java
@@ -136,7 +136,7 @@ public class DeptDataPermissionRule implements DataPermissionRule { @@ -136,7 +136,7 @@ public class DeptDataPermissionRule implements DataPermissionRule {
136 JsonUtils.toJsonString(loginUser), tableName, tableAlias, JsonUtils.toJsonString(deptDataPermission)); 136 JsonUtils.toJsonString(loginUser), tableName, tableAlias, JsonUtils.toJsonString(deptDataPermission));
137 // throw new NullPointerException(String.format("LoginUser(%d) Table(%s/%s) 构建的条件为空", 137 // throw new NullPointerException(String.format("LoginUser(%d) Table(%s/%s) 构建的条件为空",
138 // loginUser.getId(), tableName, tableAlias.getName())); 138 // loginUser.getId(), tableName, tableAlias.getName()));
139 - return EXPRESSION_NULL; 139 + return new EqualsTo(null, null); // WHERE null = null,可以保证返回的数据为空
140 } 140 }
141 if (deptExpression == null) { 141 if (deptExpression == null) {
142 return userExpression; 142 return userExpression;
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/chat/AiChatMessageDO.java
@@ -27,7 +27,7 @@ import java.util.List; @@ -27,7 +27,7 @@ import java.util.List;
27 * @since 2024/4/14 17:35 27 * @since 2024/4/14 17:35
28 */ 28 */
29 @TableName(value = "ai_chat_message", autoResultMap = true) 29 @TableName(value = "ai_chat_message", autoResultMap = true)
30 -@KeySequence("ai_chat_conversation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 30 +@KeySequence("ai_chat_message_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
31 @Data 31 @Data
32 @Builder 32 @Builder
33 @NoArgsConstructor 33 @NoArgsConstructor
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiApiKeyDO.java
@@ -14,7 +14,7 @@ import lombok.*; @@ -14,7 +14,7 @@ import lombok.*;
14 * @author 芋道源码 14 * @author 芋道源码
15 */ 15 */
16 @TableName("ai_api_key") 16 @TableName("ai_api_key")
17 -@KeySequence("ai_chat_conversation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 17 +@KeySequence("ai_api_key_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
18 @Data 18 @Data
19 @Builder 19 @Builder
20 @NoArgsConstructor 20 @NoArgsConstructor
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeSegmentMapper.java
@@ -51,8 +51,7 @@ public interface AiKnowledgeSegmentMapper extends BaseMapperX<AiKnowledgeSegment @@ -51,8 +51,7 @@ public interface AiKnowledgeSegmentMapper extends BaseMapperX<AiKnowledgeSegment
51 MPJLambdaWrapper<AiKnowledgeSegmentDO> wrapper = new MPJLambdaWrapperX<AiKnowledgeSegmentDO>() 51 MPJLambdaWrapper<AiKnowledgeSegmentDO> wrapper = new MPJLambdaWrapperX<AiKnowledgeSegmentDO>()
52 .selectAs(AiKnowledgeSegmentDO::getDocumentId, AiKnowledgeSegmentProcessRespVO::getDocumentId) 52 .selectAs(AiKnowledgeSegmentDO::getDocumentId, AiKnowledgeSegmentProcessRespVO::getDocumentId)
53 .selectCount(AiKnowledgeSegmentDO::getId, "count") 53 .selectCount(AiKnowledgeSegmentDO::getId, "count")
54 - .select("COUNT(CASE WHEN vector_id > '" + AiKnowledgeSegmentDO.VECTOR_ID_EMPTY  
55 - + "' THEN 1 ELSE NULL END) AS embeddingCount") 54 + .select("COUNT(CASE WHEN vector_id IS NOT NULL AND vector_id <> '" + AiKnowledgeSegmentDO.VECTOR_ID_EMPTY + "' THEN 1 ELSE NULL END) AS embeddingCount")
56 .in(AiKnowledgeSegmentDO::getDocumentId, documentIds) 55 .in(AiKnowledgeSegmentDO::getDocumentId, documentIds)
57 .groupBy(AiKnowledgeSegmentDO::getDocumentId); 56 .groupBy(AiKnowledgeSegmentDO::getDocumentId);
58 return selectJoinList(AiKnowledgeSegmentProcessRespVO.class, wrapper); 57 return selectJoinList(AiKnowledgeSegmentProcessRespVO.class, wrapper);
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileCreateReqVO.java
@@ -28,6 +28,6 @@ public class FileCreateReqVO { @@ -28,6 +28,6 @@ public class FileCreateReqVO {
28 private String type; 28 private String type;
29 29
30 @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED) 30 @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED)
31 - private Integer size; 31 + private Long size;
32 32
33 } 33 }
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileRespVO.java
@@ -28,7 +28,7 @@ public class FileRespVO { @@ -28,7 +28,7 @@ public class FileRespVO {
28 private String type; 28 private String type;
29 29
30 @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED) 30 @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED)
31 - private Integer size; 31 + private Long size;
32 32
33 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 33 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
34 private LocalDateTime createTime; 34 private LocalDateTime createTime;
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileDO.java
@@ -52,6 +52,6 @@ public class FileDO extends BaseDO { @@ -52,6 +52,6 @@ public class FileDO extends BaseDO {
52 /** 52 /**
53 * 文件大小 53 * 文件大小
54 */ 54 */
55 - private Integer size; 55 + private Long size;
56 56
57 } 57 }
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/db/DatabaseTableServiceImpl.java
@@ -59,9 +59,9 @@ public class DatabaseTableServiceImpl implements DatabaseTableService { @@ -59,9 +59,9 @@ public class DatabaseTableServiceImpl implements DatabaseTableService {
59 strategyConfig.addInclude(name); 59 strategyConfig.addInclude(name);
60 } else { 60 } else {
61 // 移除工作流和定时任务前缀的表名 61 // 移除工作流和定时任务前缀的表名
62 - strategyConfig.addExclude("ACT_[\\S\\s]+|QRTZ_[\\S\\s]+|FLW_[\\S\\s]+"); 62 + strategyConfig.addExclude("ACT_[\\S\\s]+|QRTZ_[\\S\\s]+|FLW_[\\S\\s]+|act_[\\S\\s]+|qrtz_[\\S\\s]+|flw_[\\S\\s]+");
63 // 移除 ORACLE 相关的系统表 63 // 移除 ORACLE 相关的系统表
64 - strategyConfig.addExclude("IMPDP_[\\S\\s]+|ALL_[\\S\\s]+|HS_[\\S\\\s]+"); 64 + strategyConfig.addExclude("IMPDP_[\\S\\s]+|ALL_[\\S\\s]+|HS_[\\S\\s]+|impdp_[\\S\\s]+|all_[\\S\\s]+|hs_[\\S\s]+");
65 strategyConfig.addExclude("[\\S\\s]+\\$[\\S\\s]+|[\\S\\s]+\\$"); // 表里不能有 $,一般有都是系统的表 65 strategyConfig.addExclude("[\\S\\s]+\\$[\\S\\s]+|[\\S\\s]+\\$"); // 表里不能有 $,一般有都是系统的表
66 } 66 }
67 67
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java
@@ -88,7 +88,7 @@ public class FileServiceImpl implements FileService { @@ -88,7 +88,7 @@ public class FileServiceImpl implements FileService {
88 // 3. 保存到数据库 88 // 3. 保存到数据库
89 fileMapper.insert(new FileDO().setConfigId(client.getId()) 89 fileMapper.insert(new FileDO().setConfigId(client.getId())
90 .setName(name).setPath(path).setUrl(url) 90 .setName(name).setPath(path).setUrl(url)
91 - .setType(type).setSize(content.length)); 91 + .setType(type).setSize((long) content.length));
92 return url; 92 return url;
93 } 93 }
94 94