diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/convert/UserConvert.java b/blade-service/blade-system/src/main/java/org/springblade/system/convert/UserConvert.java index 6decb305..00b2e576 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/convert/UserConvert.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/convert/UserConvert.java @@ -88,6 +88,8 @@ public interface UserConvert { default User person2user(OAPersonResponse person, String defaultPassword) { User user = baseConvert(person); user.setAccount(resolveAccount(person)); + // OA 可能返回多号(如 133.../137...),只保留首个号码再入库加密 + user.setPhone(normalizeMobile(user.getPhone())); // 密码 user.setPassword(defaultPassword); // 性别 @@ -103,6 +105,23 @@ public interface UserConvert { return user; } + /** + * 规范化手机号:去空白,多号时取第一个 + */ + default String normalizeMobile(String mobile) { + if (StringUtils.isBlank(mobile)) { + return null; + } + String trimmed = mobile.trim(); + String[] parts = trimmed.split("[/|,;;,\\s]+"); + for (String part : parts) { + if (StringUtils.isNotBlank(part)) { + return part.trim(); + } + } + return null; + } + /** * 解析本系统登录账号:优先 OA loginid,其次工号,最后手机号 * diff --git a/doc/sql/bladex/bladex.mysql.all.create.sql b/doc/sql/bladex/bladex.mysql.all.create.sql index 741094ac..67ea9959 100644 --- a/doc/sql/bladex/bladex.mysql.all.create.sql +++ b/doc/sql/bladex/bladex.mysql.all.create.sql @@ -1261,7 +1261,7 @@ CREATE TABLE `blade_user` ( `real_name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '真名', `avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像', `email` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱', - `phone` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机', + `phone` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机', `birthday` datetime NULL DEFAULT NULL COMMENT '生日', `sex` int NULL DEFAULT NULL COMMENT '性别', `role_id` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色id', diff --git a/doc/sql/transport/blade_user_phone_expand_20261014.sql b/doc/sql/transport/blade_user_phone_expand_20261014.sql new file mode 100644 index 00000000..a0d376d0 --- /dev/null +++ b/doc/sql/transport/blade_user_phone_expand_20261014.sql @@ -0,0 +1,5 @@ +-- 用户手机号字段扩容:SM2 加密后 Hex 远超 varchar(45),避免 IAM/OA 同步插入失败 +-- 部署前先执行本脚本,再发布后端 + +ALTER TABLE `blade_user` + MODIFY COLUMN `phone` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机'; diff --git a/doc/sql/transport/transport.sql b/doc/sql/transport/transport.sql index db0b3b98..c2bc3826 100644 --- a/doc/sql/transport/transport.sql +++ b/doc/sql/transport/transport.sql @@ -5422,7 +5422,7 @@ CREATE TABLE `blade_user` ( `real_name` varchar(10) DEFAULT NULL COMMENT '真名', `avatar` varchar(500) DEFAULT NULL COMMENT '头像', `email` varchar(45) DEFAULT NULL COMMENT '邮箱', - `phone` varchar(45) DEFAULT NULL COMMENT '手机', + `phone` varchar(500) DEFAULT NULL COMMENT '手机', `birthday` datetime DEFAULT NULL COMMENT '生日', `sex` int(11) DEFAULT NULL COMMENT '性别', `role_id` varchar(1000) DEFAULT NULL COMMENT '角色id',