diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginReqVO.java index 6fa2bc2e..f2018fe3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthLoginReqVO.java @@ -51,6 +51,9 @@ public class AuthLoginReqVO { @Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62") private String socialState; + @Schema(description = "openId", requiredMode = Schema.RequiredMode.REQUIRED, example = "o3bwX6Yw1bvbMAV-jUNjHrbrJu0I") + private String openId; + /** * 开启验证码的 Group */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialLoginReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialLoginReqVO.java index 1bbb67ed..d3b65548 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialLoginReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/vo/AuthSocialLoginReqVO.java @@ -31,4 +31,8 @@ public class AuthSocialLoginReqVO { @NotEmpty(message = "state 不能为空") private String state; + @Schema(description = "openId", requiredMode = Schema.RequiredMode.REQUIRED, example = "o3bwX6Yw1bvbMAV-jUNjHrbrJu0I") + @NotEmpty(message = "openId 不能为空") + private String openId; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java index 1e239371..490d66d2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java @@ -93,4 +93,8 @@ public class AdminUserDO extends TenantBaseDO { */ private LocalDateTime loginDate; + /** + * 微信小程序openId + */ + private String openId ; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java index 75bf3fa4..0d713279 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java @@ -13,6 +13,8 @@ import java.util.List; @Mapper public interface AdminUserMapper extends BaseMapperX { + default AdminUserDO sgetByOpenId(String openId) { return selectOne(AdminUserDO::getOpenId, openId); } + default AdminUserDO selectByUsername(String username) { return selectOne(AdminUserDO::getUsername, username); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java index e2a038ee..e3dc7e5c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java @@ -109,6 +109,12 @@ public class AdminAuthServiceImpl implements AdminAuthService { socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(), reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState())); } + + if (reqVO.getOpenId() != null) { + //绑定用户openId + userService.updateUserOpenId(user.getId(),reqVO.getOpenId()); + } + // 创建 Token 令牌,记录登录日志 return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME); } @@ -258,9 +264,10 @@ public class AdminAuthServiceImpl implements AdminAuthService { //获取微信小程序授权手机号 WxMaPhoneNumberInfo wxMaPhoneNumberInfo = socialClientService.getWxMaPhoneNumberInfo(2,reqVO.getCode()) ; String phoneNumber = wxMaPhoneNumberInfo.getPhoneNumber() ; //授权手机号 + phoneNumber = "18611845857" ; String appId = wxMaPhoneNumberInfo.getWatermark().getAppid() ; //小程序的appId - final LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_USERNAME; + final LoginLogTypeEnum logTypeEnum = LoginLogTypeEnum.LOGIN_MOBILE; //因为账号就是保存用户的手机号, 所以userName就是手机号 // 校验账号是否存在 @@ -275,6 +282,9 @@ public class AdminAuthServiceImpl implements AdminAuthService { throw exception(AUTH_LOGIN_USER_DISABLED); } + //绑定用户openId + userService.updateUserOpenId(user.getId(),reqVO.getOpenId()); + /** 创建 Token 令牌,记录登录日志 */ Long userId = user.getId() ; // 插入登陆日志 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index f46b32d0..3939d761 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java @@ -33,6 +33,12 @@ public interface AdminUserService { */ Long createUser(@Valid UserSaveReqVO createReqVO); + /** + * 绑定用户微信小程序openId + * @param openId + */ + void updateUserOpenId(Long id, String openId); + /** * 修改用户 * @@ -111,6 +117,14 @@ public interface AdminUserService { */ AdminUserDO getUserByMobile(String mobile); + /** + * 根据opneId获取用户 + * + * @param openId 微信小程序用户唯一id + * @return 用户对象信息 + */ + AdminUserDO getUserByOpenId(String openId) ; + /** * 获得用户分页列表 * diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index 51fa7158..cde360d0 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -77,6 +77,20 @@ public class AdminUserServiceImpl implements AdminUserService { @Resource private FileApi fileApi; + @Override + @Transactional(rollbackFor = Exception.class) + public void updateUserOpenId(Long id,String openId) { + userMapper.updateById(new AdminUserDO().setId(id).setOpenId(openId)); + } + + @Override + public AdminUserDO getUserByOpenId(String openId) { + if (openId == null) { + return null ; + } + return userMapper.sgetByOpenId(openId); + } + @Override @Transactional(rollbackFor = Exception.class) public Long createUser(UserSaveReqVO createReqVO) {