diff --git a/src/main/java/UnitTest/TestDingTalk.java b/src/main/java/UnitTest/TestDingTalk.java index ec720ca..440966c 100644 --- a/src/main/java/UnitTest/TestDingTalk.java +++ b/src/main/java/UnitTest/TestDingTalk.java @@ -1,11 +1,10 @@ package UnitTest; import com.alibaba.druid.filter.stat.StatFilter; +import com.dsideal.FengHuang.DingTalk.Common; import com.dsideal.FengHuang.DingTalk.Model; -import com.dsideal.FengHuang.DingTalk.OrgPerson; import com.dsideal.FengHuang.DingTalk.RolePerson; import com.dsideal.FengHuang.Util.CommonUtil; -import com.dsideal.FengHuang.DingTalk.Common; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.Record; @@ -99,6 +98,17 @@ public class TestDingTalk { //同步角色 //RolePerson.syncRole(accessToken, groupId); + //获取钉钉侧指定角色下人员信息 + RolePerson.getRolePersonList(accessToken, 3780868223L, 0); + + for (int i = 0; i < RolePerson.rolePersonList.size(); i++) { + System.out.println(RolePerson.rolePersonList.get(i)); + } + //获取云平台侧指定角色下人员信息 + List list2 = Model.getRolePersonReleation(); + + //尝试同步两个人员信息 + CommonUtil.Print("恭喜,所有操作成功完成!"); } diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Model.java b/src/main/java/com/dsideal/FengHuang/DingTalk/Model.java index 2b75b02..fbf1b0b 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Model.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Model.java @@ -58,8 +58,15 @@ public class Model { return Db.find(sql); } - public static void writeDingTalkRoleId(int role_id,long dt_role_id){ + public static void writeDingTalkRoleId(int role_id, long dt_role_id) { String sql = "update t_im_role set dingtalk_role_id=? where role_id=?"; Db.update(sql, dt_role_id, role_id); } + + // 需要同步哪些人员角色信息 + public static List getRolePersonReleation() { + String sql = "select t1.person_id,t1.role_id,t2.dingtalk_role_id from t_sys_person_role as t1 inner join t_im_role as t2 on t1.role_id=t2.role_id where t1.bureau_id=?"; + List list=Db.find(sql); + return list; + } } diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/RolePerson.java b/src/main/java/com/dsideal/FengHuang/DingTalk/RolePerson.java index 574467e..2d42509 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/RolePerson.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/RolePerson.java @@ -1,7 +1,5 @@ package com.dsideal.FengHuang.DingTalk; -import cn.binarywang.tools.generator.ChineseMobileNumberGenerator; -import cn.hutool.core.util.PhoneUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.dingtalk.api.DefaultDingTalkClient; @@ -9,8 +7,6 @@ import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.request.*; import com.dingtalk.api.response.*; import com.dsideal.FengHuang.Util.CommonUtil; -import com.jfinal.kit.StrKit; -import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.taobao.api.ApiException; @@ -36,14 +32,6 @@ public class RolePerson { insert into `t_im_role` VALUES (4,'普通教师',NULL); TODO //让产品经理想好,加入到此表中,表示需要与IM钉钉系统对接的角色 - - -- 需要同步哪些人员角色信息 - select * from t_sys_person_role where bureau_id=? and role_id in (select role_id from t_im_role); - - - select t1.person_id,t1.role_id,t2.dingtalk_role_id from t_sys_person_role as t1 - inner join t_im_role as t2 on t1.role_id=t2.role_id - where t1.bureau_id=2002543 */ //创建用户组,这个概念似乎不重要,可以手动创建即可 @@ -53,8 +41,6 @@ public class RolePerson { req.setName(group_name); OapiRoleAddrolegroupResponse rsp = client.execute(req, access_token); System.out.println(rsp.getBody()); - //创建成功后,需要将角色组信息记录到自己的表中,钉钉未提供查询有哪些角色组的API - //groupId --> write to --->database } /** @@ -108,13 +94,20 @@ public class RolePerson { System.out.println(rsp.getBody()); } - public static void delGroupRole(String access_token, long group_id) throws ApiException { + public static void clearGroupRole(String access_token, long group_id) throws ApiException { List list = getRoleList(access_token, group_id); for (int i = 0; i < list.size(); i++) { delRole(access_token, list.get(i).getLong("role_id")); } } + /** + * 功能:同步角色信息 + * + * @param access_token + * @param group_id + * @throws ApiException + */ public static void syncRole(String access_token, long group_id) throws ApiException { //1、钉钉侧有哪些角色 List listA = getRoleList(access_token, group_id); @@ -149,10 +142,11 @@ public class RolePerson { //回写 Model.writeDingTalkRoleId(listB.get(i).getInt("role_id"), dt_role_id); - CommonUtil.Print("成功创建角色:"+listB.get(i).getStr("role_name")); + CommonUtil.Print("成功创建角色:" + listB.get(i).getStr("role_name")); } } //5、在A也在B,看看是不是角色名称需要修改 + //TODO,因为角色名称不般不随意变化,不写这块代码也是OK的 } /** @@ -162,21 +156,36 @@ public class RolePerson { * @param role_id * @throws ApiException */ - public static List getRolePersonList(String access_token, long role_id) throws ApiException { + public static List rolePersonList = new ArrayList<>(); + public static long SZ = 2l; + + public static void getRolePersonList(String access_token, long role_id, long start) throws ApiException { DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/role/simplelist"); - List res = new ArrayList<>(); - long start = 0; - while (true) { - OapiRoleSimplelistRequest req = new OapiRoleSimplelistRequest(); - req.setRoleId(role_id); - req.setSize(20L); - req.setOffset(start); - OapiRoleSimplelistResponse rsp = client.execute(req, access_token); - JSONObject jo = JSONObject.parseObject(rsp.getBody()); - System.out.println(jo); - break; + OapiRoleSimplelistRequest req = new OapiRoleSimplelistRequest(); + req.setRoleId(role_id); + req.setSize(SZ); + req.setOffset(start); + OapiRoleSimplelistResponse rsp = client.execute(req, access_token); + JSONObject jo = JSONObject.parseObject(rsp.getBody()); + + JSONArray ja = jo.getJSONObject("result").getJSONArray("list"); + for (int i = 0; i < ja.size(); i++) { + Record record = new Record(); + String name = ((JSONObject) ja.get(i)).getString("name"); + String userid = ((JSONObject) ja.get(i)).getString("userid"); + record.set("person_name", name); + record.set("person_id", userid); + rolePersonList.add(record); } - return res; + + if (jo.getJSONObject("result").getBoolean("hasMore")) { + getRolePersonList(access_token, role_id, start + SZ); + } + } + + public static void syncRolePersonReleation() { + //getRolePersonList(); + //Model.getRolePersonReleation(); } /**