Ver código fonte

河山医院 修改 手动看课发送的链接 样式

三七 3 dias atrás
pai
commit
210661a59d

+ 24 - 0
fs-qwhook/src/main/java/com/fs/app/controller/ApisCommonController.java

@@ -5,6 +5,7 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.course.mapper.FsCourseWatchLogMapper;
 import com.fs.course.mapper.FsUserCourseVideoMapper;
+import com.fs.course.service.IFsCourseLinkService;
 import com.fs.fastGpt.mapper.FastgptChatVoiceHomoMapper;
 import com.fs.his.domain.FsAppVersion;
 import com.fs.his.service.IFsAppVersionService;
@@ -24,9 +25,12 @@ import com.fs.qwHookApi.service.QwHookApiService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
+
 
 @Api("公共接口")
 @RestController
@@ -70,6 +74,26 @@ public class ApisCommonController {
     @Autowired
     private IQwUserVideoService qwUserVideoService;
 
+    @Autowired
+    private IFsCourseLinkService iFsCourseLinkService;
+
+    /**
+     * 获取跳转微信小程序的链接地址
+     */
+    @GetMapping("/getGotoWxAppLink")
+    @ApiOperation("获取跳转微信小程序的链接地址")
+    public R getGotoWxAppLink( ) throws WxErrorException, IOException {
+
+
+        String pageUrl = "/pages_course/videovip?course={\"companyId\":3,\"companyUserId\":3,\"id\":2803,\"projectId\":8,\"courseId\":7,\"videoId\":94,\"periodId\":58,\"projectCode\":\"heshanyy\"}";
+
+        String appId="wx31a6271ab85d27bc";
+
+        // 生成短链接
+        String shortLink = iFsCourseLinkService.generateShortLinkFull(appId, pageUrl,false);
+
+        return R.ok().put("data",shortLink);
+    }
 
     @PostMapping("/qwHookSendMsg")
     public R qwHookSendMsg(@RequestBody QwHookSendMsgParam param ) {

+ 34 - 25
fs-service/src/main/java/com/fs/course/service/impl/FsCourseLinkServiceImpl.java

@@ -778,47 +778,56 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
     @Override
     public String generateShortLinkFull(String appId,String pageUrl, boolean isPermanent) throws WxErrorException, IOException {
 
+        try {
+
         final WxMaService wxService = WxMaConfiguration.getMaService(appId);
         String accessToken = wxService.getAccessToken();
 
-        String url = BASE_URL + accessToken;
+            pageUrl = pageUrl.replaceFirst("^/", "");
 
-        Map<String, Object> body = new HashMap<>();
-        body.put("page_url", pageUrl);
-        body.put("is_permanent", isPermanent);
+            String url = BASE_URL + accessToken;
 
-        String jsonBody = objectMapper.writeValueAsString(body);
+            Map<String, Object> body = new HashMap<>();
+            body.put("page_url", pageUrl);
+            body.put("is_permanent", isPermanent);
 
-        Request request = new Request.Builder()
-                .url(url)
-                .post(RequestBody.create(MediaType.parse("application/json"), jsonBody))
-                .build();
+            String jsonBody = objectMapper.writeValueAsString(body);
 
-        try (Response response = client.newCall(request).execute()) {
-            String responseBody = response.body().string();
+            Request request = new Request.Builder()
+                    .url(url)
+                    .post(RequestBody.create(MediaType.parse("application/json"), jsonBody))
+                    .build();
 
-            Map<String, Object> result = objectMapper.readValue(responseBody, Map.class);
+            try (Response response = client.newCall(request).execute()) {
+                String responseBody = response.body().string();
 
-            Integer errcode = (Integer) result.get("errcode");
+                Map<String, Object> result = objectMapper.readValue(responseBody, Map.class);
 
+                Integer errcode = (Integer) result.get("errcode");
 
-            if(TOKEN_VALID_CODE.equals(String.valueOf(result.get("errcode")))){
-                Integer curVersion = version;
-                synchronized (TOKEN_VALID_CODE){
-                    if(curVersion.equals(version)){
-                        wxService.getAccessToken(true);
-                        version = version.equals(Integer.MAX_VALUE) ? 0 : curVersion + 1;
+
+                if(TOKEN_VALID_CODE.equals(String.valueOf(result.get("errcode")))){
+                    Integer curVersion = version;
+                    synchronized (TOKEN_VALID_CODE){
+                        if(curVersion.equals(version)){
+                            wxService.getAccessToken(true);
+                            version = version.equals(Integer.MAX_VALUE) ? 0 : curVersion + 1;
+                        }
+                        return generateShortLinkFull(appId,pageUrl,isPermanent);
                     }
-                    return generateShortLinkFull(appId,pageUrl,isPermanent);
                 }
-            }
 
-            if (errcode != null && errcode != 0) {
-                log.error("微信小程序的链接地址失败:"+result+"--pageUrl:"+pageUrl);
-                throw new IOException("微信API错误: " + errcode + " - " + result.get("errmsg"));
+                if (errcode != null && errcode != 0) {
+                    log.error("微信小程序的链接地址失败:"+result+"--pageUrl:"+pageUrl);
+                    throw new IOException("微信API错误: " + errcode + " - " + result.get("errmsg"));
+                }
+
+                return (String) result.get("link");
             }
 
-            return (String) result.get("link");
+
+        } catch (WxErrorException | IOException e) {
+            throw new RuntimeException(e);
         }
 
     }