|
|
|
@ -1,15 +1,23 @@
|
|
|
|
|
package com.ibeetl.jlw.service;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.core.util.URLUtil;
|
|
|
|
|
import com.auth0.jwt.JWT;
|
|
|
|
|
import com.auth0.jwt.JWTVerifier;
|
|
|
|
|
import com.auth0.jwt.algorithms.Algorithm;
|
|
|
|
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
|
|
|
|
import com.ibeetl.admin.core.service.CoreBaseService;
|
|
|
|
|
import com.ibeetl.admin.core.util.PlatformException;
|
|
|
|
|
import com.ibeetl.jlw.dao.ResourcesApplicationCourseDao;
|
|
|
|
|
import com.ibeetl.jlw.dao.ResourcesApplicationDao;
|
|
|
|
|
import com.ibeetl.jlw.dao.UniversitiesCollegesJurisdictionExperimentalSystemDao;
|
|
|
|
|
import com.ibeetl.jlw.entity.LoginTodo;
|
|
|
|
|
import com.ibeetl.jlw.entity.ResourcesApplication;
|
|
|
|
|
import com.ibeetl.jlw.entity.UniversitiesCollegesJurisdictionExperimentalSystem;
|
|
|
|
|
import com.ibeetl.jlw.web.query.ResourcesApplicationQuery;
|
|
|
|
@ -22,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
|
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
@ -44,6 +53,8 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
|
|
|
|
|
private TeacherService teacherService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private StudentService studentService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private LoginTodoService loginTodoService;
|
|
|
|
|
|
|
|
|
|
public PageQuery<ResourcesApplication>queryByCondition(PageQuery query){
|
|
|
|
|
PageQuery ret = resourcesApplicationDao.queryByCondition(query);
|
|
|
|
@ -196,7 +207,71 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
|
|
|
|
|
*/
|
|
|
|
|
public PageQuery<ResourcesApplication> queryMyApplicationByConditionQuery(PageQuery query) {
|
|
|
|
|
PageQuery ret = resourcesApplicationDao.queryMyApplicationByConditionQuery(query);
|
|
|
|
|
queryListAfter(ret.getList());
|
|
|
|
|
List<ResourcesApplication> list = ret.getList();
|
|
|
|
|
CollectionUtil.emptyIfNull(list).forEach(item -> {
|
|
|
|
|
String applicationLink = item.getApplicationLink();
|
|
|
|
|
applicationLink = makeHaveKeyStr(applicationLink);
|
|
|
|
|
String realUrl = applicationLink.concat(getKeyByCurrentUser(item.getLinkSecretKey()));
|
|
|
|
|
item.set("realUrl", realUrl);
|
|
|
|
|
});
|
|
|
|
|
queryListAfter(list);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 通过应用设置的Key来生成Jwt串,用于等于第三方应用
|
|
|
|
|
*
|
|
|
|
|
* @param linkSecretKey 链接的加密串
|
|
|
|
|
* @return {@link String}
|
|
|
|
|
* @Author: lx
|
|
|
|
|
* @Date: 2022/12/11 16:59
|
|
|
|
|
*/
|
|
|
|
|
public String getKeyByCurrentUser(String linkSecretKey) {
|
|
|
|
|
if (ObjectUtil.isNotEmpty(linkSecretKey)) {
|
|
|
|
|
LoginTodo loginTodo = loginTodoService.buildByCurrentLoginUser();
|
|
|
|
|
return JWT.create().withAudience(loginTodo.toJSONString()).sign(Algorithm.HMAC256(linkSecretKey));
|
|
|
|
|
}
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 解密加密的url,用于第三方应用
|
|
|
|
|
*
|
|
|
|
|
* @param linkSecretKey 应用密钥
|
|
|
|
|
* @param url 生成key以后,得到的 applicationLink + 加密后的jwt串。
|
|
|
|
|
* @Author: lx
|
|
|
|
|
* @Date: 2022/12/11 17:06
|
|
|
|
|
*/
|
|
|
|
|
public void decodeApplicationUrl(String linkSecretKey, String url) {
|
|
|
|
|
|
|
|
|
|
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(linkSecretKey)).build();
|
|
|
|
|
DecodedJWT jwt = verifier.verify(url);
|
|
|
|
|
System.out.println(jwt.getAudience().get(0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 用户如果输入的链接地址,不包含key= 字符的话,则自动追加
|
|
|
|
|
*
|
|
|
|
|
* @param link
|
|
|
|
|
* @return {@link String}
|
|
|
|
|
* @Author: lx
|
|
|
|
|
* @Date: 2022/12/11 17:21
|
|
|
|
|
*/
|
|
|
|
|
public String makeHaveKeyStr(String link) {
|
|
|
|
|
final String key = "key=", sequence = "?";
|
|
|
|
|
String query = URLUtil.toURI(link).getQuery();
|
|
|
|
|
boolean isHaveKey = Arrays.stream(query.split("&")).anyMatch(item -> item.contains(key));
|
|
|
|
|
if (ObjectUtil.isNotEmpty(link) && !isHaveKey) {
|
|
|
|
|
if (link.contains(sequence)) {
|
|
|
|
|
return StrUtil.format("{}&{}", link, key);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return StrUtil.format("{}?{}", link, key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return link;
|
|
|
|
|
}
|
|
|
|
|
}
|