|
@@ -796,11 +796,11 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
JSONArray deptArray = json.getJSONObject("auth_org_scopes").getJSONArray("authed_dept");
|
|
|
//如果授权的是全部公司部门,则递归获取子部门和人员
|
|
|
if (deptArray.size() == 1 && deptArray.getLong(0) == 1L) {
|
|
|
- getDepartmentList(roleId, roleName, dingding.getCompanyId(), dingding.getCorpid(), accessToken, 1L, addTempUserList);
|
|
|
+ getDepartmentList(roleId, roleName, dingding.getCompanyId(), dingding.getCorpid(), accessToken, 1L, addTempUserList, dingding);
|
|
|
} else {
|
|
|
for (int i=0;i<deptArray.size(); i++) {
|
|
|
long deptId = deptArray.getLongValue(i);
|
|
|
- getDepartmentDetailAndUserList(roleId, roleName, dingding.getCompanyId(), dingding.getCorpid(), accessToken, deptId, addTempUserList);
|
|
|
+ getDepartmentDetailAndUserList(roleId, roleName, dingding.getCompanyId(), dingding.getCorpid(), accessToken, deptId, addTempUserList, dingding);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -860,7 +860,6 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
if (dept.getDdDeptid() != null) {
|
|
|
Optional<DepartmentDingding> first = dingdingDeptList.stream().filter(ddpt -> ddpt.getDdDeptid().equals(dept.getDdDeptid())).findFirst();
|
|
|
if (first.isPresent()) {
|
|
|
-
|
|
|
boolean changed = false;
|
|
|
DepartmentDingding departmentDingding = first.get();
|
|
|
if (departmentDingding.getDdParentid() == 1) {
|
|
@@ -881,7 +880,8 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (!departmentDingding.getName().equals(dept.getDepartmentName())) {
|
|
|
+ //只有明文的才需要处理名称变化
|
|
|
+ if (dingding.getContactNeedTranslate() == 0 && !departmentDingding.getName().equals(dept.getDepartmentName())) {
|
|
|
dept.setDepartmentName(departmentDingding.getName());
|
|
|
changed = true;
|
|
|
}
|
|
@@ -940,11 +940,13 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
User upUser = new User();
|
|
|
upUser.setId(oldUser.getId());
|
|
|
boolean changed = false;
|
|
|
- if (oldUser.getName() == null || !oldUser.getName().equals(duser.getName())) {
|
|
|
- upUser.setName(duser.getName());
|
|
|
- System.out.println("更新用户姓名==" + oldUser.getName());
|
|
|
- changed = true;
|
|
|
- }
|
|
|
+ //暂时不更新姓名,避免出现老钉钉用户姓名被冲掉的情况
|
|
|
+ //仅针对老用户,不需要转译的情况下,才可能出现姓名变更的情况
|
|
|
+// if (dingding.getContactNeedTranslate() == 0 && duser.getName() != null && (oldUser.getName() == null || !oldUser.getName().equals(duser.getName()))) {
|
|
|
+// upUser.setName(duser.getName());
|
|
|
+// System.out.println("更新用户姓名==userId==" + oldUser.getId() + ", oldName="+ oldUser.getName()+", newName="+duser.getName());
|
|
|
+// changed = true;
|
|
|
+// }
|
|
|
//可能需要更新工号
|
|
|
if (!StringUtils.isEmpty(duser.getJobNumber()) && (oldUser.getJobNumber() == null || !oldUser.getJobNumber().equals(duser.getJobNumber()))) {
|
|
|
upUser.setJobNumber(duser.getJobNumber());
|
|
@@ -1474,7 +1476,7 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
}
|
|
|
|
|
|
//获取部门详情和部门下的人员
|
|
|
- public void getDepartmentDetailAndUserList(int roleId, String roleName, Integer companyId, String corpid, String accessToken, long deptId, List<TempDuser> addTempUserList) {
|
|
|
+ public void getDepartmentDetailAndUserList(int roleId, String roleName, Integer companyId, String corpid, String accessToken, long deptId, List<TempDuser> addTempUserList, CompanyDingding companyDingding) {
|
|
|
try {
|
|
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/get");
|
|
|
OapiV2DepartmentGetRequest req = new OapiV2DepartmentGetRequest();
|
|
@@ -1487,12 +1489,13 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
DepartmentDingding departmentDingding = new DepartmentDingding();
|
|
|
departmentDingding.setCorpid(corpid);
|
|
|
departmentDingding.setDdDeptid(dept.getInteger("dept_id"));
|
|
|
- departmentDingding.setName(dept.getString("name"));
|
|
|
+ if (companyDingding.getContactNeedTranslate() == 1) {
|
|
|
+ departmentDingding.setName(dept.getString("dept_id"));
|
|
|
+ } else {
|
|
|
+ departmentDingding.setName(dept.getString("name"));
|
|
|
+ }
|
|
|
departmentDingding.setDdParentid(dept.getInteger("parent_id"));
|
|
|
Department department = new Department();
|
|
|
- if (departmentDingding.getDdDeptid() == 661842181) {
|
|
|
- System.out.println("=========zfind 661842181"+departmentDingding.getName());
|
|
|
- }
|
|
|
department.setCompanyId(companyId);
|
|
|
//检查,根部门是公司名称,不需要创建部门
|
|
|
if (departmentDingding.getDdDeptid() != 1) {
|
|
@@ -1507,7 +1510,7 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
departmentDingding.setId(old.getId());
|
|
|
//检查名称是否发生变化
|
|
|
System.out.println(departmentDingding.getName()+" -- 已存在:"+departmentDingding.getDdDeptid());
|
|
|
- if (!old.getName().equals(departmentDingding.getName()) || !old.getDdParentid().equals(departmentDingding.getDdParentid())) {
|
|
|
+ if (companyDingding.getContactNeedTranslate() == 0 && (!old.getName().equals(departmentDingding.getName()) || !old.getDdParentid().equals(departmentDingding.getDdParentid()))) {
|
|
|
departmentDingdingMapper.updateById(departmentDingding);
|
|
|
System.out.println("更新该部门");
|
|
|
}
|
|
@@ -1520,7 +1523,7 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
//获取该部门下的人员, 如果是根部门,不会创建,人员的部门id会使用数据库默认的0
|
|
|
getDeptUserIdList(corpid, deptId, accessToken, addTempUserList);
|
|
|
//获取子部门
|
|
|
- getDepartmentList(roleId, roleName, companyId, corpid, accessToken, departmentDingding.getDdDeptid(), addTempUserList);
|
|
|
+ getDepartmentList(roleId, roleName, companyId, corpid, accessToken, departmentDingding.getDdDeptid(), addTempUserList, companyDingding);
|
|
|
}
|
|
|
} catch (ApiException e) {
|
|
|
e.printStackTrace();
|
|
@@ -1528,7 +1531,7 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
}
|
|
|
|
|
|
//获取该部门下的子部门列表,递归下一级子部门
|
|
|
- public String getDepartmentList(int roleId, String roleName, Integer companyId, String corpid, String access_token, long parentDeptId, List<TempDuser> addTempUserList) throws ApiException {
|
|
|
+ public String getDepartmentList(int roleId, String roleName, Integer companyId, String corpid, String access_token, long parentDeptId, List<TempDuser> addTempUserList, CompanyDingding companyDingding) throws ApiException {
|
|
|
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub");
|
|
|
OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
|
|
|
req.setDeptId(parentDeptId);
|
|
@@ -1544,7 +1547,12 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
DepartmentDingding departmentDingding = new DepartmentDingding();
|
|
|
departmentDingding.setCorpid(corpid);
|
|
|
departmentDingding.setDdDeptid(dept.getInteger("dept_id"));
|
|
|
- departmentDingding.setName(dept.getString("name"));
|
|
|
+ //TODO:对于钉钉市场的用户,需要通讯录加密的,没有返回部门名称,用部门id替代
|
|
|
+ if (companyDingding.getContactNeedTranslate() == 1) {
|
|
|
+ departmentDingding.setName(dept.getString("dept_id"));
|
|
|
+ } else {
|
|
|
+ departmentDingding.setName(dept.getString("name"));
|
|
|
+ }
|
|
|
departmentDingding.setDdParentid(dept.getInteger("parent_id"));
|
|
|
if (departmentDingding.getDdDeptid() == 661842181) {
|
|
|
System.out.println("=========zfind 661842181"+departmentDingding.getName());
|
|
@@ -1559,7 +1567,8 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
departmentDingding.setId(old.getId());
|
|
|
//检查名称是否发生变化
|
|
|
System.out.println(departmentDingding.getName()+" -- 已存在:"+departmentDingding.getDdDeptid());
|
|
|
- if (!old.getName().equals(departmentDingding.getName()) || !old.getDdParentid().equals(departmentDingding.getDdParentid())) {
|
|
|
+ //只有老用户,不需要转译的情况下才可能更新部门名称
|
|
|
+ if (companyDingding.getContactNeedTranslate() == 0 && (!old.getName().equals(departmentDingding.getName()) || !old.getDdParentid().equals(departmentDingding.getDdParentid()))) {
|
|
|
departmentDingdingMapper.updateById(departmentDingding);
|
|
|
System.out.println("更新该部门");
|
|
|
}
|
|
@@ -1568,7 +1577,7 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
}
|
|
|
}
|
|
|
//获取子部门的数据
|
|
|
- getDepartmentList(roleId, roleName, companyId, corpid, access_token, departmentDingding.getDdDeptid(), addTempUserList);
|
|
|
+ getDepartmentList(roleId, roleName, companyId, corpid, access_token, departmentDingding.getDdDeptid(), addTempUserList, companyDingding);
|
|
|
}
|
|
|
//获取部门下的人员列表
|
|
|
getDeptUserIdList(corpid, parentDeptId, access_token, addTempUserList);
|
|
@@ -1681,7 +1690,8 @@ public class DingDingServiceImpl implements DingDingService {
|
|
|
if (!addTempUserList.stream().anyMatch(add->add.getDingdingUserid().equals(dingdingUserid))) {
|
|
|
TempDuser duser = new TempDuser();
|
|
|
duser.setDingdingUserid(dingdingUserid);
|
|
|
- duser.setName(userJson.getString("name"));
|
|
|
+ //用userId作为name,方便系统内部处理
|
|
|
+ duser.setName(dingdingUserid);
|
|
|
duser.setDdDeptid(ddDeptId);
|
|
|
duser.setCorpid(corpid);
|
|
|
duser.setJobNumber(userJson.getString("job_number"));
|