|  | @@ -1,16 +1,20 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.auth.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  |  import com.dayaedu.cbs.openfeign.wrapper.qrcode.CbsQrCodeScanWrapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.core.service.CustomTokenServices;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.service.SysUserService;
 | 
	
		
			
				|  |  | +import com.ym.mec.common.entity.HttpResponseResult;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.exception.BizException;
 | 
	
		
			
				|  |  |  import org.springframework.http.HttpStatus;
 | 
	
		
			
				|  |  | -import org.springframework.security.oauth2.common.OAuth2AccessToken;
 | 
	
		
			
				|  |  |  import org.springframework.security.oauth2.provider.OAuth2Authentication;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import javax.annotation.Resource;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +import java.util.UUID;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class CbsQrCodeScanServiceImpl{
 | 
	
	
		
			
				|  | @@ -19,6 +23,8 @@ public class CbsQrCodeScanServiceImpl{
 | 
	
		
			
				|  |  |      private CustomTokenServices customTokenServices;
 | 
	
		
			
				|  |  |      @Resource
 | 
	
		
			
				|  |  |      private SysUserService sysUserService;
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private SysUserFeignService sysUserFeignService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public CbsQrCodeScanWrapper.UserInfo userInfo(CbsQrCodeScanWrapper.QrCodeScanUserInfoReq req) {
 | 
	
		
			
				|  |  |          CbsQrCodeScanWrapper.UserInfo userInfo = new CbsQrCodeScanWrapper.UserInfo();
 | 
	
	
		
			
				|  | @@ -28,15 +34,24 @@ public class CbsQrCodeScanServiceImpl{
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public CbsQrCodeScanWrapper.QrCodeScanToken login(CbsQrCodeScanWrapper.QrCodeScanReq req) {
 | 
	
		
			
				|  |  | +        //校验是否过期
 | 
	
		
			
				|  |  |          OAuth2Authentication auth2Authentication = customTokenServices.loadAuthentication(req.getPassword());
 | 
	
		
			
				|  |  |          String phone = auth2Authentication.getName().split(":")[1];
 | 
	
		
			
				|  |  |          SysUser sysUser = sysUserService.queryByPhone(phone);
 | 
	
		
			
				|  |  |          if (sysUser == null) {
 | 
	
		
			
				|  |  |              throw new BizException(HttpStatus.UNAUTHORIZED.value(), "用户不存在");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        OAuth2AccessToken accessToken = customTokenServices.newAccessToken(auth2Authentication);
 | 
	
		
			
				|  |  | -        CbsQrCodeScanWrapper.QrCodeScanToken qrCodeScanToken = new CbsQrCodeScanWrapper.QrCodeScanToken();
 | 
	
		
			
				|  |  | -        qrCodeScanToken.setTokenData(accessToken.getValue());
 | 
	
		
			
				|  |  | -        return qrCodeScanToken;
 | 
	
		
			
				|  |  | +        //调用登陆接口
 | 
	
		
			
				|  |  | +        HttpResponseResult<Map<String,Object>> result = sysUserFeignService.smsLogin(phone, "qr_teacher", UUID.randomUUID().toString(), "qr_teacher");
 | 
	
		
			
				|  |  | +        if (result != null){
 | 
	
		
			
				|  |  | +            if(result.getCode() != 200){
 | 
	
		
			
				|  |  | +                throw new BizException("扫码登陆失败", result.getMsg());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            CbsQrCodeScanWrapper.QrCodeScanToken qrCodeScanToken = new CbsQrCodeScanWrapper.QrCodeScanToken();
 | 
	
		
			
				|  |  | +            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(result.getData().get("authentication")));
 | 
	
		
			
				|  |  | +            qrCodeScanToken.setTokenData(jsonObject.getString("access_token"));
 | 
	
		
			
				|  |  | +            return qrCodeScanToken;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        throw new BizException("扫码登陆失败", "调用登陆接口失败");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |