| | |
| | | private SystemUserMapper systemUserMapper; |
| | | |
| | | |
| | | /** |
| | | * 微信授权(登录后) |
| | | * @param code |
| | | */ |
| | | @Override |
| | | public String wxEmpower(String code,Integer userId){ |
| | | try { |
| | | //获取微信敏感数据 |
| | | WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code); |
| | | String openId = session.getOpenid(); |
| | | if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员"); |
| | | } |
| | | if(Objects.nonNull(userId)){ |
| | | systemUserMapper.update(null,new UpdateWrapper<SystemUser>() |
| | | .lambda().set(SystemUser::getOpenid,null) |
| | | .eq(SystemUser::getOpenid,openId) |
| | | .ne(SystemUser::getId,userId)); |
| | | // /** |
| | | // * 微信授权(登录后) |
| | | // * @param code |
| | | // */ |
| | | // @Override |
| | | // public String wxEmpower(String code,Integer userId){ |
| | | // try { |
| | | // //获取微信敏感数据 |
| | | // WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code); |
| | | // String openId = session.getOpenid(); |
| | | // if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) { |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员"); |
| | | // } |
| | | // if(Objects.nonNull(userId)){ |
| | | // systemUserMapper.update(null,new UpdateWrapper<SystemUser>() |
| | | // .lambda() |
| | | // .set(SystemUser::getOpenid,null) |
| | | // .eq(SystemUser::getOpenid,openId) |
| | | // .ne(SystemUser::getId,userId)); |
| | | // |
| | | // systemUserMapper.update(null,new UpdateWrapper<SystemUser>() |
| | | // .lambda() |
| | | // .set(SystemUser::getOpenid,openId) |
| | | // .eq(SystemUser::getId,userId)); |
| | | // } |
| | | // return openId; |
| | | // } catch (WxErrorException e) { |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员"); |
| | | // } |
| | | // } |
| | | |
| | | systemUserMapper.update(null,new UpdateWrapper<SystemUser>() |
| | | .lambda() |
| | | .set(SystemUser::getOpenid,openId) |
| | | .eq(SystemUser::getId,userId)); |
| | | } |
| | | return openId; |
| | | } catch (WxErrorException e) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员"); |
| | | @Override |
| | | public void cleaOpenid(){ |
| | | LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(StringUtils.isNotBlank(loginUserInfo.getOpenid())){ |
| | | systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda() |
| | | .set(SystemUser::getOpenid,null) |
| | | .eq(SystemUser::getId,loginUserInfo.getId())); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String loginByWxMini (WxMiniLoginDTO wxMiniLoginDTO, HttpServletRequest request){ |
| | | LoginDTO dto = new LoginDTO(); |
| | | if(StringUtils.isNotBlank(wxMiniLoginDTO.getCode())){ |
| | | try{ |
| | | WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(wxMiniLoginDTO.getCode()); |
| | |
| | | .last(" limit 1") |
| | | ); |
| | | if(Objects.nonNull(systemUser)){ |
| | | LoginPhoneDTO dto = new LoginPhoneDTO(); |
| | | dto.setPhone(systemUser.getMobile()); |
| | | return this.loginByPhone(dto,Constants.ZERO,false,request); |
| | | LoginPhoneDTO loginPhoneDTO = new LoginPhoneDTO(); |
| | | loginPhoneDTO.setPhone(systemUser.getMobile()); |
| | | return this.loginByPhone(loginPhoneDTO,Constants.ONE,false,request); |
| | | }else{ |
| | | return null; |
| | | } |
| | | }else{ |
| | | dto.setOpenid(openId); |
| | | } |
| | | } catch (WxErrorException e) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员"); |
| | |
| | | || StringUtils.isBlank(wxMiniLoginDTO.getPassword())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | LoginDTO dto = new LoginDTO(); |
| | | dto.setUsername(wxMiniLoginDTO.getUsername()); |
| | | dto.setPassword(wxMiniLoginDTO.getPassword()); |
| | | return this.loginByPassword(dto,Constants.ONE,false,request); |
| | |
| | | loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId()); |
| | | loginLog.setSuccess(Boolean.TRUE); |
| | | systemLoginLogService.create(loginLog); |
| | | |
| | | //更新openid所属用户信息 |
| | | if(StringUtils.isNotBlank(dto.getOpenid())){ |
| | | systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda() |
| | | .set(SystemUser::getOpenid,null) |
| | | .eq(SystemUser::getOpenid,dto.getOpenid()) |
| | | .ne(SystemUser::getId,loginLog.getUserId())); |
| | | systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda() |
| | | .set(SystemUser::getOpenid,dto.getOpenid()) |
| | | .eq(SystemUser::getId,loginLog.getUserId())); |
| | | } |
| | | return (String)subject.getSession().getId(); |
| | | } catch (AuthenticationException e) { |
| | | log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); |