pruple_boy 1 年之前
父節點
當前提交
139c8c1084

+ 9 - 3
mjava-aiwei/src/main/java/com/malk/aiwei/service/impl/AWImplClient.java

@@ -1267,16 +1267,22 @@ public class AWImplClient implements AWClint {
                     List<Map> members_t = Arrays.asList(UtilMap.map("type, id", "USER", ddConf.getOperator()));
                     ddClient_storage.updateDentryPermissions(ddClient.getAccessToken(), ddr_dentry.getDentryUuid(), creatorId_t, "EDITOR", members_t, null);
                 } catch (McException e) {
-                    log.error(e.getMessage(), e);
                     // ppExt: 若是创建人权限被管理员拿走, 会导致500异常, 需要兼容
-                    continue;
+                    log.error(e.getMessage(), e);
                 }
 
                 // 复制文件/文件夹, 知识库文件添加版本标识
                 int order = UtilMap.getInt(version, "version");
                 order += 1;
                 String docName = title + " v" + order + ".0";
-                DDR_New ddr_new = ddClient_storage.copyDentries(ddClient.getAccessToken(), unionId, workspaceId, UtilMap.getString(doc, "instanceId"), workspaceId, rootNodeId, docName);
+                DDR_New ddr_new;
+                try {
+                    ddr_new = ddClient_storage.copyDentries(ddClient.getAccessToken(), unionId, workspaceId, UtilMap.getString(doc, "instanceId"), workspaceId, rootNodeId, docName);
+                } catch (McException e) {
+                    // ppExt: 权限异常可能原因是重复授权, 依然执行复制操作, 再跳过
+                    log.error(e.getMessage(), e);
+                    continue;
+                }
 
                 // 更新最新版本记录, 叠加版本号
                 Map formData = UtilMap.map("textField_lx36gdpp, numberField_lx36gdpz", fileName, order);

+ 14 - 5
mjava/src/main/java/com/malk/service/dingtalk/DDClient_Contacts.java

@@ -75,11 +75,6 @@ public interface DDClient_Contacts {
      */
     Map createUser(String access_token, String name, String mobile, List<String> dept_id_list, Map body_ext);
 
-    /**
-     * 创建钉钉自建企业账号 [邮箱为必填]
-     */
-    Map createUser_dingTalk(String access_token, String login_id, String init_password, String name, List<Long> dept_id_list, Map body_ext);
-
     /**
      * 创建部门
      */
@@ -96,4 +91,18 @@ public interface DDClient_Contacts {
      * @param only_active 是否包含未激活钉钉人数
      */
     int getUserCount(String access_token, boolean only_active);
+
+    ////////////////////////////// 企业账号 //////////////////////////////
+
+    /**
+     * 创建钉钉自建企业账号 [邮箱为必填]
+     */
+    Map createUser_dingTalk(String access_token, String login_id, String init_password, String name, List<Long> dept_id_list, Map body_ext);
+
+    /**
+     * 更新企业账号用户信息
+     * ppExt: 1.开启了多部门任职,只会显示多部门任职分组里边的职位信息, 原职位信息不再显示; 2.隐藏部门的职位在名片上不展示
+     */
+    Map updateUser_dingTalk(String access_token, String userId, List<Long> dept_id_list, Map body_ext);
+
 }

+ 28 - 16
mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient_Contacts.java

@@ -193,22 +193,6 @@ public class DDImplClient_Contacts implements DDClient_Contacts {
         return (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/user/create", null, param, body).getResult();
     }
 
-    /**
-     * 创建钉钉自建企业账号
-     *
-     * @apiNote https://open.dingtalk.com/document/orgapp/create-dingtalk-user-created-dedicated-account
-     */
-    @Override
-    public Map createUser_dingTalk(String access_token, String login_id, String init_password, String name, List<Long> dept_id_list, Map body_ext) {
-        Map param = UtilMap.map("access_token", access_token);
-        String deptIds = String.join(",", dept_id_list.stream().map(dept -> String.valueOf(dept)).collect(Collectors.toList()));
-        Map body = UtilMap.map("exclusive_account, exclusive_account_type, login_id, init_password, name, dept_id_list", true, "dingtalk", login_id, init_password, name, deptIds);
-        if (ObjectUtil.isNotNull(body_ext)) {
-            body.putAll(body_ext);
-        }
-        return (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/user/create", null, param, body).getResult();
-    }
-
     /**
      * 创建部门
      *
@@ -245,4 +229,32 @@ public class DDImplClient_Contacts implements DDClient_Contacts {
         Map result = (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/user/count", null, DDConf.initTokenParams(access_token), UtilMap.map("only_active", only_active)).getResult();
         return UtilMap.getInt(result, "count");
     }
+
+    ////////////////////////////// 企业账号 //////////////////////////////
+
+    /**
+     * 创建钉钉自建企业账号
+     *
+     * @apiNote https://open.dingtalk.com/document/orgapp/create-dingtalk-user-created-dedicated-account
+     */
+    @Override
+    public Map createUser_dingTalk(String access_token, String login_id, String init_password, String name, List<Long> dept_id_list, Map body_ext) {
+        Map param = UtilMap.map("access_token", access_token);
+        String deptIds = String.join(",", dept_id_list.stream().map(dept -> String.valueOf(dept)).collect(Collectors.toList()));
+        Map body = UtilMap.map("exclusive_account, exclusive_account_type, login_id, init_password, name, dept_id_list", true, "dingtalk", login_id, init_password, name, deptIds);
+        if (ObjectUtil.isNotNull(body_ext)) {
+            body.putAll(body_ext);
+        }
+        return (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/user/create", null, param, body).getResult();
+    }
+
+    @Override
+    public Map updateUser_dingTalk(String access_token, String userId, List<Long> dept_id_list, Map body_ext) {
+        Map param = UtilMap.map("access_token", access_token);
+        String deptIds = String.join(",", dept_id_list.stream().map(dept -> String.valueOf(dept)).collect(Collectors.toList()));
+        Map body = UtilMap.map("userid, dept_id_list", userId, deptIds);
+        body.putAll(body_ext);
+        return (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/v2/user/update", null, param, body).getResult();
+
+    }
 }