diff --git a/backend/api-gateway/src/main/java/com/deepdata/gateway/infrastructure/casdoor/CasdoorUserService.java b/backend/api-gateway/src/main/java/com/deepdata/gateway/infrastructure/casdoor/CasdoorUserService.java index f0fb29d..7a5fae4 100644 --- a/backend/api-gateway/src/main/java/com/deepdata/gateway/infrastructure/casdoor/CasdoorUserService.java +++ b/backend/api-gateway/src/main/java/com/deepdata/gateway/infrastructure/casdoor/CasdoorUserService.java @@ -116,9 +116,9 @@ public class CasdoorUserService { private User createUser(IdTokenClaims claims, String username, LocalDateTime now) { User user = new User(); user.setUsername(username); - // email 列有唯一约束:空串会互相冲突,空值统一落 NULL(NULL 不参与唯一约束) + // email 列 NOT NULL UNIQUE:空串会互相冲突,缺省按用户名合成占位 email String email = claims.email(); - user.setEmail(email == null || email.isBlank() ? null : email.trim()); + user.setEmail(email == null || email.isBlank() ? username + "@casdoor.local" : email.trim()); user.setFullName(claims.name()); // 本地密码不可用:随机占位(登录统一走 Casdoor,本地 BCrypt 仅迁移期兜底) user.setPasswordHash(new BCryptPasswordEncoder(10).encode(UUID.randomUUID().toString()));