|
@@ -491,9 +491,49 @@ public class WeiXinCorpController {
|
|
org.json.JSONObject jsonObject = XML.toJSONObject(sMsg);
|
|
org.json.JSONObject jsonObject = XML.toJSONObject(sMsg);
|
|
log.info("json=="+jsonObject.toString());
|
|
log.info("json=="+jsonObject.toString());
|
|
jsonObject = jsonObject.getJSONObject("xml");
|
|
jsonObject = jsonObject.getJSONObject("xml");
|
|
- if(jsonObject.has("Event") && ("open_approval_change".equals(jsonObject.getString("Event")))){
|
|
|
|
- //审批状态回调通知
|
|
|
|
- System.out.println("审批状态回调通知!");
|
|
|
|
|
|
+ if(jsonObject.has("Event") && ("subscribe".equals(jsonObject.getString("Event")))){
|
|
|
|
+ //成员关注应用事件,发生在该企业已经开通应用的情况下。
|
|
|
|
+ System.out.println("成员关注应用事件!");
|
|
|
|
+ String corpId = jsonObject.getString("ToUserName");
|
|
|
|
+ String corpWxUserId = jsonObject.getString("FromUserName");
|
|
|
|
+ WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
|
|
|
|
+ if (wxCorpInfo != null) {
|
|
|
|
+ //企业存在,生成对应的用户
|
|
|
|
+ Integer companyId = wxCorpInfo.getCompanyId();
|
|
|
|
+ JSONObject userObj = getUserInfo(getCorpAccessToken(wxCorpInfo), corpWxUserId);
|
|
|
|
+ SysRole defaultRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
|
|
|
|
+
|
|
|
|
+ //成功获取到通讯录的个人详情
|
|
|
|
+ Long id = SnowFlake.nextId();
|
|
|
|
+ //通过getUserInfo接口获取到的json key是小写的
|
|
|
|
+ JSONArray department = userObj.getJSONArray("department");
|
|
|
|
+ Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
|
|
|
|
+ Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
|
|
|
|
+ String userId = userObj.getString("userid");
|
|
|
|
+ String openUserId = userObj.getString("open_userid");
|
|
|
|
+ int cnt = userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", openUserId));
|
|
|
|
+ if (cnt == 0) {
|
|
|
|
+ //用户不存在
|
|
|
|
+ User user = new User()
|
|
|
|
+ .setId(id.toString())
|
|
|
|
+ .setRoleId(defaultRole.getId())
|
|
|
|
+ .setRoleName(defaultRole.getRolename())
|
|
|
|
+ .setName(userObj.getString("name"))
|
|
|
|
+ .setPhone(userObj.getString("mobile"))
|
|
|
|
+ .setPassword(MD5Util.getPassword("000000"))
|
|
|
|
+ .setCorpwxUserid(openUserId)
|
|
|
|
+ .setCorpwxRealUserid(corpWxUserId)
|
|
|
|
+ .setJobNumber(openUserId.equals(userId)?null:userId)
|
|
|
|
+ .setColor(ColorUtil.randomColor())
|
|
|
|
+ .setCompanyId(companyId);
|
|
|
|
+ if (sysDept != null) {
|
|
|
|
+ user.setDepartmentId(sysDept.getDepartmentId());
|
|
|
|
+ List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
|
|
|
|
+ user.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
|
|
|
|
+ userMapper.insert(user);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (jsonObject.has("AuthCode")) {
|
|
if (jsonObject.has("AuthCode")) {
|
|
//企业授权通知
|
|
//企业授权通知
|
|
@@ -549,7 +589,7 @@ public class WeiXinCorpController {
|
|
JSONArray department = userObj.getJSONArray("department");
|
|
JSONArray department = userObj.getJSONArray("department");
|
|
Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
|
|
Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
|
|
Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
|
|
Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
|
|
-
|
|
|
|
|
|
+ String userId = userObj.getString("userid");
|
|
User user = new User()
|
|
User user = new User()
|
|
.setId(id.toString())
|
|
.setId(id.toString())
|
|
.setRoleId(defaultRole.getId())
|
|
.setRoleId(defaultRole.getId())
|
|
@@ -559,7 +599,7 @@ public class WeiXinCorpController {
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
.setCorpwxUserid(openUserId)
|
|
.setCorpwxUserid(openUserId)
|
|
.setCorpwxRealUserid(corpWxUserId)
|
|
.setCorpwxRealUserid(corpWxUserId)
|
|
- .setJobNumber(userObj.getString("userid"))
|
|
|
|
|
|
+ .setJobNumber(openUserId.equals(userId)?null:userId)
|
|
.setColor(ColorUtil.randomColor())
|
|
.setColor(ColorUtil.randomColor())
|
|
.setCompanyId(companyId);
|
|
.setCompanyId(companyId);
|
|
if (sysDept != null) {
|
|
if (sysDept != null) {
|
|
@@ -590,7 +630,7 @@ public class WeiXinCorpController {
|
|
JSONArray department = userObj.getJSONArray("department");
|
|
JSONArray department = userObj.getJSONArray("department");
|
|
curUserWXDeptid = getMaxDeptIdFromArray(department);
|
|
curUserWXDeptid = getMaxDeptIdFromArray(department);
|
|
Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
|
|
Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
|
|
-
|
|
|
|
|
|
+ String userId = userObj.getString("userid");
|
|
User user = new User()
|
|
User user = new User()
|
|
.setId(id.toString())
|
|
.setId(id.toString())
|
|
.setRoleId(defaultRole.getId())
|
|
.setRoleId(defaultRole.getId())
|
|
@@ -600,7 +640,7 @@ public class WeiXinCorpController {
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
.setCorpwxUserid(openUserId)
|
|
.setCorpwxUserid(openUserId)
|
|
.setCorpwxRealUserid(corpWxUserId)
|
|
.setCorpwxRealUserid(corpWxUserId)
|
|
- .setJobNumber(userObj.getString("userid"))
|
|
|
|
|
|
+ .setJobNumber(openUserId.equals(userId)?null:userId)
|
|
.setColor(ColorUtil.randomColor())
|
|
.setColor(ColorUtil.randomColor())
|
|
.setCorpwxDeptid(curUserWXDeptid)
|
|
.setCorpwxDeptid(curUserWXDeptid)
|
|
.setCompanyId(companyId);
|
|
.setCompanyId(companyId);
|
|
@@ -688,14 +728,15 @@ public class WeiXinCorpController {
|
|
changeUser.setDepartmentId(sysDept.getDepartmentId());
|
|
changeUser.setDepartmentId(sysDept.getDepartmentId());
|
|
change = true;
|
|
change = true;
|
|
}
|
|
}
|
|
- if (userObj.containsKey("direct_leader") && userObj.getJSONArray("direct_leader").size() > 0) {
|
|
|
|
- String directLeader = userObj.getJSONArray("direct_leader").getString(0);
|
|
|
|
- User leader = userMapper.selectOne(new QueryWrapper<User>().eq("company_id", companyId).eq("corpwx_userid", directLeader));
|
|
|
|
- if (leader != null && !leader.equals(user.getSuperiorId())) {
|
|
|
|
- changeUser.setSuperiorId(leader.getId());
|
|
|
|
- change = true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //暂不处理直属领导
|
|
|
|
+// if (userObj.containsKey("direct_leader") && userObj.getJSONArray("direct_leader").size() > 0) {
|
|
|
|
+// String directLeader = userObj.getJSONArray("direct_leader").getString(0);
|
|
|
|
+// User leader = userMapper.selectOne(new QueryWrapper<User>().eq("company_id", companyId).eq("corpwx_userid", directLeader));
|
|
|
|
+// if (leader != null && !leader.equals(user.getSuperiorId())) {
|
|
|
|
+// changeUser.setSuperiorId(leader.getId());
|
|
|
|
+// change = true;
|
|
|
|
+// }
|
|
|
|
+// }
|
|
if (change) {
|
|
if (change) {
|
|
userMapper.updateById(changeUser);
|
|
userMapper.updateById(changeUser);
|
|
}
|
|
}
|
|
@@ -911,7 +952,7 @@ public class WeiXinCorpController {
|
|
JSONObject authUserInfo = obj.getJSONObject("auth_user_info");
|
|
JSONObject authUserInfo = obj.getJSONObject("auth_user_info");
|
|
data.setAuthUsername(authUserInfo.getString("name"));
|
|
data.setAuthUsername(authUserInfo.getString("name"));
|
|
String userId = authUserInfo.getString("userid");//授权人的userid
|
|
String userId = authUserInfo.getString("userid");//授权人的userid
|
|
-
|
|
|
|
|
|
+ String openUserId = authUserInfo.getString("open_userid");
|
|
//检查公司名称是否存在,按照corpid比对
|
|
//检查公司名称是否存在,按照corpid比对
|
|
WxCorpInfo findCorp = wxCorpInfoMapper.selectById(corpId);
|
|
WxCorpInfo findCorp = wxCorpInfoMapper.selectById(corpId);
|
|
|
|
|
|
@@ -1035,10 +1076,10 @@ public class WeiXinCorpController {
|
|
.setRoleName(managerRole.getRolename())
|
|
.setRoleName(managerRole.getRolename())
|
|
.setName(name)
|
|
.setName(name)
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
- .setCorpwxUserid(userId)
|
|
|
|
|
|
+ .setCorpwxUserid(openUserId)
|
|
.setColor(ColorUtil.randomColor())
|
|
.setColor(ColorUtil.randomColor())
|
|
.setCompanyId(company.getId())
|
|
.setCompanyId(company.getId())
|
|
- .setJobNumber(userId);
|
|
|
|
|
|
+ .setJobNumber(openUserId.equals(userId)?null:userId);
|
|
userMapper.insert(user);
|
|
userMapper.insert(user);
|
|
//todo: 生成初始测试项目及任务
|
|
//todo: 生成初始测试项目及任务
|
|
Project project=new Project();
|
|
Project project=new Project();
|
|
@@ -1128,6 +1169,7 @@ public class WeiXinCorpController {
|
|
JSONObject authUserInfo = obj.getJSONObject("auth_user_info");
|
|
JSONObject authUserInfo = obj.getJSONObject("auth_user_info");
|
|
data.setAuthUsername(authUserInfo.getString("name"));
|
|
data.setAuthUsername(authUserInfo.getString("name"));
|
|
String userId = authUserInfo.getString("userid");//授权人的userid
|
|
String userId = authUserInfo.getString("userid");//授权人的userid
|
|
|
|
+ String openUserId = authUserInfo.getString("open_userid");
|
|
//检查该授权人是否已经存在
|
|
//检查该授权人是否已经存在
|
|
if (userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", userId)) == 0) {
|
|
if (userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", userId)) == 0) {
|
|
JSONObject userDetail = getUserInfo(curCorpAccessToken, userId);
|
|
JSONObject userDetail = getUserInfo(curCorpAccessToken, userId);
|
|
@@ -1153,7 +1195,7 @@ public class WeiXinCorpController {
|
|
.setCorpwxUserid(userId)
|
|
.setCorpwxUserid(userId)
|
|
.setColor(ColorUtil.randomColor())
|
|
.setColor(ColorUtil.randomColor())
|
|
.setCompanyId(companyId)
|
|
.setCompanyId(companyId)
|
|
- .setJobNumber(userId);//工号就是企业微信的用户ID
|
|
|
|
|
|
+ .setJobNumber(openUserId.equals(userId)?null:userId);//工号就是企业微信的用户ID
|
|
userMapper.insert(user);
|
|
userMapper.insert(user);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1673,7 +1715,7 @@ public class WeiXinCorpController {
|
|
.setCorpwxRealUserid(curUserid)
|
|
.setCorpwxRealUserid(curUserid)
|
|
.setColor(ColorUtil.randomColor())
|
|
.setColor(ColorUtil.randomColor())
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
- .setJobNumber(curUserid)
|
|
|
|
|
|
+ .setJobNumber(openUserid.equals(curUserid)?null:curUserid)
|
|
.setCorpwxDeptid(maxDeptId);
|
|
.setCorpwxDeptid(maxDeptId);
|
|
allCorpWxUserList.add(user);
|
|
allCorpWxUserList.add(user);
|
|
}
|
|
}
|
|
@@ -1729,7 +1771,7 @@ public class WeiXinCorpController {
|
|
.setCorpwxUserid(openUserid)
|
|
.setCorpwxUserid(openUserid)
|
|
.setCorpwxRealUserid(curUserid)
|
|
.setCorpwxRealUserid(curUserid)
|
|
.setColor(ColorUtil.randomColor())
|
|
.setColor(ColorUtil.randomColor())
|
|
- .setJobNumber(curUserid)
|
|
|
|
|
|
+ .setJobNumber(openUserid.equals(curUserid)?null:curUserid)
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
.setPassword(MD5Util.getPassword("000000"))
|
|
.setCorpwxDeptid(curDept.getCorpwxDeptid());
|
|
.setCorpwxDeptid(curDept.getCorpwxDeptid());
|
|
allCorpWxUserList.add(user);
|
|
allCorpWxUserList.add(user);
|
|
@@ -1761,7 +1803,7 @@ public class WeiXinCorpController {
|
|
if (first.isPresent()) {
|
|
if (first.isPresent()) {
|
|
User oldUser = first.get();
|
|
User oldUser = first.get();
|
|
User changeUser = new User();
|
|
User changeUser = new User();
|
|
- if (!userItem.getJobNumber().equals(oldUser.getJobNumber())) {
|
|
|
|
|
|
+ if (userItem.getJobNumber() != null && !userItem.getJobNumber().equals(oldUser.getJobNumber())) {
|
|
changeUser.setId(oldUser.getId());
|
|
changeUser.setId(oldUser.getId());
|
|
changeUser.setJobNumber(userItem.getJobNumber());
|
|
changeUser.setJobNumber(userItem.getJobNumber());
|
|
}
|
|
}
|
|
@@ -2081,7 +2123,7 @@ public class WeiXinCorpController {
|
|
if (first.isPresent()) {
|
|
if (first.isPresent()) {
|
|
User oldUser = first.get();
|
|
User oldUser = first.get();
|
|
User changeUser = new User();
|
|
User changeUser = new User();
|
|
- if (!userItem.getJobNumber().equals(oldUser.getJobNumber())) {
|
|
|
|
|
|
+ if (userItem.getJobNumber() != null && !userItem.getJobNumber().equals(oldUser.getJobNumber())) {
|
|
changeUser.setId(oldUser.getId());
|
|
changeUser.setId(oldUser.getId());
|
|
changeUser.setJobNumber(userItem.getJobNumber());
|
|
changeUser.setJobNumber(userItem.getJobNumber());
|
|
}
|
|
}
|