cgp пре 2 дана
родитељ
комит
3c6c015f31

+ 14 - 6
fs-ipad-task/src/main/java/com/fs/app/service/IpadSendServer.java

@@ -393,12 +393,20 @@ public class IpadSendServer {
             content.setLinkUrl(completeFeiShuLinkUrl);
             String authUrl = buildAuthLink(companyId, companyUserId, courseId, videoId, shortLink);
             // ============ 异步调用飞书API完善文档内容与文档权限 ============
-            asyncService.processFeishuDocAsync(
-                    client, feiShuDocId, authUrl,
-                    videoId, companyId, courseId,
-                    companyUserId, shortLink,
-                    account
-            );
+            //异步之前要做个判断,如果缓存中的文档填充标识为true,则不需要进行异步处理(因为已经填充过了)
+            if (!account.getDocumentIdFillFlag()){
+                //更新缓存中文档填充标识为true
+                account.setDocumentIdFillFlag(Boolean.TRUE);
+                redisCache.setCacheObject(amountKey, account);
+                //异步处理
+                asyncService.processFeishuDocAsync(
+                        client, feiShuDocId, authUrl,
+                        videoId, companyId, courseId,
+                        companyUserId, shortLink,
+                        account
+                );
+            }
+
             return content;
         }catch (Exception e){
             log.error("ID:{}-完善飞书注册链接异常:{}", vo.getId(), e.getMessage());

+ 5 - 0
fs-service/src/main/java/com/fs/feishu/domain/FeishuAccount.java

@@ -38,4 +38,9 @@ public class FeishuAccount {
 
     /** 是否是我的账户 true:是,false:不是*/
     private Boolean isMyAccount= false;
+
+    /** 飞书文档填充标识 redis缓存中使用,用于判断documentId是否填充过block
+     * true:已填充,false:未填充
+     * */
+    private Boolean documentIdFillFlag=false;
 }

+ 2 - 1
fs-service/src/main/java/com/fs/feishu/service/FeiShuService.java

@@ -138,9 +138,9 @@ public class FeiShuService {
                             String docIdKey=FEISHU_DOC_ID + fsCourseLink.getQwExternalId()+ "_" + videoId;
                             redisCache.setCacheObject(docIdKey, docId);
                             String accountKey = FEISHU_CLIENT+docId;
+                            account.setDocumentIdFillFlag(Boolean.TRUE);//这里要记录一下文档内容已填充
                             redisCache.setCacheObject(accountKey, account);
                         }
-
                     }
                     return "https://www.feishu.cn/docx/" + docId;
                 } catch (CustomException e) {
@@ -186,6 +186,7 @@ public class FeiShuService {
                         log.error("公共账号池 外部联系人id不为空,缓存飞书docId,key:{}",docIdKey);
                         redisCache.setCacheObject(docIdKey, docId);
                         String accountKey = FEISHU_CLIENT+docId;
+                        account.setDocumentIdFillFlag(Boolean.TRUE);//这里要记录一下文档内容已填充
                         redisCache.setCacheObject(accountKey, account);
                     }
                 }