ludc
2023-09-13 4a2835ddadb796c69f180097b95f971dbab4687d
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/PasswordFreeLoginServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
package com.vci.ubcs.code.service.impl;
import com.vci.ubcs.code.service.IPasswordFreeLoginService;
import com.vci.ubcs.code.util.HttpUtils;
import org.apache.commons.collections4.MultiValuedMap;
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.List;
/**
 * å…å¯†ç™»å½•服务
 * @author ludc
 * @date 2023/9/11 15:45
 */
@Service
public class PasswordFreeLoginServiceImpl implements IPasswordFreeLoginService {
   // é€šè¿‡æœåŠ¡æ³¨å†Œä¸­å¿ƒèŽ·å–ç½‘å…³çš„ç«¯å£å·
   @Autowired
   private DiscoveryClient discoveryClient;
   /**
    * èŽ·å–ç½‘å…³ç«¯å£
    * @return
    */
   public String getGatewayPort() {
      List<ServiceInstance> instances = discoveryClient.getInstances("ubcs-gateway");
      if (!instances.isEmpty()) {
         ServiceInstance gatewayInstance = instances.get(0);
         return String.valueOf(gatewayInstance.getPort());
      }
      return "80";
   }
   /**
    * å…å¯†ç™»å½•
    * @param account è´¦å·
    * @return
    */
   @Override
   public boolean passwordFreeLogin(String account) {
      // å…å¯†ç™»å½•接口地址
      String loginUrl = "http://localhost:"+this.getGatewayPort()+"/ubcs-auth/oauth/passwordFreeLogin?username=admin&grant_type=captcha&scope=all&type=account";
      // è®¾ç½®è¯·æ±‚头
      HttpHeaders headers = new HttpHeaders();
      headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
      //设置请求体参数
      MultiValueMap<String,String> bodyParams = new LinkedMultiValueMap<String,String>();
      bodyParams.add("account",account);
      // å‘送POST请求
      String responseBody = HttpUtils.post(loginUrl, bodyParams);
      System.out.println(responseBody);
      //拿到响应体将token存入到redis中,以account作为存储的key
      // è§£æžå“åº”体获取令牌
      // è¿™é‡Œå‡è®¾å“åº”体是JSON格式,包含一个名为"token"的字段
      // æ ¹æ®å®žé™…情况进行解析
      // JSONObject json = new JSONObject(responseBody);
      // String token = json.getString("token");
      return false;
   }
}