diff --git a/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java index ec18175..e3b474e 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java @@ -134,11 +134,23 @@ public class WxLoginController extends BaseController { if (openid == null) { return fail("获取openid失败", null); } + // 关键:把 openid/unionid 设置到 userParam,否则后续查库/注册都拿不到 openid + userParam.setOpenid(openid); + if (StrUtil.isNotBlank(unionid)) { + userParam.setUnionid(unionid); + } // 2.通过openid查询用户是否已存在 User user = userService.getByOauthId(userParam); // 3.存在则签发token并返回登录成功,不存在则注册新用户 if (user == null) { user = addUser(userParam); + } else if (StrUtil.isBlank(user.getOpenid())) { + // 老用户(比如手机号注册)没有 openid,补上 + user.setOpenid(openid); + if (StrUtil.isNotBlank(unionid)) { + user.setUnionid(unionid); + } + userService.updateById(user); } // 4.签发token loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_LOGIN, null, user.getTenantId(), request); diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java index ba23291..aafb255 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java @@ -108,9 +108,10 @@ public class TenantServiceImpl extends ServiceImpl impleme superAdmin.setUsername("superAdmin"); superAdmin.setNickname(company.getShortName()); superAdmin.setPhone(company.getPhone()); + superAdmin.setIsSuperAdmin(true); + superAdmin.setIsAdmin(true); superAdmin.setEmail(company.getEmail()); superAdmin.setTemplateId(company.getTemplateId()); - superAdmin.setIsAdmin(true); superAdmin.setRealName(company.getBusinessEntity()); superAdmin.setPassword(userService.encodePassword("$2a$10$iMsEmh.rPlzwy/SVe6KW3.62vlwqMJpibhCF9jYN.fMqxdqymzMzu")); if (company.getPassword() != null) {