Browse Source

添加 用户是否已加入钉钉状态同步 功能

huangguoce 1 month ago
parent
commit
a3db568bad

+ 1 - 0
jeeplus-modules/jeeplus-human/src/main/java/com/jeeplus/human/enrollment/enrollmentRegistration/domain/EnrollmentRegistration.java

@@ -60,6 +60,7 @@ public class EnrollmentRegistration extends BaseEntity {
     private String projectManager;      //项目经理
     private String processType;      //流程类型(0:入职登记流程,1:信息完善流程)
     private String ddId;      //关联钉钉id
+    private String ddType; //是否已加入钉钉
     @TableField(exist = false)
     private String socialSecurityNumber;        //社保编号
     @TableField(exist = false)

+ 9 - 3
jeeplus-modules/jeeplus-human/src/main/java/com/jeeplus/human/enrollment/enrollmentRegistration/mapper/xml/EnrollmentRegistrationMapper.xml

@@ -43,7 +43,8 @@
         a.project_manager,
         a.remarks,
         a.on_job_status,
-        a.process_type
+        a.process_type,
+        a.dd_type
     </sql>
     <update id="updateStatusById">
         UPDATE human_resources_enrollment_registration SET type = #{type}
@@ -165,9 +166,14 @@
 
     <update id="updateDdIdById">
         update human_resources_enrollment_registration set
-        <if test="ddId != null ">
-            dd_id = #{ddId}
+        <if test="ddId != null">
+            dd_id = #{ddId},
+            dd_type = #{ddType}
         </if>
+        <if test="ddId == null and ddType != null">
+            dd_type = #{ddType}
+        </if>
+
         where user_id =#{userId} and del_flag = '0'
     </update>
 </mapper>

+ 25 - 24
jeeplus-modules/jeeplus-human/src/main/java/com/jeeplus/human/enrollment/enrollmentRegistration/utils/DingTalkSyncUtil.java

@@ -141,32 +141,33 @@ public class DingTalkSyncUtil {
      */
     private void processUser(UserDTO user, IUserApi userApi, String accountToken, String assessToken) {
         try {
-            String token = "10003".equals(user.getTenantDTO().getId()) ? accountToken : assessToken;
-            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getbymobile");
-
-            OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
-            req.setMobile(user.getMobile());
-            String body = client.execute(req, token).getBody();
-            JSONObject jsonObject = JSONUtil.parseObj(body);
-            if (!"0".equals(jsonObject.getStr("errcode"))) {
-                return;
-            }
-
-            String ddUserId = jsonObject.getJSONObject("result").getStr("userid");
-
-            // 更新用户数据
-            UserDTO userDTO = new UserDTO();
-            userDTO.setDdId(ddUserId);
-            userDTO.setId(user.getId());
-            userApi.updateUserById(userDTO);
-
-            // 更新入职登记数据
-            EnrollmentRegistration enrollmentRegistration = new EnrollmentRegistration();
-            enrollmentRegistration.setUserId(user.getId());
-            enrollmentRegistration.setDdId(ddUserId);
-            enrollmentRegistrationService.updateDdIdById(enrollmentRegistration);
+                String token = "10003".equals(user.getTenantDTO().getId()) ? accountToken : assessToken;
+                DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getbymobile");
+                OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
+                req.setMobile(user.getMobile());
+                String body = client.execute(req, token).getBody();
+                JSONObject jsonObject = JSONUtil.parseObj(body);
+                String ddUserId = "";
+                UserDTO userDTO = new UserDTO();
+                EnrollmentRegistration enrollmentRegistration = new EnrollmentRegistration();
+                if ("0".equals(jsonObject.getStr("errcode"))) {
+                    ddUserId = jsonObject.getJSONObject("result").getStr("userid");
+                    userDTO.setDdId(ddUserId);
+                    enrollmentRegistration.setDdId(ddUserId);
+                    enrollmentRegistration.setDdType("1");
+                    // 更新用户数据
+                    userDTO.setId(user.getId());
+                    userApi.updateUserById(userDTO);
+                } else {
+                    //若用户不存在钉钉,则在
+                    enrollmentRegistration.setDdType("0");
+                }
+                // 更新入职登记数据
+                enrollmentRegistration.setUserId(user.getId());
+                enrollmentRegistrationService.updateDdIdById(enrollmentRegistration);
         } catch (Exception e) {
             e.printStackTrace();
         }
+
     }
 }