people-同步用户-欧洲环境
This commit is contained in:
+99
-8
@@ -44,6 +44,15 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
|||||||
@Value("${people.secret}")
|
@Value("${people.secret}")
|
||||||
private String secret;
|
private String secret;
|
||||||
|
|
||||||
|
@Value("${people.appIdEU}")
|
||||||
|
private String appIdEU;
|
||||||
|
|
||||||
|
@Value("${people.hostEU}")
|
||||||
|
private String hostEU;
|
||||||
|
|
||||||
|
@Value("${people.secretEU}")
|
||||||
|
private String secretEU;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysUserService sysUserService;
|
private ISysUserService sysUserService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -163,22 +172,26 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
|||||||
List<SysUser> sysUserList = sysUserService.getPPEmployeeList();
|
List<SysUser> sysUserList = sysUserService.getPPEmployeeList();
|
||||||
// log.info("查询到的用户信息结果集为:"+JSONObject.toJSONString(userEOList));
|
// log.info("查询到的用户信息结果集为:"+JSONObject.toJSONString(userEOList));
|
||||||
for(SysUser user:sysUserList){
|
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 path = "/people/v1/employee/all-info";
|
||||||
String queryStr = "app_id=" + appId + "&hash_type=sha256&offset=0&limit=100";
|
String queryStr = "app_id=" + appId + "&hash_type=sha256&offset=0&limit=100";
|
||||||
String response = getResultDataOfGet(path, queryStr);
|
String response = getResultDataOfGet(path, queryStr);
|
||||||
JSONObject myJson = JSONObject.parseObject(response);
|
JSONObject myJson = JSONObject.parseObject(response);
|
||||||
log.debug(myJson.toJSONString());
|
log.debug(myJson.toJSONString());
|
||||||
if(!myJson.get("result_code").toString().equals("success")){
|
if(!myJson.get("result_code").toString().equals("success")){
|
||||||
log.error("请求出现异常:"+myJson.get("message")+" "+myJson);
|
log.error("【国内】请求国内用户数据出现异常:"+myJson.get("message")+" "+myJson);
|
||||||
}else{
|
}else{
|
||||||
log.debug("打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
log.debug("【国内】打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
||||||
JSONObject resultJson = (JSONObject) myJson.get("data");
|
JSONObject resultJson = (JSONObject) myJson.get("data");
|
||||||
//将第一页的账户信息转换为本地dto集合
|
//将第一页的账户信息转换为本地dto集合
|
||||||
List<JSONObject> userList = JSONObject.parseArray(resultJson.get("list").toString(), JSONObject.class);
|
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");
|
int total = (int) resultJson.get("amount");
|
||||||
@@ -188,18 +201,57 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
|||||||
pageSum += 1;
|
pageSum += 1;
|
||||||
}
|
}
|
||||||
//循环查询统一认证系统所有账户信息(从第二页开始)
|
//循环查询统一认证系统所有账户信息(从第二页开始)
|
||||||
for(int page = 1; page < pageSum; page++){
|
for(int page = 1; page < 2; page++){
|
||||||
path = "/people/v1/employee/all-info";
|
path = "/people/v1/employee/all-info";
|
||||||
queryStr = "app_id=" + appId + "&hash_type=sha256&limit=100&offset=" + (page*100);
|
queryStr = "app_id=" + appId + "&hash_type=sha256&limit=100&offset=" + (page*100);
|
||||||
response = getResultDataOfGet(path, queryStr);
|
response = getResultDataOfGet(path, queryStr);
|
||||||
myJson = JSONObject.parseObject(response);
|
myJson = JSONObject.parseObject(response);
|
||||||
log.debug("打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
log.debug("【国内】打印输出本次同步信息返回结果:"+myJson.get("data").toString());
|
||||||
resultJson = (JSONObject) myJson.get("data");
|
resultJson = (JSONObject) myJson.get("data");
|
||||||
userList = JSONObject.parseArray(resultJson.get("list").toString(), JSONObject.class);
|
userList = JSONObject.parseArray(resultJson.get("list").toString(), JSONObject.class);
|
||||||
List<PPEmployee> currentPPEmployeeList = getPPEmployeeList(userList);
|
List<PPEmployee> currentPPEmployeeList = getPPEmployeeList(userList, "CN");
|
||||||
ppEmployeeList.addAll(currentPPEmployeeList);
|
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不能为空
|
// 处理同步过来的数据id不同,username相同的情况 creation_time不能为空
|
||||||
// ppEmployeeList.sort(Comparator.comparing(PPEmployee::getCreation_time).reversed());
|
// ppEmployeeList.sort(Comparator.comparing(PPEmployee::getCreation_time).reversed());
|
||||||
ppEmployeeList = ppEmployeeList.stream().distinct().collect(Collectors.toList()); // 去重
|
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<>();
|
List<PPEmployee> ppEmployeeList = new ArrayList<>();
|
||||||
for (JSONObject user : userList) {
|
for (JSONObject user : userList) {
|
||||||
PPEmployee userMainInfo = JSONObject.parseObject(user.get("people_info").toString(), PPEmployee.class);
|
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);
|
List<PPEmployee> userJobInfoList = JSONObject.parseArray(user.get("people_job_info").toString(), PPEmployee.class);
|
||||||
if (CollectionUtil.isNotEmpty(userJobInfoList)) {
|
if (CollectionUtil.isNotEmpty(userJobInfoList)) {
|
||||||
@@ -315,6 +371,41 @@ public class SyncDataServiceImpl implements ISyncDataService{
|
|||||||
// return myJson.get("data").toString();
|
// 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 {
|
public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
|
||||||
|
|
||||||
String path = "/people/v1/employee/all-info";
|
String path = "/people/v1/employee/all-info";
|
||||||
|
|||||||
@@ -407,6 +407,11 @@ people:
|
|||||||
# appSecret CN PROD版
|
# appSecret CN PROD版
|
||||||
secret: 7C3F03170E3ea489df04Ce8DEC7Df4f7
|
secret: 7C3F03170E3ea489df04Ce8DEC7Df4f7
|
||||||
cronJobIsOpen: false
|
cronJobIsOpen: false
|
||||||
|
|
||||||
|
# appSecret EU PROD版
|
||||||
|
appIdEU: 1000233
|
||||||
|
secretEU: 32172576EB3a6fd4d483de11C6f60828
|
||||||
|
hostEU: http://napoleon-eu.nioint.com
|
||||||
## Feishu
|
## Feishu
|
||||||
Feishu:
|
Feishu:
|
||||||
# 测试
|
# 测试
|
||||||
|
|||||||
Reference in New Issue
Block a user