people-同步用户-欧洲环境
This commit is contained in:
+99
-8
@@ -44,6 +44,15 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
||||
@Value("${people.secret}")
|
||||
private String secret;
|
||||
|
||||
@Value("${people.appIdEU}")
|
||||
private String appIdEU;
|
||||
|
||||
@Value("${people.hostEU}")
|
||||
private String hostEU;
|
||||
|
||||
@Value("${people.secretEU}")
|
||||
private String secretEU;
|
||||
|
||||
@Autowired
|
||||
private ISysUserService sysUserService;
|
||||
@Autowired
|
||||
@@ -163,22 +172,26 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
||||
List<SysUser> sysUserList = sysUserService.getPPEmployeeList();
|
||||
// log.info("查询到的用户信息结果集为:"+JSONObject.toJSONString(userEOList));
|
||||
for(SysUser user:sysUserList){
|
||||
localUserMap.put(user.getThirdId(),user);
|
||||
if (StringUtils.isNotBlank(user.getThirdId())) {
|
||||
localUserMap.put(user.getThirdId().toLowerCase(), user);
|
||||
}
|
||||
}
|
||||
|
||||
List<PPEmployee> ppEmployeeList = new ArrayList<>();
|
||||
// 获取people 国内 用户信息
|
||||
String path = "/people/v1/employee/all-info";
|
||||
String queryStr = "app_id=" + appId + "&hash_type=sha256&offset=0&limit=100";
|
||||
String response = getResultDataOfGet(path, queryStr);
|
||||
JSONObject myJson = JSONObject.parseObject(response);
|
||||
log.debug(myJson.toJSONString());
|
||||
if(!myJson.get("result_code").toString().equals("success")){
|
||||
log.error("请求出现异常:"+myJson.get("message")+" "+myJson);
|
||||
log.error("【国内】请求国内用户数据出现异常:"+myJson.get("message")+" "+myJson);
|
||||
}else{
|
||||
log.debug("打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
||||
log.debug("【国内】打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
||||
JSONObject resultJson = (JSONObject) myJson.get("data");
|
||||
//将第一页的账户信息转换为本地dto集合
|
||||
List<JSONObject> userList = JSONObject.parseArray(resultJson.get("list").toString(), JSONObject.class);
|
||||
List<PPEmployee> ppEmployeeList = getPPEmployeeList(userList);
|
||||
ppEmployeeList = getPPEmployeeList(userList, "CN");
|
||||
|
||||
//获取总记录数
|
||||
int total = (int) resultJson.get("amount");
|
||||
@@ -188,18 +201,57 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
||||
pageSum += 1;
|
||||
}
|
||||
//循环查询统一认证系统所有账户信息(从第二页开始)
|
||||
for(int page = 1; page < pageSum; page++){
|
||||
for(int page = 1; page < 2; page++){
|
||||
path = "/people/v1/employee/all-info";
|
||||
queryStr = "app_id=" + appId + "&hash_type=sha256&limit=100&offset=" + (page*100);
|
||||
response = getResultDataOfGet(path, queryStr);
|
||||
myJson = JSONObject.parseObject(response);
|
||||
log.debug("打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
||||
log.debug("【国内】打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
||||
resultJson = (JSONObject) myJson.get("data");
|
||||
userList = JSONObject.parseArray(resultJson.get("list").toString(), JSONObject.class);
|
||||
List<PPEmployee> currentPPEmployeeList = getPPEmployeeList(userList);
|
||||
List<PPEmployee> currentPPEmployeeList = getPPEmployeeList(userList, "CN");
|
||||
ppEmployeeList.addAll(currentPPEmployeeList);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取people 欧洲 用户信息
|
||||
path = "/people/v1/employee/all-info";
|
||||
String queryStrEU = "app_id=" + appIdEU + "&hash_type=sha256&offset=0&limit=100";
|
||||
String responseEU = getResultDataOfGetEU(path, queryStrEU);
|
||||
JSONObject myJsonEU = JSONObject.parseObject(responseEU);
|
||||
log.debug(myJsonEU.toJSONString());
|
||||
if(!myJsonEU.get("result_code").toString().equals("success")){
|
||||
log.error("【欧洲】请求欧洲用户数据出现异常:"+myJsonEU.get("message")+" "+myJsonEU);
|
||||
}else{
|
||||
log.debug("【欧洲】打印输出本次同步信息返回结果:"+myJsonEU.get("data").toString());
|
||||
JSONObject resultJsonEU = (JSONObject) myJsonEU.get("data");
|
||||
//将第一页的账户信息转换为本地dto集合
|
||||
List<JSONObject> userListEU = JSONObject.parseArray(resultJsonEU.get("list").toString(), JSONObject.class);
|
||||
List<PPEmployee> currentPPEmployeeListEU = getPPEmployeeList(userListEU, "EN");
|
||||
ppEmployeeList.addAll(currentPPEmployeeListEU);
|
||||
|
||||
//获取总记录数
|
||||
int totalEU = (int) resultJsonEU.get("amount");
|
||||
if(totalEU > 100){
|
||||
int pageSumEU = totalEU / 100; // 总页数
|
||||
if((totalEU % 100) > 0){
|
||||
pageSumEU += 1;
|
||||
}
|
||||
//循环查询统一认证系统所有账户信息(从第二页开始)
|
||||
for(int page = 1; page < pageSumEU; page++){
|
||||
path = "/people/v1/employee/all-info";
|
||||
queryStrEU = "app_id=" + appIdEU + "&hash_type=sha256&limit=100&offset=" + (page*100);
|
||||
responseEU = getResultDataOfGetEU(path, queryStrEU);
|
||||
myJsonEU = JSONObject.parseObject(responseEU);
|
||||
log.debug("【欧洲】打印输出本次同步信息返回结果:"+myJsonEU.get("data").toString());
|
||||
resultJsonEU = (JSONObject) myJsonEU.get("data");
|
||||
userListEU = JSONObject.parseArray(resultJsonEU.get("list").toString(), JSONObject.class);
|
||||
currentPPEmployeeListEU = getPPEmployeeList(userListEU, "EN");
|
||||
ppEmployeeList.addAll(currentPPEmployeeListEU);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 处理同步过来的数据id不同,username相同的情况 creation_time不能为空
|
||||
// ppEmployeeList.sort(Comparator.comparing(PPEmployee::getCreation_time).reversed());
|
||||
ppEmployeeList = ppEmployeeList.stream().distinct().collect(Collectors.toList()); // 去重
|
||||
@@ -249,10 +301,14 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
||||
}
|
||||
|
||||
|
||||
private static List<PPEmployee> getPPEmployeeList(List<JSONObject> userList) {
|
||||
private static List<PPEmployee> getPPEmployeeList(List<JSONObject> userList, String region) {
|
||||
List<PPEmployee> ppEmployeeList = new ArrayList<>();
|
||||
for (JSONObject user : userList) {
|
||||
PPEmployee userMainInfo = JSONObject.parseObject(user.get("people_info").toString(), PPEmployee.class);
|
||||
if ("EU".equals(region)) {
|
||||
String newId = "EU" + userMainInfo.getId();
|
||||
userMainInfo.setId(newId);
|
||||
}
|
||||
|
||||
List<PPEmployee> userJobInfoList = JSONObject.parseArray(user.get("people_job_info").toString(), PPEmployee.class);
|
||||
if (CollectionUtil.isNotEmpty(userJobInfoList)) {
|
||||
@@ -315,6 +371,41 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
||||
// return myJson.get("data").toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送请求,获取同步数据-欧洲
|
||||
* @param uri
|
||||
* @param queryString
|
||||
* @return
|
||||
* @throws IOException
|
||||
* @throws NoSuchAlgorithmException
|
||||
* @throws InvalidKeyException
|
||||
*/
|
||||
private String getResultDataOfGetEU(String uri, String queryString) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
|
||||
// 获取签名
|
||||
String method ="GET";
|
||||
String path = uri;
|
||||
String queryStr = queryString;
|
||||
Map<String, String> header = new HashMap<>();
|
||||
String timestamp = HmacSignUtil.getSecondTimestamp(new Date());
|
||||
queryStr += "×tamp=" + timestamp;
|
||||
String sign = HmacSignUtil.getSign(secretEU,method,path,queryStr,header);
|
||||
String url = hostEU;
|
||||
url += path + "?";
|
||||
url += queryStr;
|
||||
url += "&sign=" + sign;
|
||||
Map<String, String> headerMap = new HashMap<>();
|
||||
String response = HttpRequestUtil.getResponseOfGET(url, headerMap);
|
||||
JSONObject myJson = JSONObject.parseObject(response);
|
||||
|
||||
return myJson.toJSONString();
|
||||
// log.debug(myJson.toJSONString());
|
||||
// if(!myJson.get("result_code").toString().equals("success")) {
|
||||
// log.error("请求出现异常:" + myJson.get("result_code") + " " + myJson);
|
||||
// }
|
||||
// log.debug("打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
||||
// return myJson.get("data").toString();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
|
||||
|
||||
String path = "/people/v1/employee/all-info";
|
||||
|
||||
Reference in New Issue
Block a user