diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Increment.java b/src/main/java/com/dsideal/FengHuang/DingTalk/Increment.java index 244c82a..ad4a2e5 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Increment.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Increment.java @@ -48,8 +48,8 @@ public class Increment { //2、人员 Progress.syncPerson(accessToken, rOrg); -// //3、人员角色关系 -// dt = Progress.getLastSyncTime("t_sys_person_role"); + //3、人员角色关系 + Progress.syncRolePerson(accessToken, rOrg); CommonUtil.Print("恭喜,所有操作成功完成!"); } diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Sql/t_dingtalk_progress.sql b/src/main/java/com/dsideal/FengHuang/DingTalk/Sql/t_dingtalk_progress.sql new file mode 100644 index 0000000..cb7657e --- /dev/null +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Sql/t_dingtalk_progress.sql @@ -0,0 +1,37 @@ +/* + Navicat Premium Data Transfer + + Source Server : 10.10.14.199 + Source Server Type : MySQL + Source Server Version : 100123 (10.1.23-MariaDB) + Source Host : 10.10.14.199:22066 + Source Schema : dsideal_db + + Target Server Type : MySQL + Target Server Version : 100123 (10.1.23-MariaDB) + File Encoding : 65001 + + Date: 15/06/2023 11:38:49 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for t_dingtalk_progress +-- ---------------------------- +DROP TABLE IF EXISTS `t_dingtalk_progress`; +CREATE TABLE `t_dingtalk_progress` ( + `table_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表名', + `sync_last_update_time` timestamp NULL DEFAULT NULL COMMENT '最后同步时间戳', + PRIMARY KEY (`table_name`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of t_dingtalk_progress +-- ---------------------------- +INSERT INTO `t_dingtalk_progress` VALUES ('t_base_organization', '2023-06-15 11:38:16'); +INSERT INTO `t_dingtalk_progress` VALUES ('t_base_person', '2023-06-15 11:38:24'); +INSERT INTO `t_dingtalk_progress` VALUES ('t_sys_person_role', '2023-06-15 11:38:34'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/Model.java b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/Model.java index 558d5b6..fbcd878 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/Model.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/Model.java @@ -97,6 +97,11 @@ public class Model { return Db.find(sql, org_id, dt); } + public static List getIncrementRolePerson(int org_id, Date dt) { + String sql = "select t1.person_id,t1.role_id,t1.b_use,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=? and t1.last_update_time>?"; + return Db.find(sql, org_id, dt); + } + public static long getDingTalkOrgId(int org_id) { String sql = "select dingtalk_dept_id from t_base_organization where org_id=?"; return Db.findFirst(sql, org_id).getLong("dingtalk_dept_id"); diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/OrgPerson.java b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/OrgPerson.java index 6f8d650..3dff99a 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/OrgPerson.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/OrgPerson.java @@ -107,7 +107,6 @@ public class OrgPerson { } } - public static JSONObject getDeptInfo(String access_token, long deptId) { JSONObject jo; try { diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/Progress.java b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/Progress.java index cb909e3..1b59d02 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/Progress.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/Progress.java @@ -10,7 +10,6 @@ import java.util.List; public class Progress { - public static void finishInit() { List list = Db.findAll("t_dingtalk_progress"); for (Record record : list) { @@ -56,20 +55,20 @@ public class Progress { for (Record record : list) { String person_name = record.getStr("person_name"); int b_use = record.getInt("b_use"); - int org_id= record.getInt("org_id"); - int person_id=record.getInt("person_id"); - String tel=record.getStr("tel"); + int org_id = record.getInt("org_id"); + int person_id = record.getInt("person_id"); + String tel = record.getStr("tel"); if (record.get("dingtalk_person_id") == null) { //新增 long dingtalk_dept_id = Model.getDingTalkOrgId(org_id); tel = DingTalkCommon.getLawfulTel(tel); - OrgPerson.createPerson(accessToken,dingtalk_dept_id,person_id,person_name,tel,"教师"); + OrgPerson.createPerson(accessToken, dingtalk_dept_id, person_id, person_name, tel, "教师"); CommonUtil.Print("新增人员:" + person_name); } else { int dingtalk_dept_id = record.getInt("dingtalk_dept_id"); if (b_use == 1) { //修改 - OrgPerson.updatePerson(accessToken,person_id,person_name); + OrgPerson.updatePerson(accessToken, person_id, person_name); CommonUtil.Print("修改人员:" + person_name); } else { //删除 @@ -79,4 +78,23 @@ public class Progress { } } } + + public static void syncRolePerson(String accessToken, Record rOrg) throws ApiException { + Date dt = Model.getLastSyncTime("t_sys_person_role"); + //找出变更信息 + List list = Model.getIncrementRolePerson(rOrg.getInt("org_id"), dt); + for (Record record : list) { + long dingtalk_role_id = record.getLong("dingtalk_role_id"); + int b_use = record.getInt("b_use"); + int person_id = record.getInt("person_id"); + + if (b_use == 1) { + //新增 + RolePerson.addRolePerson(accessToken, String.valueOf(dingtalk_role_id), String.valueOf(person_id)); + } else { + //删除 + RolePerson.delRolePerson(accessToken, String.valueOf(dingtalk_role_id), String.valueOf(person_id)); + } + } + } } diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/RolePerson.java b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/RolePerson.java index 11073af..92f5b93 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/RolePerson.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/RolePerson.java @@ -65,7 +65,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");