Explorar o código

1、调整员工增加回调处理

yys hai 3 meses
pai
achega
f78a6679c7

+ 2 - 0
fs-company/src/main/java/com/fs/framework/config/ThreadPoolConfig.java

@@ -42,6 +42,8 @@ public class ThreadPoolConfig
         executor.setKeepAliveSeconds(keepAliveSeconds);
         // 线程池对拒绝任务(无线程可用)的处理策略
         executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        // 传递数据源上下文到异步线程,解决 @Async 方法中 ThreadLocal 数据源丢失的问题
+        executor.setTaskDecorator(new DataSourceTaskDecorator());
         return executor;
     }
 

+ 28 - 14
fs-qw-api/src/main/java/com/fs/app/service/QwDataCallbackService.java

@@ -171,7 +171,7 @@ public class QwDataCallbackService {
             return;
         }
 
-        logger.info("已通过 getPermanentCode 异步完成主体 {} 的永久授权码更新", 
+        logger.info("已通过 getPermanentCode 异步完成主体 {} 的永久授权码更新",
                 permanentCode.getAuth_corp_info() != null ? permanentCode.getAuth_corp_info().getCorp_name() : corpId);
     }
 
@@ -277,25 +277,39 @@ public class QwDataCallbackService {
 
                             break;
                         case "change_contact" :
+
                             if (changeType.equals("create_user")){
                                 String userID = root.getElementsByTagName("UserID").item(0).getTextContent();
                                 QwUser qw = qwUserMapper.selectQwUserByCorpIdAndUserId(corpId, userID);
-                                QwUser qwUser = new QwUser();
-                                qwUser.setQwUserId(userID);
-                                qwUser.setCreateTime(new Date());
-                                qwUser.setCorpId(corpId);
-
-                                if (qw==null){
-                                    String serverQwUserName = qwApiService.getServerQwUserName(corpId, qwCompany.getOpenSecret(), userID,qwCompany.getPermanentCode());
+                                String accessToken = qwApiService.getToken(corpId, qwCompany.getPermanentCode());
+                                String qwOpenUserId = qwApiService.getOpenUserid(accessToken, userID, corpId);
+                                String serverQwUserName = qwApiService.getServerQwUserName(corpId, qwCompany.getOpenSecret(), userID, qwCompany.getPermanentCode());
+                                QwOpenidByUserParams param1=new QwOpenidByUserParams();
+                                param1.setUserid(userID);
+                                QwOpenidResult qwOpenid = qwApiService.useridToOpenid(param1, corpId);
+                                String department = root.getElementsByTagName("Department").item(0).getTextContent().toString();
+                                if (qw == null){
+                                    // 第一次回调,插入基础数据
+                                    QwUser qwUser = new QwUser();
                                     qwUser.setQwUserId(userID);
-                                    qwUser.setDepartment(root.getElementsByTagName("Department").item(0).getTextContent().toString());
+                                    qwUser.setCreateTime(new Date());
+                                    qwUser.setCorpId(corpId);
+                                    qwUser.setQwOpenUserId(qwOpenUserId);
+                                    qwUser.setDepartment(department);
                                     qwUser.setQwUserName(serverQwUserName);
-                                    QwOpenidByUserParams param1=new QwOpenidByUserParams();
-                                    param1.setUserid(userID);
-                                    QwOpenidResult qwOpenid = qwApiService.useridToOpenid(param1, corpId);
-                                    qwUser.setOpenid(qwOpenid.getOpenid());
+                                    qwUser.setOpenid(qwOpenid != null ? qwOpenid.getOpenid() : null);
                                     qwUserMapper.insertQwUser(qwUser);
-                                }else {
+                                } else {
+                                    // 第二次回调,补充更新 qwUserName 和 openid
+                                    if (serverQwUserName != null && !serverQwUserName.isEmpty()) {
+                                        qw.setQwUserName(serverQwUserName);
+                                    }
+                                    if (qwOpenid != null && qwOpenid.getOpenid() != null && !qwOpenid.getOpenid().isEmpty()) {
+                                        qw.setOpenid(qwOpenid.getOpenid());
+                                    }
+                                    if (qw.getQwOpenUserId() == null || qw.getQwOpenUserId().isEmpty()) {
+                                        qw.setQwOpenUserId(qwOpenUserId);
+                                    }
                                     qw.setIsDel(0);
                                     qw.setUpdateTime(new Date());
                                     qwUserMapper.updateQwUser(qw);