ソースを参照

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

三七 3 日 前
コミット
edd023c5aa

+ 12 - 1
fs-company-app/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java

@@ -15,6 +15,7 @@ import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyMiniappService;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
+import com.fs.config.cloud.CloudHostProper;
 import com.fs.course.domain.FsUserCoursePeriod;
 import com.fs.course.dto.BatchSendCourseDTO;
 import com.fs.course.dto.BatchUrgeCourseDTO;
@@ -41,11 +42,13 @@ import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -91,6 +94,9 @@ public class FsUserCourseVideoController extends AppBaseController {
     @Autowired
     private ICompanyMiniappService companyMiniappService;
 
+    @Autowired
+    private CloudHostProper cloudHostProper;
+
     @Login
     @GetMapping("/pageList")
     @ApiOperation("课程分页列表")
@@ -291,7 +297,12 @@ public class FsUserCourseVideoController extends AppBaseController {
     @Login
     @GetMapping("/getGotoWxAppLink")
     @ApiOperation("获取跳转微信小程序的链接地址")
-    public ResponseResult<String> getGotoWxAppLink(String linkStr,String appid) {
+    public ResponseResult<String> getGotoWxAppLink(String linkStr,String appid) throws IOException, WxErrorException {
+
+        if (!"河山医院".equals(cloudHostProper.getCompanyName())){
+            return ResponseResult.ok(courseLinkService.generateShortLinkFull(appid,linkStr,false));
+        }
+
         return ResponseResult.ok(courseLinkService.getGotoWxAppLink(linkStr,appid));
     }
 

+ 8 - 0
fs-service/src/main/java/com/fs/course/service/IFsCourseLinkService.java

@@ -5,7 +5,9 @@ import com.fs.course.domain.FsCourseLink;
 import com.fs.course.param.FsCourseLinkCreateParam;
 import com.fs.course.param.FsCourseLinkRoomParam;
 import com.fs.qw.domain.QwUser;
+import me.chanjar.weixin.common.error.WxErrorException;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -93,6 +95,12 @@ public interface IFsCourseLinkService
      */
     String getGotoWxAppLink(String linkStr,String appid);
 
+    /**
+     * 获取跳转微信小程序的链接地址 获取ShortLink
+     */
+    String generateShortLinkFull(String appId,String pagePath,
+                                 boolean isPermanent) throws WxErrorException, IOException;
+
     R getWxaCodeGenerateScheme(String linkStr,String appId);
 
     R getProjectCode();

+ 60 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsCourseLinkServiceImpl.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.PubFun;
@@ -49,6 +50,7 @@ import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.mp.api.WxMpService;
+import okhttp3.*;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -763,6 +765,64 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
 
     }
 
+
+    /**
+     * 获取跳转微信小程序的链接地址
+     * @param linkStr
+     * @return
+     */
+    private static final String BASE_URL = "https://api.weixin.qq.com/wxa/genwxashortlink?access_token=";
+    private final OkHttpClient client = new OkHttpClient();
+    private final ObjectMapper objectMapper = new ObjectMapper();
+
+    @Override
+    public String generateShortLinkFull(String appId,String pageUrl, boolean isPermanent) throws WxErrorException, IOException {
+
+        final WxMaService wxService = WxMaConfiguration.getMaService(appId);
+        String accessToken = wxService.getAccessToken();
+
+        String url = BASE_URL + accessToken;
+
+        Map<String, Object> body = new HashMap<>();
+        body.put("page_url", pageUrl);
+        body.put("is_permanent", isPermanent);
+
+        String jsonBody = objectMapper.writeValueAsString(body);
+
+        Request request = new Request.Builder()
+                .url(url)
+                .post(RequestBody.create(MediaType.parse("application/json"), jsonBody))
+                .build();
+
+        try (Response response = client.newCall(request).execute()) {
+            String responseBody = response.body().string();
+
+            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;
+                    }
+                    return generateShortLinkFull(appId,pageUrl,isPermanent);
+                }
+            }
+
+            if (errcode != null && errcode != 0) {
+                log.error("微信小程序的链接地址失败:"+result+"--pageUrl:"+pageUrl);
+                throw new IOException("微信API错误: " + errcode + " - " + result.get("errmsg"));
+            }
+
+            return (String) result.get("link");
+        }
+
+    }
+
     /**
      * 获取跳转微信小程序的链接地址
      * @param linkStr