🐛 扩容用户手机号字段并规范化 OA 多号码同步

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-14 15:15:53 +08:00
parent dee392eb48
commit b791401620
4 changed files with 26 additions and 2 deletions
@@ -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,其次工号,最后手机号
*
+1 -1
View File
@@ -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',
@@ -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 '手机';
+1 -1
View File
@@ -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',