|
@@ -192,12 +192,17 @@ public class DingDingServiceImpl implements DingDingService {
|
|
JSONObject json = JSONObject.parseObject(rsp.getBody());
|
|
JSONObject json = JSONObject.parseObject(rsp.getBody());
|
|
if (json.getInteger("errcode") == 0) {
|
|
if (json.getInteger("errcode") == 0) {
|
|
JSONArray deptArray = json.getJSONObject("auth_org_scopes").getJSONArray("authed_dept");
|
|
JSONArray deptArray = json.getJSONObject("auth_org_scopes").getJSONArray("authed_dept");
|
|
- List<Long> result = new ArrayList<>();
|
|
|
|
- for (int i=0;i<deptArray.size(); i++) {
|
|
|
|
- long deptId = deptArray.getLongValue(i);
|
|
|
|
- getDepartmentDetailAndUserList(dingding.getCompanyId(), dingding.getCorpid(), dingding.getAccessToken(), deptId);
|
|
|
|
|
|
+ //如果授权的是全部公司部门,则递归获取子部门和人员
|
|
|
|
+ if (deptArray.size() == 1 && deptArray.getLong(0) == 1L) {
|
|
|
|
+ getDepartmentList(dingding.getCompanyId(), dingding.getCorpid(), accessToken, 1L, null);
|
|
|
|
+ } else {
|
|
|
|
+ for (int i=0;i<deptArray.size(); i++) {
|
|
|
|
+ long deptId = deptArray.getLongValue(i);
|
|
|
|
+ getDepartmentDetailAndUserList(dingding.getCompanyId(), dingding.getCorpid(), accessToken, deptId);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
//直接授权的人员,没有部门
|
|
//直接授权的人员,没有部门
|
|
JSONArray userArray = json.getJSONObject("auth_org_scopes").getJSONArray("authed_user");
|
|
JSONArray userArray = json.getJSONObject("auth_org_scopes").getJSONArray("authed_user");
|
|
for (int i=0;i<userArray.size(); i++) {
|
|
for (int i=0;i<userArray.size(); i++) {
|
|
@@ -298,7 +303,9 @@ public class DingDingServiceImpl implements DingDingService {
|
|
if (json.getInteger("errcode") == 0) {
|
|
if (json.getInteger("errcode") == 0) {
|
|
JSONObject result = json.getJSONObject("result");
|
|
JSONObject result = json.getJSONObject("result");
|
|
String dduid = result.getString("userid");
|
|
String dduid = result.getString("userid");
|
|
- List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("dingding_userid", dduid).orderByDesc("create_time"));
|
|
|
|
|
|
+ CompanyDingding companyDingding = companyDingdingMapper.selectById(corpid);
|
|
|
|
+ //一个钉钉用户可能有多个企业,他们的dingding_userid是一样的,此处需要结合companyId来组合判断
|
|
|
|
+ List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("dingding_userid", dduid).eq("company_id", companyDingding.getCompanyId()).orderByDesc("create_time"));
|
|
if (userList.size() == 0) {
|
|
if (userList.size() == 0) {
|
|
httpRespMsg.setError("您尚无权使用系统,请联系管理员。");
|
|
httpRespMsg.setError("您尚无权使用系统,请联系管理员。");
|
|
return httpRespMsg;
|
|
return httpRespMsg;
|
|
@@ -308,7 +315,8 @@ public class DingDingServiceImpl implements DingDingService {
|
|
httpRespMsg.setError("该账户已停用,无法登陆。请联系管理员");
|
|
httpRespMsg.setError("该账户已停用,无法登陆。请联系管理员");
|
|
} else {
|
|
} else {
|
|
//查看该公司非会员公司,只能允许试用三天,超时不可登录
|
|
//查看该公司非会员公司,只能允许试用三天,超时不可登录
|
|
- Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", user.getCompanyId()));
|
|
|
|
|
|
+
|
|
|
|
+ Company company = companyMapper.selectById(companyDingding.getCompanyId());
|
|
//公司未办理会员
|
|
//公司未办理会员
|
|
if (null != company.getExpirationDate()) {
|
|
if (null != company.getExpirationDate()) {
|
|
if (0 == company.getSetMeal()) {
|
|
if (0 == company.getSetMeal()) {
|
|
@@ -397,20 +405,24 @@ public class DingDingServiceImpl implements DingDingService {
|
|
departmentDingding.setName(dept.getString("name"));
|
|
departmentDingding.setName(dept.getString("name"));
|
|
departmentDingding.setDdParentid(dept.getInteger("parent_id"));
|
|
departmentDingding.setDdParentid(dept.getInteger("parent_id"));
|
|
Department department = new Department();
|
|
Department department = new Department();
|
|
- department.setDepartmentName(dept.getString("name"));
|
|
|
|
|
|
+
|
|
department.setCompanyId(companyId);
|
|
department.setCompanyId(companyId);
|
|
- //检查该部门是否已经创建
|
|
|
|
- List<Department> existDept = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId).eq("department_name", dept.getString("name")));
|
|
|
|
- if (existDept.size() > 0) {
|
|
|
|
- department = existDept.get(0);
|
|
|
|
- } else {
|
|
|
|
- departmentMapper.insert(department);
|
|
|
|
|
|
+ //检查,根部门是公司名称,不需要创建部门
|
|
|
|
+ if (departmentDingding.getDdDeptid() != 1) {
|
|
|
|
+ department.setDepartmentName(dept.getString("name"));
|
|
|
|
+ //检查该部门是否已经创建
|
|
|
|
+ List<Department> existDept = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId).eq("department_name", dept.getString("name")));
|
|
|
|
+ if (existDept.size() > 0) {
|
|
|
|
+ department = existDept.get(0);
|
|
|
|
+ } else {
|
|
|
|
+ departmentMapper.insert(department);
|
|
|
|
+ departmentDingding.setSysDeptid(department.getDepartmentId());
|
|
|
|
+ departmentDingdingMapper.insert(departmentDingding);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- departmentDingding.setSysDeptid(department.getDepartmentId());
|
|
|
|
- departmentDingdingMapper.insert(departmentDingding);
|
|
|
|
|
|
|
|
- //获取该部门下的人员
|
|
|
|
|
|
+ //获取该部门下的人员, 如果是根部门,不会创建,人员的部门id会使用数据库默认的0
|
|
getDeptUserIdList(companyId, deptId, department.getDepartmentId(), accessToken);
|
|
getDeptUserIdList(companyId, deptId, department.getDepartmentId(), accessToken);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -431,8 +443,6 @@ public class DingDingServiceImpl implements DingDingService {
|
|
if (json.getInteger("errcode") == 0) {
|
|
if (json.getInteger("errcode") == 0) {
|
|
//正确返回的情况
|
|
//正确返回的情况
|
|
JSONArray depts = json.getJSONArray("result");
|
|
JSONArray depts = json.getJSONArray("result");
|
|
- List<Department> innerDeptList = new ArrayList<>();
|
|
|
|
- List<DepartmentDingding> dingdingDeptList = new ArrayList<>();
|
|
|
|
for (int i=0;i<depts.size(); i++) {
|
|
for (int i=0;i<depts.size(); i++) {
|
|
JSONObject dept = depts.getJSONObject(i);
|
|
JSONObject dept = depts.getJSONObject(i);
|
|
DepartmentDingding departmentDingding = new DepartmentDingding();
|
|
DepartmentDingding departmentDingding = new DepartmentDingding();
|
|
@@ -444,11 +454,13 @@ public class DingDingServiceImpl implements DingDingService {
|
|
department.setDepartmentName(dept.getString("name"));
|
|
department.setDepartmentName(dept.getString("name"));
|
|
department.setCompanyId(companyId);
|
|
department.setCompanyId(companyId);
|
|
department.setSuperiorId(parentSysDeptId);
|
|
department.setSuperiorId(parentSysDeptId);
|
|
- departmentMapper.insert(department);
|
|
|
|
- departmentDingding.setSysDeptid(department.getDepartmentId());
|
|
|
|
- departmentDingdingMapper.insert(departmentDingding);
|
|
|
|
- innerDeptList.add(department);
|
|
|
|
- dingdingDeptList.add(departmentDingding);
|
|
|
|
|
|
+ //检查部门是否重复
|
|
|
|
+ Integer count = department.selectCount(new QueryWrapper<Department>().eq("company_id", companyId).eq("department_name", department.getDepartmentName()));
|
|
|
|
+ if (count == 0) {
|
|
|
|
+ departmentMapper.insert(department);
|
|
|
|
+ departmentDingding.setSysDeptid(department.getDepartmentId());
|
|
|
|
+ departmentDingdingMapper.insert(departmentDingding);
|
|
|
|
+ }
|
|
|
|
|
|
//获取该部门下的人员
|
|
//获取该部门下的人员
|
|
// getDeptUserList(companyId, departmentDingding.getDdDeptid(), department.getDepartmentId(), access_token, 0L);
|
|
// getDeptUserList(companyId, departmentDingding.getDdDeptid(), department.getDepartmentId(), access_token, 0L);
|
|
@@ -513,11 +525,11 @@ public class DingDingServiceImpl implements DingDingService {
|
|
user.setDepartmentCascade(convertDepartmentIdToCascade(departmentId));
|
|
user.setDepartmentCascade(convertDepartmentIdToCascade(departmentId));
|
|
}
|
|
}
|
|
//检查用户是否已经存在
|
|
//检查用户是否已经存在
|
|
- if (userMapper.selectCount(new QueryWrapper<User>().eq("dingding_userid", dingdingUserid)) == 0) {
|
|
|
|
|
|
+ if (userMapper.selectCount(new QueryWrapper<User>().eq("dingding_userid", dingdingUserid).eq("company_id", companyId)) == 0) {
|
|
userMapper.insert(user);
|
|
userMapper.insert(user);
|
|
} else {
|
|
} else {
|
|
//更新信息
|
|
//更新信息
|
|
- User oldUser = userMapper.selectList(new QueryWrapper<User>().eq("dingding_userid", dingdingUserid).orderByDesc("create_time")).get(0);
|
|
|
|
|
|
+ User oldUser = userMapper.selectList(new QueryWrapper<User>().eq("dingding_userid", dingdingUserid).eq("company_id", companyId).orderByDesc("create_time")).get(0);
|
|
oldUser.setName(userJson.getString("name"));
|
|
oldUser.setName(userJson.getString("name"));
|
|
oldUser.setDepartmentId(departmentId);
|
|
oldUser.setDepartmentId(departmentId);
|
|
if (oldUser.getRole() != Constant.ROLE_MASTER) {
|
|
if (oldUser.getRole() != Constant.ROLE_MASTER) {
|