Просмотр исходного кода

改造sop发送飞书看课链接逻辑

cgp 6 дней назад
Родитель
Сommit
8bee5c1606

+ 3 - 0
fs-service/src/main/java/com/fs/feishu/model/FeishuLinkParam.java

@@ -35,4 +35,7 @@ public class FeishuLinkParam implements Serializable {
 
     private  Long id;
 
+    //飞书看课短链码
+    private  String link;
+
 }

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

@@ -1,6 +1,8 @@
 package com.fs.feishu.service;
 
 import cn.hutool.json.JSONUtil;
+import com.fs.course.domain.FsCourseLink;
+import com.fs.course.mapper.FsCourseLinkMapper;
 import com.fs.feishu.config.FeiShuConfig;
 import com.fs.feishu.model.FeishuFileDTO;
 import com.fs.feishu.model.FeishuLinkParam;
@@ -38,6 +40,9 @@ public class FeiShuService {
     @Autowired
     private FsUserCourseVideoMapper videoMapper;
 
+    @Autowired
+    private FsCourseLinkMapper courseLinkMapper;
+
     private Client client;
 
     @PostConstruct
@@ -111,7 +116,7 @@ public class FeiShuService {
             String documentId = createDocument(userCourseVideo.getTitle());
 
             // 拼接新看课url
-            String url = buildCourseNewLink(param.getCompanyId(), param.getCompanyUserId(), param.getCourseId(), param.getVideoId(),param.getUserId());
+            String url = buildCourseNewLink(param.getCompanyId(), param.getCompanyUserId(), param.getCourseId(), param.getVideoId(),param.getUserId(),param.getLink());
 
             // 创建iframe块
             createIframeBlock(documentId, url);
@@ -144,7 +149,7 @@ public class FeiShuService {
     /**
      * 拼接看课url(课程参数JSON方式,适配飞书iframe,双重URL编码)
      */
-    private String buildCourseNewLink(Long companyId, Long companyUserId, Long courseId, Long videoId,Long userId) {
+    private String buildCourseNewLink(Long companyId, Long companyUserId, Long courseId, Long videoId,Long userId,String link) {
         String json = configService.selectConfigByKey("course.config");
         CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
 
@@ -154,6 +159,17 @@ public class FeiShuService {
         courseParam.put("videoId", videoId);
         courseParam.put("companyId", companyId);
         courseParam.put("courseId", courseId);
+        courseParam.put("link", link);
+
+        //查询课程短链表拼接参数
+        FsCourseLink fsCourseLink = courseLinkMapper.selectFsCourseLinkByLink(link);
+        if (fsCourseLink==null){
+            throw new CustomException("课程链接已过期");
+        }
+        courseParam.put("corpId", fsCourseLink.getCorpId());
+        courseParam.put("linkType", fsCourseLink.getLinkType());
+        courseParam.put("qwExternalId", fsCourseLink.getQwExternalId());
+        courseParam.put("qwUserId", fsCourseLink.getQwUserId());
         String courseJson = JSONUtil.toJsonStr(courseParam);
         try {
             // 第一次编码:对JSON进行URL编码

+ 7 - 5
fs-user-app/src/main/java/com/fs/app/controller/AppBaseController.java

@@ -32,14 +32,16 @@ public class AppBaseController {
 	{
 		String headValue =  ServletUtils.getRequest().getHeader("APPToken");
 		if (StringUtils.isNotEmpty(headValue)){
-			Claims claims=jwtUtils.getClaimByToken(headValue);
-			if(claims!=null){
+			Claims claims = jwtUtils.getClaimByToken(headValue);
+			if(claims != null){
 				String userId = claims.getSubject().toString();
 				return userId;
 			}
-			else{
-				return null;
-			}
+		}
+		// 如果APPToken不存在或解析失败,从x-skip-auth获取[目前是飞书看课入口登录的用户id]
+		String skipAuth = ServletUtils.getRequest().getHeader("x-skip-auth");
+		if (StringUtils.isNotEmpty(skipAuth)) {
+			return skipAuth;
 		}
 		return null;
 	}

+ 4 - 0
fs-user-app/src/main/java/com/fs/app/controller/course/CourseFsUserController.java

@@ -9,6 +9,7 @@ import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
 import com.fs.app.annotation.Login;
+import com.fs.common.utils.StringUtils;
 import com.fs.course.dto.BatchSendCourseDTO;
 import com.fs.course.param.*;
 import com.fs.course.param.newfs.FsUserCourseAddCompanyUserParam;
@@ -179,6 +180,9 @@ public class CourseFsUserController extends AppBaseController {
     @ApiOperation("获取飞书课程链接")
     @PostMapping("/getFeiShuCourseNewLink")
     public R getFeiShuCourseNewLink(@RequestBody FeishuLinkParam param) {
+        if (StringUtils.isBlank(param.getLink())){
+            return R.error("飞书课程短链不能为空");
+        }
         String feishuCourseNewLink = feiShuService.getFeishuCourseNewLink(param);
         return R.ok().put("data", feishuCourseNewLink);
     }