🐛 修复绑定openid会覆盖账号已有另一个openid

This commit is contained in:
2026-10-23 15:58:42 +08:00
parent 924134226f
commit 0ff8e57c4e
@@ -319,6 +319,13 @@ public class MpUserServiceImpl extends BaseServiceImpl<MpUserMapper, MpUser> 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.<MpUser>lambdaQuery()
.eq(MpUser::getTenantId, tenantId)
.eq(MpUser::getOpenid, openid)