main
黄海 2 years ago
parent 5d0b1aeb00
commit 5995ee0c77

@ -2,6 +2,7 @@ package com.dsideal.FengHuang.DingTalk;
import com.dsideal.FengHuang.DingTalk.Util.DingTalkCommon;
import com.dsideal.FengHuang.DingTalk.Util.Model;
import com.dsideal.FengHuang.DingTalk.Util.OrgPerson;
import com.dsideal.FengHuang.DingTalk.Util.RolePerson;
import com.dsideal.FengHuang.Util.CommonUtil;
import com.jfinal.kit.PropKit;
@ -11,8 +12,6 @@ import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.redis.RedisPlugin;
import java.util.List;
public class Init {
public static void main(String[] args_) throws Exception {
@ -36,34 +35,29 @@ public class Init {
String accessToken = DingTalkCommon.getAccessToken(appKey, appSecret);
//同步钉钉与云平台中部门信息
String orgName = "长春市东光学校";
String orgName = "103中学";
Record rOrg = Model.getOrgByOrgName(orgName);
//开发测试时专用,批量删除人员与组织机构
// Model.fillDeptListByDataBase(rOrg);//从数据库中获取最新的部门列表(已与钉钉匹配完毕)
// OrgPerson.delBureauPerson(accessToken,rOrg);
// OrgPerson.delAllDept(accessToken);
//Model.fillDeptListByDataBase(rOrg);//从数据库中获取最新的部门列表(已与钉钉匹配完毕)
//OrgPerson.delBureauPerson(accessToken,rOrg);
//OrgPerson.delAllDept(accessToken);
//初始化组织机构【需提前手动删除此学校及下属部门】
//OrgPerson.InitOrg(accessToken, rOrg);
//同步人员
Model.fillDeptListByDataBase(rOrg);//从数据库中获取最新的部门列表(已与钉钉匹配完毕)
//OrgPerson.initPerson(accessToken, rOrg);
//创建角色组【执行一次即可】
// 手动删除原有的职务等角色组,执行下面的语句,并记录返回的角色组值---> 3786695368
//RolePerson.createRoleGroup(accessToken, "义务教育阶段角色组");
long groupId = 3786695368L;
//Model.fillDeptListByDataBase(rOrg);//从数据库中获取最新的部门列表(已与钉钉匹配完毕)
//OrgPerson.initPerson(accessToken, rOrg,10);//这里限定了上限人数为10
//初始化角色组
//long groupId = RolePerson.createRoleGroup(accessToken, "义务教育阶段角色组");
//初始化角色
RolePerson.initRole(accessToken, groupId);
//RolePerson.initRole(accessToken, groupId);
//同步人员角色信息
//RolePerson.initPersonRole(accessToken, rOrg);
//获取云平台侧指定角色下人员信息
List<Record> list2 = Model.getRolePersonReleation();
CommonUtil.Print("恭喜,所有操作成功完成!");
}
}

@ -156,12 +156,6 @@ public class DingTalkCommon {
sql = "select remain_count from t_dingtalk_actioncount where year=? and month=?";
Record record = Db.findFirst(sql, year, month);
int remain_count = record.getInt("remain_count");
int seconds = 2;
CommonUtil.Print("钉钉本月剩余API调用次数" + remain_count + ",为防止调用过于频繁,将休息" + seconds + "秒后继续操作!");
try {
Thread.sleep(seconds * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
CommonUtil.Print("钉钉本月剩余API调用次数" + remain_count + "");
}
}

@ -10,7 +10,7 @@ import com.jfinal.plugin.druid.DruidPlugin;
public class FillRemainCount {
public static void main(String[] args) {
PropKit.use("dingtalk.properties");
PropKit.use("dingtalk_dalian.properties");
DruidPlugin druid = DingTalkCommon.createDruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim(), PropKit.get("driverClassName"));
druid.start();

@ -58,14 +58,16 @@ public class Model {
}
public static void writeDingTalkRoleId(int role_id, long dt_role_id) {
String sql = "update t_im_role set dingtalk_role_id=? where role_id=?";
String sql = "update t_dingtalk_role set dingtalk_role_id=? where role_id=?";
Db.update(sql, dt_role_id, role_id);
}
// 需要同步哪些人员角色信息
public static List<Record> getRolePersonReleation() {
String sql = "select t1.person_id,t1.role_id,t2.dingtalk_role_id from t_sys_person_role as t1 inner join t_dingtalk_role as t2 on t1.role_id=t2.role_id where t1.bureau_id=?";
List<Record> list=Db.find(sql);
public static List<Record> getRolePersonReleation(Record rOrg) {
String sql = "select t1.person_id,t2.dingtalk_role_id,t3.bureau_id from t_sys_person_role as t1 inner join t_dingtalk_role as t2 on t1.role_id=t2.role_id " +
"inner join t_base_person as t3 on t1.person_id=t3.person_id " +
" where t3.bureau_id=? and t3.b_use=1";
List<Record> list=Db.find(sql,rOrg.getInt("org_id"));
return list;
}
}

@ -137,7 +137,7 @@ public class OrgPerson {
//这个部门是在哪个部门下的
long dingTalkParentDeptId = 1;
if (parentId > 0) dingTalkParentDeptId = Model.getDtDeptId(parentId);
long dt_dept_id = createDept(accessToken, org_name, dingTalkParentDeptId, sId, false);
long dt_dept_id = createDept(accessToken, org_name, dingTalkParentDeptId, sId, parentId == -1);
Model.writeDtDeptId(org_id, String.valueOf(dt_dept_id));
CommonUtil.Print("成功创建部门:" + org_name);
}
@ -239,7 +239,7 @@ public class OrgPerson {
* @param rOrg
* @throws ApiException
*/
public static void initPerson(String accessToken, Record rOrg) throws ApiException {
public static void initPerson(String accessToken, Record rOrg, int limit) throws ApiException {
int bureauId = rOrg.getInt("org_id");
//云平台
List<Record> list = Model.getDeptPerson(bureauId);
@ -247,7 +247,7 @@ public class OrgPerson {
for (Record record : list) {
//控制一下人员数量,防止钉钉的版本问题造成人员添加失败
cnt++;
if (cnt > 10) break;
if (limit > 0 && cnt > limit) break;
// 增加
String person_id = record.getStr("person_id");
String person_name = record.getStr("person_name");

@ -15,12 +15,15 @@ import java.util.*;
public class RolePerson {
//创建用户组,这个概念似乎不重要,可以手动创建即可
public static void createRoleGroup(String access_token, String group_name) throws ApiException {
public static long createRoleGroup(String access_token, String group_name) throws ApiException {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/role/add_role_group");
OapiRoleAddrolegroupRequest req = new OapiRoleAddrolegroupRequest();
req.setName(group_name);
OapiRoleAddrolegroupResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());
JSONObject jo = JSONObject.parseObject(rsp.getBody());
long groupId = jo.getLong("groupId");
return groupId;
}
public static long createRole(String access_token, String role_name, long group_id) throws ApiException {
@ -63,7 +66,6 @@ public class RolePerson {
}
public static void addRolePerson(String accessToken, String role_id, String ids) throws ApiException {
//一次最多20个人员
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/role/addrolesforemps");
@ -83,4 +85,15 @@ public class RolePerson {
System.out.println(rsp.getBody());
}
public static void initPersonRole(String accessToken, Record rOrg) throws ApiException {
//获取云平台侧指定角色下人员信息
List<Record> listPeronRole = Model.getRolePersonReleation(rOrg);
for (Record record : listPeronRole) {
long dingtalk_role_id = record.getLong("dingtalk_role_id");
int person_id = record.getInt("person_id");
RolePerson.addRolePerson(accessToken, String.valueOf(dingtalk_role_id), String.valueOf(person_id));
DingTalkCommon.WriteActionTimes();
}
}
}

Loading…
Cancel
Save