wjj 6 小時之前
父節點
當前提交
dc05f68bf2

+ 9 - 0
fs-service/src/main/java/com/fs/his/param/FeiShuAnswerParam.java

@@ -0,0 +1,9 @@
+package com.fs.his.param;
+
+import lombok.Data;
+
+@Data
+public class FeiShuAnswerParam {
+    private Long companyId;
+    private Long companyUserId;
+}

+ 6 - 0
fs-service/src/main/java/com/fs/his/service/IFsCourseReissueConfigService.java

@@ -77,4 +77,10 @@ public interface IFsCourseReissueConfigService extends IService<FsCourseReissueC
      * @return 短链
      */
     R generateAnswerShortLink(Long configId);
+
+    /**
+     * 获取答案短链
+     * @return 短链
+     */
+    R getAnswerShortLink(FsCourseReissueConfig  config,Long companyId,Long companyUserId);
 }

+ 30 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsCourseReissueConfigServiceImpl.java

@@ -298,6 +298,36 @@ public class FsCourseReissueConfigServiceImpl extends ServiceImpl<FsCourseReissu
         }
     }
 
+    @Override
+    public R getAnswerShortLink(FsCourseReissueConfig fsCourseReissueConfig, Long companyId, Long companyUserId) {
+        if (StringUtils.isNull(fsCourseReissueConfig.getAppId())) {
+            return R.error("小程序APPID不能为空");
+        }
+        final WxMaService wxMaService = WxMaConfiguration.getMaService(fsCourseReissueConfig.getAppId());
+        // 构建 query 参数(多个参数用 & 连接,需要 URL 编码)
+        String query = String.format("companyId=%s&companyUserId=%s", companyId, companyUserId);
+        // 构建请求参数
+        GenerateUrlLinkRequest request = GenerateUrlLinkRequest.builder()
+                .path("pages_user/answerQues")        // 小程序页面路径
+                .query(query)                     // 自定义参数:companyId 和 companyUserId
+                .envVersion("release")            // 版本: release/trial/develop
+                // .expireTime(System.currentTimeMillis() + 86400000) // 可选: 失效时间戳(毫秒)
+                .build();
+        try {
+            String shortLink = wxMaService.getLinkService().generateUrlLink(request);
+            if (shortLink == null || shortLink.isEmpty()) {
+                return R.error("生成答题短链失败");
+            }
+            // 提取 ticket(路径最后一段)
+            String ticket = shortLink.substring(shortLink.lastIndexOf("/") + 1);
+            String URL = URLScheme + ticket;
+            fsCourseReissueConfig.setShortLink(URL);
+            return R.ok("生成答题短链成功").put("data", fsCourseReissueConfig);
+        } catch (WxErrorException e) {
+            return R.error(e.getMessage());
+        }
+    }
+
 
     private boolean checkAppId(String appId) {
         boolean result = false;

+ 8 - 2
fs-user-app/src/main/java/com/fs/app/controller/CourseController.java

@@ -10,6 +10,8 @@ import com.fs.course.domain.*;
 import com.fs.course.param.*;
 import com.fs.course.service.*;
 import com.fs.course.vo.*;
+import com.fs.his.domain.FsCourseReissueConfig;
+import com.fs.his.param.FeiShuAnswerParam;
 import com.fs.his.service.IFsCourseReissueConfigService;
 import com.fs.his.vo.OptionsVO;
 import com.github.pagehelper.PageHelper;
@@ -381,8 +383,12 @@ public class CourseController extends  AppBaseController{
 
     @ApiOperation("获取飞书答题页面数据")
     @GetMapping("/getFeiShuAnswerInfo")
-    public R getFeiShuAnswerInfo(HttpServletRequest request){
-        return R.ok().put("data",courseReissueConfigService.getConfigInfoRedis());
+    public R getFeiShuAnswerInfo(FeiShuAnswerParam param, HttpServletRequest request){
+        FsCourseReissueConfig configInfoRedis = courseReissueConfigService.getConfigInfoRedis();
+        if (configInfoRedis == null) {
+            return R.error(500, "飞书配置信息异常");
+        }
+        return courseReissueConfigService.getAnswerShortLink(configInfoRedis, param.getCompanyId(), param.getCompanyUserId());
     }
 
 }