people-同步用户-欧洲环境

This commit is contained in:
liyawei
2022-08-08 17:59:12 +08:00
parent a85314bfcb
commit f7e6547b1e
2 changed files with 104 additions and 8 deletions
@@ -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 += "&timestamp=" + 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";