Commit ce382280 by zhoupeng

Merge remote-tracking branch 'origin/master'

parents 592105aa 4625ea13
...@@ -10,7 +10,6 @@ import com.rome.order.domain.util.ParameterCheckUtils; ...@@ -10,7 +10,6 @@ import com.rome.order.domain.util.ParameterCheckUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -34,35 +33,48 @@ public class QiDianController { ...@@ -34,35 +33,48 @@ public class QiDianController {
@Autowired @Autowired
private QiDianService qiDianService; private QiDianService qiDianService;
@GetMapping( "/toSSOCallback") @GetMapping("/toSSOCallback")
@ApiOperation(value = "跳转至企点鉴权地址") @ApiOperation(value = "跳转至企点鉴权地址")
public void toSSOCallback(HttpServletRequest request, HttpServletResponse response) throws IOException { public void toSSOCallback(HttpServletRequest request, HttpServletResponse response) throws IOException {
String token = request.getParameter("token"); String token = request.getParameter("token");
log.info("-------跳转至企点鉴权地址token入参信息-------:{}",token); log.info("-------跳转至企点鉴权地址token入参信息-------:{}", token);
// 参数非空校验 // 参数非空校验
ParameterCheckUtils.noNull(ResponseMsg.PARAM_ERROR_TOKEN,token); ParameterCheckUtils.noNull(ResponseMsg.PARAM_ERROR_TOKEN, token);
response.sendRedirect(qiDianService.getSSOCallback(token)); response.sendRedirect(qiDianService.getSSOCallback(token));
} }
@PostMapping("/getQiDianAccessToken")
@PostMapping( "/getQiDianAccessToken")
@ApiOperation(value = "提供获取accessToken接口") @ApiOperation(value = "提供获取accessToken接口")
public QiDianAccessTokenResponseResDTO getQiDianAccessToken(@RequestBody QiDianAccessTokenReqDTO qiDianAccessTokenReqDTO){ public QiDianAccessTokenResponseResDTO getQiDianAccessToken(@RequestBody QiDianAccessTokenReqDTO qiDianAccessTokenReqDTO) {
log.info("---getQiDianAccessToken企点服务器入参信息为----:{}", JSON.toJSONString(qiDianAccessTokenReqDTO)); log.info("---getQiDianAccessToken企点服务器入参信息为----:{}", JSON.toJSONString(qiDianAccessTokenReqDTO));
return qiDianService.getQiDianAccessToken(qiDianAccessTokenReqDTO); return qiDianService.getQiDianAccessToken(qiDianAccessTokenReqDTO);
} }
@GetMapping( "/getAccessToken") @GetMapping("/getAccessToken")
@ApiOperation(value = "获取token") @ApiOperation(value = "获取token")
public String getAccessToken(){ public String getAccessToken() {
return qiDianService.getCacheToken(); return qiDianService.getCacheToken();
} }
@PostMapping( "/IDPRegister") @PostMapping("/IDPRegister")
@ApiOperation(value = "IDP身份注册接口") @ApiOperation(value = "IDP身份注册接口")
public String putIDPRegister(@RequestBody QiDianIDPRegisterReq qiDianIDPRegisterReq){ public String putIDPRegister(@RequestBody QiDianIDPRegisterReq qiDianIDPRegisterReq) {
return qiDianService.putIDPRegister(qiDianIDPRegisterReq); return qiDianService.putIDPRegister(qiDianIDPRegisterReq);
} }
@GetMapping("/login")
@ApiOperation(value = "第三方sso登录")
public String login(@RequestParam("code") String code) {
return qiDianService.login(code);
}
@GetMapping("/logout")
@ApiOperation(value = "第三方sso用户退出登录")
public String logout(@RequestParam("account") String account) {
return qiDianService.logout(account);
}
} }
...@@ -117,24 +117,42 @@ public interface QiDianService { ...@@ -117,24 +117,42 @@ public interface QiDianService {
* @param disableUrl 停用员工 * @param disableUrl 停用员工
* @return * @return
*/ */
EmpMainDataResDTO disable(String employeeNumber, String disableUrl,String openId); EmpMainDataResDTO disable(String employeeNumber, String disableUrl, String openId);
/** /**
* 企点启用员工 * 企点启用员工
*
* @param employeeNumber * @param employeeNumber
* @param disableUrl * @param disableUrl
* @param openId * @param openId
* @param department * @param department
* @return * @return
*/ */
EmpMainDataResDTO open(String employeeNumber, String disableUrl,String openId, List<Integer> department); EmpMainDataResDTO open(String employeeNumber, String disableUrl, String openId, List<Integer> department);
/** /**
* IDP身份注册接口 * IDP身份注册接口
*
* @param qiDianIDPRegisterReq * @param qiDianIDPRegisterReq
* @return * @return
*/ */
String putIDPRegister(QiDianIDPRegisterReq qiDianIDPRegisterReq); String putIDPRegister(QiDianIDPRegisterReq qiDianIDPRegisterReq);
/**
* 第三方sso登录
*
* @param code
* @return
*/
String login(String code);
/**
* 第三方sso用户退出登录
*
* @param account
* @returns
*/
String logout(String account);
} }
...@@ -59,7 +59,7 @@ public class QiDianServiceImpl implements QiDianService { ...@@ -59,7 +59,7 @@ public class QiDianServiceImpl implements QiDianService {
private String redirectUrl; private String redirectUrl;
@Value("${qidian.password:}") @Value("${qidian.password:}")
private String password; private String password;
@Override @Override
public String getCacheToken() { public String getCacheToken() {
...@@ -82,7 +82,7 @@ public class QiDianServiceImpl implements QiDianService { ...@@ -82,7 +82,7 @@ public class QiDianServiceImpl implements QiDianService {
//使用urlencode转义 //使用urlencode转义
String redirectUrlEncode = ServletUtils.urlEncode(redirectUrl); String redirectUrlEncode = ServletUtils.urlEncode(redirectUrl);
//跳转至企点鉴权地址 //跳转至企点鉴权地址
String url =QiDianConstant.SKIP_CALLBACK_URL+ RemoteConstant.SKIP_SSOCALLBACK_URL + "?code=" + code + "&appid=" + QiDianConstant.APP_ID + "&redirect_url=" + redirectUrlEncode; String url = QiDianConstant.SKIP_CALLBACK_URL + RemoteConstant.SKIP_SSOCALLBACK_URL + "?code=" + code + "&appid=" + QiDianConstant.APP_ID + "&redirect_url=" + redirectUrlEncode;
log.info("---getSSOCallbackUrl获取的地址为-----:{}", url); log.info("---getSSOCallbackUrl获取的地址为-----:{}", url);
return url; return url;
} }
...@@ -397,13 +397,13 @@ public class QiDianServiceImpl implements QiDianService { ...@@ -397,13 +397,13 @@ public class QiDianServiceImpl implements QiDianService {
} }
@Override @Override
public EmpMainDataResDTO open(String employeeNumber, String openUrl, String openId,List<Integer> department) { public EmpMainDataResDTO open(String employeeNumber, String openUrl, String openId, List<Integer> department) {
EmpMainDataResDTO dataResDTO = new EmpMainDataResDTO(); EmpMainDataResDTO dataResDTO = new EmpMainDataResDTO();
try { try {
dataResDTO.setEmployeeNumber(employeeNumber); dataResDTO.setEmployeeNumber(employeeNumber);
Map<Object, Object> paramMap = new HashMap<>(); Map<Object, Object> paramMap = new HashMap<>();
paramMap.put("openId", openId); paramMap.put("openId", openId);
paramMap.put("department",department); paramMap.put("department", department);
paramMap.put("passwordMd5", Md5Utils.string2MD5(password)); paramMap.put("passwordMd5", Md5Utils.string2MD5(password));
log.info("-----openUrl员工入参信息为------openUrlUrl:{},paramMap={}", openUrl, JSONObject.toJSONString(paramMap)); log.info("-----openUrl员工入参信息为------openUrlUrl:{},paramMap={}", openUrl, JSONObject.toJSONString(paramMap));
String result = HttpUtil.httpPost(openUrl, JSONObject.toJSONString(paramMap)); String result = HttpUtil.httpPost(openUrl, JSONObject.toJSONString(paramMap));
...@@ -445,5 +445,53 @@ public class QiDianServiceImpl implements QiDianService { ...@@ -445,5 +445,53 @@ public class QiDianServiceImpl implements QiDianService {
} }
} }
@Override
public String login(String code) {
try {
String url = String.format(RemoteConstant.SSO_LOGIN_API_URL, code);
Map<String, String> headers = getSSOHeaderMap();
log.info("-----第三方sso登录------url:{},headers={}", url, JSONObject.toJSONString(headers));
String result = HttpUtil.httpGet(url, headers);
log.info("-----第三方sso登录,result------:{}", result);
Map map = JSONObject.parseObject(result, Map.class);
if (RemoteConstant.SSO_SUCCESS.equals(Integer.parseInt(map.get("code").toString()))) {
//todo 成功
}
return map.get("msg").toString();
} catch (Exception e) {
String errorMsg = e.getMessage();
log.error("-----第三方sso登录报错了-------:{}", errorMsg);
return errorMsg;
}
}
@Override
public String logout(String account) {
try {
String url = String.format(RemoteConstant.SSO_LOGOUT_API_URL, account);
Map<String, String> headers = getSSOHeaderMap();
log.info("-----第三方sso用户退出登录------url:{},headers={}", url, JSONObject.toJSONString(headers));
String result = HttpUtil.httpGet(url, headers);
log.info("-----第三方sso用户退出登录,result------:{}", result);
Map map = JSONObject.parseObject(result, Map.class);
if (RemoteConstant.SSO_SUCCESS.equals(Integer.parseInt(map.get("code").toString()))) {
//todo 成功
}
return map.get("msg").toString();
} catch (Exception e) {
String errorMsg = e.getMessage();
log.error("-----第三方sso登录报错了-------:{}", errorMsg);
return errorMsg;
}
}
private Map<String, String> getSSOHeaderMap() {
Map<String, String> headers = new HashMap<>();
headers.put("corporationId", "0");
headers.put("timestamp", "");
headers.put("sign", "");
return headers;
}
} }
...@@ -16,6 +16,8 @@ import org.apache.http.protocol.HTTP; ...@@ -16,6 +16,8 @@ import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Map;
/** /**
* http请求 * http请求
* *
...@@ -99,6 +101,21 @@ public class HttpUtil { ...@@ -99,6 +101,21 @@ public class HttpUtil {
} }
} }
public static String httpGet(String url, Map<String, String> headers) {
try {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(url);
for (String key : headers.keySet()) {
httpGet.setHeader(key, headers.get(key));
}
HttpResponse response = httpClient.execute(httpGet);
return EntityUtils.toString(response.getEntity());
} catch (Exception e) {
log.error("http GET请求异常:", e);
throw new TradeException(RomeExceptionEnum.HTTP_ERROR);
}
}
public static String httpPut(String token, String url, String jsonStr) { public static String httpPut(String token, String url, String jsonStr) {
try { try {
HttpClient httpClient = HttpClientBuilder.create().build(); HttpClient httpClient = HttpClientBuilder.create().build();
......
...@@ -66,6 +66,17 @@ public class RemoteConstant { ...@@ -66,6 +66,17 @@ public class RemoteConstant {
*/ */
public static String IDP_REGISTER_URL = "/cgi-bin/v1/sso/SSOService/IDPRegister"; public static String IDP_REGISTER_URL = "/cgi-bin/v1/sso/SSOService/IDPRegister";
/**
* 第三方sso登录 登录完成后回调业务地址
*/
public static String SSO_LOGIN_API_URL = "/api/dataauth/authserver/login/third/sso?code=%s&redirect=%s";
/**
* 第三方sso登录 第三方sso用户退出登录
*/
public static String SSO_LOGOUT_API_URL = "/api/dataauth/authserver/logout/third/sso?account=%s";
/** /**
* UTF-8 字符集 * UTF-8 字符集
*/ */
...@@ -78,6 +89,10 @@ public class RemoteConstant { ...@@ -78,6 +89,10 @@ public class RemoteConstant {
public static final Integer SUCCESS = 0; public static final Integer SUCCESS = 0;
/** /**
* 成功标识
*/
public static final Integer SSO_SUCCESS = 1;
/**
* 失败标识 * 失败标识
*/ */
public static final Integer FAIL = 500; public static final Integer FAIL = 500;
...@@ -133,5 +148,5 @@ public class RemoteConstant { ...@@ -133,5 +148,5 @@ public class RemoteConstant {
/** /**
* 为空 * 为空
*/ */
public static final String EMP=""; public static final String EMP = "";
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment