diff --git a/ccDangJianExamForOpenGauss.iml b/ccDangJianExamForOpenGauss.iml new file mode 100644 index 0000000..0758c9d --- /dev/null +++ b/ccDangJianExamForOpenGauss.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/Tools/TestUnit/ModifyIdCardAndTel.java b/src/main/java/Tools/TestUnit/ModifyIdCardAndTel.java index fcaa416..4b94b48 100644 --- a/src/main/java/Tools/TestUnit/ModifyIdCardAndTel.java +++ b/src/main/java/Tools/TestUnit/ModifyIdCardAndTel.java @@ -1,6 +1,5 @@ package Tools.TestUnit; -import com.dsideal.FengHuang.Util.MysqlAesUtil; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.Db; diff --git a/src/main/java/Tools/mysql/InitOrgPerson.java b/src/main/java/Tools/mysql/InitOrgPerson.java index e42f45d..bd2ca26 100644 --- a/src/main/java/Tools/mysql/InitOrgPerson.java +++ b/src/main/java/Tools/mysql/InitOrgPerson.java @@ -1,7 +1,6 @@ package Tools.mysql; import com.dsideal.FengHuang.Util.CommonUtil; -import com.dsideal.FengHuang.Util.MysqlAesUtil; import com.dsideal.FengHuang.Util.PkUtil; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; diff --git a/src/main/java/Tools/mysql/clearDataBase.java b/src/main/java/Tools/mysql/clearDataBase.java index a878ab5..8a8ff0a 100644 --- a/src/main/java/Tools/mysql/clearDataBase.java +++ b/src/main/java/Tools/mysql/clearDataBase.java @@ -1,7 +1,6 @@ package Tools.mysql; import com.dsideal.FengHuang.Util.CommonUtil; -import com.dsideal.FengHuang.Util.MysqlAesUtil; import com.dsideal.FengHuang.Util.PkUtil; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Full.java b/src/main/java/com/dsideal/FengHuang/DingTalk/Full.java index 382ed1e..2adf56c 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Full.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Full.java @@ -28,21 +28,21 @@ public class Full { //OrgPerson.delAllDept(accessToken, rOrg); //初始化组织机构 - //OrgPerson.InitOrg(accessToken, rOrg); +// OrgPerson.InitOrg(accessToken, rOrg); //同步人员 - OrgPerson.initPerson(accessToken, rOrg,10);//这里限定了上限人数为10 +// OrgPerson.initPerson(accessToken, rOrg,10);//这里限定了上限人数为10 //初始化角色组 //long groupId = RolePerson.createRoleGroup(accessToken, "义务教育阶段角色组"); //初始化角色 - //RolePerson.initRole(accessToken, groupId); +// RolePerson.initRole(accessToken, groupId); //同步人员角色信息 - //RolePerson.initPersonRole(accessToken, rOrg); + RolePerson.initPersonRole(accessToken, rOrg); // 记录全量同步完成时间 - Model.finishInit(); +// Model.finishInit(); CommonUtil.Print("恭喜,所有操作成功完成!"); } diff --git a/src/main/java/com/dsideal/FengHuang/DingTalk/Sql/对现有表结构的修改.sql b/src/main/java/com/dsideal/FengHuang/DingTalk/Sql/对现有表结构的修改.sql index 827ffae..4152554 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Sql/对现有表结构的修改.sql +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Sql/对现有表结构的修改.sql @@ -1,5 +1,10 @@ ALTER TABLE `dsideal_db`.`t_base_organization` ADD COLUMN `dingtalk_dept_id` BIGINT NULL COMMENT '钉钉架构中机构的代码' AFTER `zydz`; -ALTER TABLE `dsideal_db`.`t_base_person` - ADD COLUMN `dingtalk_person_id` varchar(255) NULL COMMENT '钉钉架构中人员ID' AFTER `pay_rate`; +--ALTER TABLE `dsideal_db`.`t_base_person` +-- ADD COLUMN `dingtalk_person_id` varchar(255) NULL COMMENT '钉钉架构中人员ID' AFTER `pay_rate`; + + + + +-- 部门和角色ID用的是钉钉的,人员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 edb61c1..69395f2 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/OrgPerson.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/OrgPerson.java @@ -29,7 +29,14 @@ public class OrgPerson { req.setOrder(orderId); req.setName(deptName); if (isRoot) { + //是否限制本部门成员查看通讯录: + //true:开启限制。开启后本部门成员只能看到限定范围内的通讯录 + //false(默认值):不限制 req.setOuterDept(true); + //本部门成员是否只能看到所在部门及下级部门通讯录: + // true:只能看到所在部门及下级部门通讯录 + // false:不能查看所有通讯录,在通讯录中仅能看到自己 + //当outer_dept为true时,此参数生效。 req.setOuterDeptOnlySelf(true); } OapiV2DepartmentCreateResponse rsp = client.execute(req, access_token); @@ -238,7 +245,7 @@ public class OrgPerson { createPerson(accessToken, deptId, person_id, person_name, tel, "教师"); DingTalkCommon.WriteActionTimes(); //回写标识 - Model.writePersonDingTalkId(person_id); +// Model.writePersonDingTalkId(person_id); CommonUtil.Print("成功加入人员:" + person_name); } } 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 9ff9f69..2ce6b13 100644 --- a/src/main/java/com/dsideal/FengHuang/DingTalk/Util/RolePerson.java +++ b/src/main/java/com/dsideal/FengHuang/DingTalk/Util/RolePerson.java @@ -11,6 +11,7 @@ import com.jfinal.plugin.activerecord.Record; import com.taobao.api.ApiException; import java.util.*; +import java.util.stream.Collectors; public class RolePerson { @@ -88,11 +89,26 @@ public class RolePerson { public static void initPersonRole(String accessToken, Record rOrg) throws ApiException { //获取云平台侧指定角色下人员信息 List 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(); + int batchSize = 20; + for (int i = 0; i < listPeronRole.size(); i += batchSize) { + int end = Math.min(i + batchSize, listPeronRole.size()); + List batch = listPeronRole.subList(i, end); + // 在这里处理batch + processBatch(batch); } +// 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(); +// } + } + + private static void processBatch(List batch) { + String personIds = batch.stream().map(record -> record.getStr("person_id")).collect(Collectors.joining(",")); + String roleIds = batch.stream().map(record -> record.getStr("dingtalk_role_id")).collect(Collectors.joining(",")); + + System.out.println(personIds); + System.out.println(roleIds); } } diff --git a/src/main/java/com/dsideal/FengHuang/LoginPerson/Model/LoginPersonModel.java b/src/main/java/com/dsideal/FengHuang/LoginPerson/Model/LoginPersonModel.java index 62ee9f3..8e953ec 100644 --- a/src/main/java/com/dsideal/FengHuang/LoginPerson/Model/LoginPersonModel.java +++ b/src/main/java/com/dsideal/FengHuang/LoginPerson/Model/LoginPersonModel.java @@ -2,8 +2,6 @@ package com.dsideal.FengHuang.LoginPerson.Model; import com.dsideal.FengHuang.Util.CommonUtil; import com.dsideal.FengHuang.Util.IpUtil; -import com.dsideal.FengHuang.Util.MysqlAesUtil; -import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; diff --git a/src/main/java/com/dsideal/FengHuang/Student/Model/StudentModel.java b/src/main/java/com/dsideal/FengHuang/Student/Model/StudentModel.java index 03fa1b8..da10c45 100644 --- a/src/main/java/com/dsideal/FengHuang/Student/Model/StudentModel.java +++ b/src/main/java/com/dsideal/FengHuang/Student/Model/StudentModel.java @@ -2,7 +2,6 @@ package com.dsideal.FengHuang.Student.Model; import com.dsideal.FengHuang.Util.CommonUtil; import com.dsideal.FengHuang.Util.IpUtil; -import com.dsideal.FengHuang.Util.MysqlAesUtil; import com.dsideal.FengHuang.Util.PkUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; diff --git a/src/main/java/com/dsideal/FengHuang/Teacher/Model/TeacherModel.java b/src/main/java/com/dsideal/FengHuang/Teacher/Model/TeacherModel.java index 8fbe5d9..a94ce90 100644 --- a/src/main/java/com/dsideal/FengHuang/Teacher/Model/TeacherModel.java +++ b/src/main/java/com/dsideal/FengHuang/Teacher/Model/TeacherModel.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.dsideal.FengHuang.Util.CommonUtil; import com.dsideal.FengHuang.Util.IpUtil; -import com.dsideal.FengHuang.Util.MysqlAesUtil; import com.dsideal.FengHuang.Util.PkUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; diff --git a/src/main/java/com/dsideal/FengHuang/Util/Base64Util.java b/src/main/java/com/dsideal/FengHuang/Util/Base64Util.java deleted file mode 100644 index 7394e8a..0000000 --- a/src/main/java/com/dsideal/FengHuang/Util/Base64Util.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.dsideal.FengHuang.Util; - -import org.apache.commons.codec.binary.Base64; -import sun.misc.BASE64Encoder; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -public class Base64Util { - public static String imageToBase64(BufferedImage bufferedImage) { - ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流 - try { - ImageIO.write(bufferedImage, "jpg", baos);//写入流中 - } catch (IOException e) { - e.printStackTrace(); - } - byte[] bytes = baos.toByteArray();//转换成字节 - BASE64Encoder encoder = new BASE64Encoder(); - String png_base64 = encoder.encodeBuffer(bytes).trim();//转换成base64串 - png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n - return "data:image/jpg;base64," + png_base64; - } - /** - * 文件File类型转BASE64 - * - * @param file - * @return - */ - public static String fileToBase64(File file) { - return "data:image/png;base64," + Base64.encodeBase64String(fileToByte(file)); - } - - /** - * 文件File类型转byte[] - * - * @param file - * @return - */ - private static byte[] fileToByte(File file) { - byte[] fileBytes = null; - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - fileBytes = new byte[(int) file.length()]; - fis.read(fileBytes); - fis.close(); - } catch (Exception e) { - e.printStackTrace(); - } - return fileBytes; - } -} \ No newline at end of file diff --git a/src/main/java/com/dsideal/FengHuang/Util/MysqlAesUtil.java b/src/main/java/com/dsideal/FengHuang/Util/MysqlAesUtil.java deleted file mode 100644 index eff8410..0000000 --- a/src/main/java/com/dsideal/FengHuang/Util/MysqlAesUtil.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.dsideal.FengHuang.Util; - -import com.jfinal.kit.PropKit; -import com.jfinal.log.Log; -import sun.misc.BASE64Decoder; -import sun.misc.BASE64Encoder; - -import javax.crypto.Cipher; -import javax.crypto.spec.SecretKeySpec; -@SuppressWarnings("unchecked") -public class MysqlAesUtil { - //在独立的main函数中,使用下面的方式进行声明logback对象 - private static Log log = Log.getLog(MysqlAesUtil.class); - /** - * 功能:调用默认的密码进行加密 - * 作者:黄海 - * 时间:2019-01-07 - * @param sSrc - * @return - * @throws Exception - */ - public static String Encrypt(String sSrc) throws Exception - { - String cKey=PropKit.get("AesPwd"); - return Encrypt(sSrc,cKey); - } - /** - * 功能:调用默认的密码进行解密 - * 作者:黄海 - * 时间:2019-01-07 - * @param sSrc - * @return - */ - public static String Decrypt(String sSrc) { - String cKey=PropKit.get("AesPwd"); - return Decrypt(sSrc,cKey); - } - // 加密 - private static String Encrypt(String sSrc, String sKey) throws Exception { - if (sKey == null) { - log.info("Key为空null"); - return null; - } - // 判断Key是否为16位 - if (sKey.length() != 16) { - log.info("Key长度不是16位"); - return null; - } - byte[] raw = sKey.getBytes("utf-8"); - SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); - Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式" - cipher.init(Cipher.ENCRYPT_MODE, skeySpec); - byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8")); - return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。 - } - - // 解密 - private static String Decrypt(String sSrc, String sKey) { - try { - // 判断Key是否正确 - if (sKey == null) { - log.info("Key为空null"); - return null; - } - // 判断Key是否为16位 - if (sKey.length() != 16) { - log.info("Key长度不是16位"); - return null; - } - byte[] raw = sKey.getBytes("utf-8"); - SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); - Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); - cipher.init(Cipher.DECRYPT_MODE, skeySpec); - byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);//先用base64解密 - try { - byte[] original = cipher.doFinal(encrypted1); - String originalString = new String(original,"utf-8"); - return originalString; - } catch (Exception e) { - log.error(e.toString()); - return sSrc; - } - } catch (Exception ex) { - log.error(ex.toString()); - return sSrc; - } - } -} \ No newline at end of file