|
|
@@ -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);
|
|
|
}
|
|
|
|
|
|
}
|