update:将url进行编码处理,避免路径参数丢失

This commit is contained in:
sunzheng
2024-07-25 10:22:36 +08:00
parent bfc1b46557
commit d41487c18e
@@ -37,6 +37,8 @@ import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
@@ -250,7 +252,7 @@ public class FeiShuDockingServiceImpl implements IFeiShuDockingService {
}
}
private ApprovalsInstanceVo buildApprovalsInstanceVo(InstanceDto instanceDto) {
private ApprovalsInstanceVo buildApprovalsInstanceVo(InstanceDto instanceDto) throws Exception {
// 转换userId为飞书Id
// 发起人的id
String promoterUserId = instanceDto.getPromoterUserId();
@@ -292,25 +294,38 @@ public class FeiShuDockingServiceImpl implements IFeiShuDockingService {
if (StringUtils.isNotBlank(reviewPcLink)) {
reviewPcLinkList = Arrays.asList(reviewPcLink.split(","));
reviewPcLinkList = reviewPcLinkList.stream()
.map(link -> url.replace("{REDIRECT_URI}", link))
.collect(Collectors.toList());
.map(link -> {
try {
String encodedLink = URLEncoder.encode(link, "UTF-8");
return url.replace("{REDIRECT_URI}", encodedLink);
} catch (UnsupportedEncodingException e) {
return null;
}
}).collect(Collectors.toList());
}
// 审核人对应的 mobile 跳转地址
String reviewMobileLink = instanceDto.getReviewMobileLink();
List<String> reviewMobileLinkList = new ArrayList<>();
if (StringUtils.isNotBlank(reviewMobileLink)) {
reviewMobileLinkList = Arrays.asList(reviewMobileLink.split(","));
reviewMobileLinkList = reviewMobileLinkList.stream()
.map(link -> url.replace("{REDIRECT_URI}", link))
.collect(Collectors.toList());
.map(link -> {
try {
String encodedLink = URLEncoder.encode(link, "UTF-8");
return url.replace("{REDIRECT_URI}", encodedLink);
} catch (UnsupportedEncodingException e) {
return null;
}
}).collect(Collectors.toList());
}
// 发起人对应的pc的跳转地址
String promoterPcLink = instanceDto.getPromoterPcLink();
String promoterPcLink = URLEncoder.encode(instanceDto.getPromoterPcLink(), "UTF-8");
if (StringUtils.isNotBlank(promoterPcLink)) {
promoterPcLink = url.replace("{REDIRECT_URI}", promoterPcLink);
}
// 发起人移动端的跳转地址
String promoterMobileLink = instanceDto.getPromoterMobileLink();
String promoterMobileLink = URLEncoder.encode(instanceDto.getPromoterMobileLink(), "UTF-8");
if (StringUtils.isNotBlank(promoterMobileLink)) {
promoterMobileLink = url.replace("{REDIRECT_URI}", promoterMobileLink);
}
@@ -404,7 +419,8 @@ public class FeiShuDockingServiceImpl implements IFeiShuDockingService {
return;
}
// 将url替换为单点登录的地址
String hrefUrl = botMessageDto.getHrefUrl();
// 使用 URL 编码来处理特殊字符,将url替换为单点登录的地址
String hrefUrl = URLEncoder.encode(botMessageDto.getHrefUrl(), "UTF-8");
if (StringUtils.isNotBlank(hrefUrl)) {
hrefUrl = signLoginUrl.replace("{REDIRECT_URI}", hrefUrl);
}