From 0ff8e57c4e65b12acc3dc60f52afeea1660459cc Mon Sep 17 00:00:00 2001 From: weicw1996 Date: Fri, 23 Oct 2026 15:58:42 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E7=BB=91=E5=AE=9Aope?= =?UTF-8?q?nid=E4=BC=9A=E8=A6=86=E7=9B=96=E8=B4=A6=E5=8F=B7=E5=B7=B2?= =?UTF-8?q?=E6=9C=89=E5=8F=A6=E4=B8=80=E4=B8=AAopenid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/system/service/impl/MpUserServiceImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MpUserServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MpUserServiceImpl.java index a0a12bab..c1e77ca9 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MpUserServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MpUserServiceImpl.java @@ -319,6 +319,13 @@ public class MpUserServiceImpl extends BaseServiceImpl imp if (!tenantId.equals(user.getTenantId())) { throw new ServiceException("租户不匹配,无法绑定 openid"); } + // 目标账号已有另一个非空 openid 时不得覆盖:旧逻辑会静默顶掉上一个微信的绑定, + // 而一个微信换绑需要管理员确认,登录路径只放弃本次绑定(票 05) + if (Func.isNotBlank(user.getOpenid()) && !user.getOpenid().equals(openid)) { + log.warn("小程序用户已绑定其他 openid,跳过绑定:租户={} 账号={} 已有openid={} 本次openid={}", + tenantId, userId, user.getOpenid(), openid); + return false; + } MpUser byOpenId = getOne(Wrappers.lambdaQuery() .eq(MpUser::getTenantId, tenantId) .eq(MpUser::getOpenid, openid)