Browse Source

优化项目分页查询

pull/268/head
chenzhihang 8 months ago
parent
commit
f0b70feca7
5 changed files with 68 additions and 90 deletions
  1. +4
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java
  2. +23
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java
  3. +25
    -36
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
  4. +3
    -28
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java
  5. +13
    -26
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkspaceServiceImpl.java

+ 4
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java View File

@@ -38,4 +38,8 @@ public interface GitService {
void resetPhoneNum(SysUser sysUser) throws Exception; void resetPhoneNum(SysUser sysUser) throws Exception;


void deleteUser(SysUser sysUser) throws Exception; void deleteUser(SysUser sysUser) throws Exception;

List<Map<String, Object>> PersonalQueryGitByPage(String token, String login, String name, Integer page) throws Exception;

List<Map<String, Object>> PubilcQueryGitByPage(String token, String name, Integer page, Integer projectCategoryId) throws Exception;
} }

+ 23
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java View File

@@ -240,4 +240,27 @@ public class GitServiceImpl implements GitService {
throw new Exception("用户不可删除:" + resultMap.get("message")); throw new Exception("用户不可删除:" + resultMap.get("message"));
} }
} }

@Override
public List<Map<String, Object>> PersonalQueryGitByPage(String token, String login, String name, Integer page) throws Exception {
// 拼接查询url
String url = gitendpoint + "/api/users/" + login + "/projects.json?page=" + page + "&limit=50&category=manage&sort_direction=praises_count&sort_by=desc";
if (StringUtils.isNotEmpty(name)) {
url = url + "&search=" + name;
}
String req = httpUtils.sendGetWithToken(url, null, token);
Map<String, Object> stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
return (List<Map<String, Object>>) stringObjectMap.get("projects");
}

public List<Map<String, Object>> PubilcQueryGitByPage(String token, String name, Integer page, Integer projectCategoryId) throws Exception {
// 拼接查询url
String url = gitendpoint + "/api/projects.json?page=" + page + "&limit=50sort_direction=praises_count&sort_by=desc&category_id=" + projectCategoryId;
if (StringUtils.isNotEmpty(name)) {
url = url + "&search=" + name;
}
String req = httpUtils.sendGetWithToken(url, null, token);
Map<String, Object> stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
return (List<Map<String, Object>>) stringObjectMap.get("projects");
}
} }

+ 25
- 36
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java View File

@@ -114,8 +114,8 @@ public class ModelsServiceImpl implements ModelsService {
String gitCloneEndpoint; String gitCloneEndpoint;
@Value("${git.cloneEndpointIp}") @Value("${git.cloneEndpointIp}")
String gitCloneEndpointIp; String gitCloneEndpointIp;
@Value("${git.projectCategoryId}")
Integer projectCategoryId;
@Value("${git.projectModelId}")
Integer projectModelId;
@Value("${git.localPath}") @Value("${git.localPath}")
String localPath; String localPath;
@Value("${minio.accessKey}") @Value("${minio.accessKey}")
@@ -593,7 +593,7 @@ public class ModelsServiceImpl implements ModelsService {
gitProjectVo.setDescription(modelsVo.getDescription()); gitProjectVo.setDescription(modelsVo.getDescription());
gitProjectVo.setPrivate(!modelsVo.getIsPublic()); gitProjectVo.setPrivate(!modelsVo.getIsPublic());
gitProjectVo.setUserId(userId); gitProjectVo.setUserId(userId);
gitProjectVo.setProjectCategoryId(projectCategoryId);
gitProjectVo.setProjectCategoryId(projectModelId);


// 创建项目 // 创建项目
Map project = gitService.createProject(token, gitProjectVo); Map project = gitService.createProject(token, gitProjectVo);
@@ -936,55 +936,45 @@ public class ModelsServiceImpl implements ModelsService {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
String ci4sUsername = loginUser.getUsername(); String ci4sUsername = loginUser.getUsername();
String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); String gitLinkPassword = loginUser.getSysUser().getOriginPassword();

Map<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkPassword); Map<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkPassword);
String token = (String) userInfo.get("token"); String token = (String) userInfo.get("token");
String login = (String) userInfo.get("login");


//拼接查询url
String modelTagName = modelsVo.getModelTag();
String modelTypeName = modelsVo.getModelType();
String url = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?category=manage&sort_direction=praises_count&sort_by=desc";
String name = modelsVo.getName();
if (StringUtils.isNotEmpty(name)) {
url = url + "&search=" + name;
List<ModelsVo> collect = new ArrayList<>();
for (int i = 1; ; i++) {
List<Map<String, Object>> projects = gitService.PersonalQueryGitByPage(token, login, modelsVo.getName(), i);
if (projects.isEmpty()) {
break;
} else {
List<ModelsVo> collecti = convert(projects, Constant.Topic_model, modelsVo.getModelTag(), modelsVo.getModelType());
collect.addAll(collecti);
}
} }

String req = httpUtils.sendGetWithToken(url, null, token);
Map<String, Object> stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
List<Map<String, Object>> projects = (List<Map<String, Object>>) stringObjectMap.get("projects");
List<ModelsVo> collect = convert(projects, Constant.Topic_model, modelTagName, modelTypeName);
List<ModelsVo> result = collect.stream().sorted(Comparator.comparing(ModelsVo::getPraisesCount).reversed()).skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()). List<ModelsVo> result = collect.stream().sorted(Comparator.comparing(ModelsVo::getPraisesCount).reversed()).skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
collect(Collectors.toList()); collect(Collectors.toList());
return new PageImpl<>(result, pageRequest, collect.size()); return new PageImpl<>(result, pageRequest, collect.size());
} }



@Override @Override
public Page<ModelsVo> newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { public Page<ModelsVo> newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
String ci4sUsername = loginUser.getUsername(); String ci4sUsername = loginUser.getUsername();
String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); String gitLinkPassword = loginUser.getSysUser().getOriginPassword();

Map<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkPassword); Map<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkPassword);
String token = (String) userInfo.get("token"); String token = (String) userInfo.get("token");


String modelTagName = modelsVo.getModelTag();
String modelTypeName = modelsVo.getModelType();
//拼接查询url
String url = gitendpoint + "/api/projects.json?sort_direction=praises_count&sort_by=desc&category_id=" + projectCategoryId;
String name = modelsVo.getName();
if (StringUtils.isNotEmpty(name)) {
url = url + "&search=" + name;
List<ModelsVo> collect = new ArrayList<>();
for (int i = 1; ; i++) {
List<Map<String, Object>> projects = gitService.PubilcQueryGitByPage(token, modelsVo.getName(), i, projectModelId);
if (projects.isEmpty()) {
break;
} else {
List<ModelsVo> collecti = convert(projects, Constant.Topic_model, modelsVo.getModelTag(), modelsVo.getModelType());
collect.addAll(collecti);
}
} }

String req = httpUtils.sendGetWithToken(url, null, token);
Map<String, Object> stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
List<Map<String, Object>> projects = (List<Map<String, Object>>) stringObjectMap.get("projects");
List<ModelsVo> collect = convert(projects, Constant.Topic_model, modelTagName, modelTypeName);
List<ModelsVo> result = collect.stream().sorted(Comparator.comparing(ModelsVo::getPraisesCount).reversed()).skip((pageRequest.getPageNumber()) * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
List<ModelsVo> result = collect.stream().sorted(Comparator.comparing(ModelsVo::getPraisesCount).reversed()).skip((long) pageRequest.getPageNumber() * pageRequest.getPageSize()).limit(pageRequest.getPageSize()).
collect(Collectors.toList()); collect(Collectors.toList());
return new PageImpl<>(result, pageRequest, collect.size()); return new PageImpl<>(result, pageRequest, collect.size());
} }
@@ -1337,8 +1327,7 @@ public class ModelsServiceImpl implements ModelsService {
Map<String, Object> author = (Map<String, Object>) map.get("author"); Map<String, Object> author = (Map<String, Object>) map.get("author");
newModelVo.setCreateBy((String) author.get("name")); newModelVo.setCreateBy((String) author.get("name"));
newModelVo.setOwner((String) author.get("login")); newModelVo.setOwner((String) author.get("login"));
String name = (String) map.get("name");
newModelVo.setName(name.substring((modelTopic + "-").length()));
newModelVo.setName((String) map.get("name"));
result.add(newModelVo); result.add(newModelVo);
} }
} }


+ 3
- 28
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java View File

@@ -330,7 +330,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
String login = (String) userInfo.get("login"); String login = (String) userInfo.get("login");
List<NewDatasetVo> collect = new ArrayList<>(); List<NewDatasetVo> collect = new ArrayList<>();
for (int i = 1; ; i++) { for (int i = 1; ; i++) {
List<Map<String, Object>> projects = PersonalQueryGitByPage(token, login, dataset.getName(), i);
List<Map<String, Object>> projects = gitService.PersonalQueryGitByPage(token, login, dataset.getName(), i);
if (projects.isEmpty()) { if (projects.isEmpty()) {
break; break;
} else { } else {
@@ -343,25 +343,13 @@ public class NewDatasetServiceImpl implements NewDatasetService {
return new PageImpl<>(result, pageRequest, collect.size()); return new PageImpl<>(result, pageRequest, collect.size());
} }


List<Map<String, Object>> PersonalQueryGitByPage(String token, String login, String name, Integer page) throws Exception {
// 拼接查询url
String url = gitendpoint + "/api/users/" + login + "/projects.json?page=" + page + "&limit=50&category=manage&sort_direction=praises_count&sort_by=desc";
if (StringUtils.isNotEmpty(name)) {
url = url + "&search=" + name;
}
String req = httpUtils.sendGetWithToken(url, null, token);
Map<String, Object> stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
return (List<Map<String, Object>>) stringObjectMap.get("projects");
}


@Override @Override
public Page<NewDatasetVo> newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { public Page<NewDatasetVo> newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception {
String token = gitService.checkoutToken(); String token = gitService.checkoutToken();


List<NewDatasetVo> collect = new ArrayList<>(); List<NewDatasetVo> collect = new ArrayList<>();
for (int i = 1; ; i++) { for (int i = 1; ; i++) {
List<Map<String, Object>> projects = PubilcQueryGitByPage(token, dataset.getName(), i);
List<Map<String, Object>> projects = gitService.PubilcQueryGitByPage(token, dataset.getName(), i, projectDatasetId);
if (projects.isEmpty()) { if (projects.isEmpty()) {
break; break;
} else { } else {
@@ -374,18 +362,6 @@ public class NewDatasetServiceImpl implements NewDatasetService {
return new PageImpl<>(result, pageRequest, collect.size()); return new PageImpl<>(result, pageRequest, collect.size());
} }


List<Map<String, Object>> PubilcQueryGitByPage(String token, String name, Integer page) throws Exception {
// 拼接查询url
String url = gitendpoint + "/api/projects.json?page=" + page + "&limit=50sort_direction=praises_count&sort_by=desc&category_id=" + projectDatasetId;
if (StringUtils.isNotEmpty(name)) {
url = url + "&search=" + name;
}
String req = httpUtils.sendGetWithToken(url, null, token);
Map<String, Object> stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
return (List<Map<String, Object>>) stringObjectMap.get("projects");
}


@Override @Override
public NewDatasetVo getNewDatasetDesc(Integer id, String name, String repo, String owner, String version, Boolean isPublic) throws Exception { public NewDatasetVo getNewDatasetDesc(Integer id, String name, String repo, String owner, String version, Boolean isPublic) throws Exception {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -712,8 +688,7 @@ public class NewDatasetServiceImpl implements NewDatasetService {
Map<String, Object> author = (Map<String, Object>) map.get("author"); Map<String, Object> author = (Map<String, Object>) map.get("author");
newDatasetVo.setCreateBy((String) author.get("name")); newDatasetVo.setCreateBy((String) author.get("name"));
newDatasetVo.setOwner((String) author.get("login")); newDatasetVo.setOwner((String) author.get("login"));
String name = (String) map.get("name");
newDatasetVo.setName(name.substring((datasetTopic + "-").length()));
newDatasetVo.setName((String) map.get("name"));
result.add(newDatasetVo); result.add(newDatasetVo);
} }
} }


+ 13
- 26
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkspaceServiceImpl.java View File

@@ -12,6 +12,8 @@ import com.ruoyi.platform.vo.NewDatasetVo;
import com.ruoyi.system.api.constant.Constant; import com.ruoyi.system.api.constant.Constant;
import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;


@@ -87,43 +89,28 @@ public class WorkspaceServiceImpl implements WorkspaceService {
@Override @Override
public Map<String, Integer> getAssetCount(Boolean isPublic) throws Exception { public Map<String, Integer> getAssetCount(Boolean isPublic) throws Exception {
Map<String, Integer> assetCountMap = new HashMap<>(); Map<String, Integer> assetCountMap = new HashMap<>();
String token = gitService.checkoutToken();
int availableRange = isPublic ? Constant.Image_Type_Pub : Constant.Image_Type_Pri; int availableRange = isPublic ? Constant.Image_Type_Pub : Constant.Image_Type_Pri;
String datasetUrl;
String modelUrl;
Page<NewDatasetVo> newDatasetVos;
Page<ModelsVo> modelsVos;
if (isPublic) { if (isPublic) {
// 数据集 // 数据集
datasetUrl = gitendpoint + "/api/projects.json?sort_direction=updated_on&sort_by=desc&category_id=" + Constant.Git_Category_Id;
newDatasetVos = newDatasetService.newPubilcQueryByPage(new Dataset(), PageRequest.of(0, Integer.MAX_VALUE));
// 模型 // 模型
modelUrl = gitendpoint + "/api/projects.json?sort_direction=updated_on&sort_by=desc&category_id=" + Constant.Git_Category_Id;
modelsVos = modelsService.newPubilcQueryByPage(new ModelsVo(), PageRequest.of(0, Integer.MAX_VALUE));
} else { } else {
Jedis jedis = new Jedis(redisHost, redisPort);
LoginUser loginUser = SecurityUtils.getLoginUser();
String ci4sUsername = loginUser.getUsername();
String userReq = jedis.get(ci4sUsername + "_gitUserInfo");
Map<String, Object> userInfo = JsonUtils.jsonToMap(userReq);

datasetUrl = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?category=manage";
modelUrl = gitendpoint + "/api/users/" + userInfo.get("login") + "/projects.json?category=manage";
// 数据集
newDatasetVos = newDatasetService.newPersonalQueryByPage(new Dataset(), PageRequest.of(0, Integer.MAX_VALUE));
// 模型
modelsVos = modelsService.newPersonalQueryByPage(new ModelsVo(), PageRequest.of(0, Integer.MAX_VALUE));
} }

String req = httpUtils.sendGetWithToken(datasetUrl, null, token);
Map<String, Object> stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
List<Map<String, Object>> projects = (List<Map<String, Object>>) stringObjectMap.get("projects");
List<NewDatasetVo> collect1 = newDatasetService.convert(projects, Constant.Topic_Dataset, null, null);
assetCountMap.put("dataset", collect1.size());

req = httpUtils.sendGetWithToken(modelUrl, null, token);
stringObjectMap = JacksonUtil.parseJSONStr2Map(req);
projects = (List<Map<String, Object>>) stringObjectMap.get("projects");
List<ModelsVo> collect2 = modelsService.convert(projects, Constant.Topic_model, null, null);
assetCountMap.put("model", collect2.size());
assetCountMap.put("dataset", (int) newDatasetVos.getTotalElements());
assetCountMap.put("model", (int) modelsVos.getTotalElements());


// 镜像 // 镜像
Image image = new Image(); Image image = new Image();
if (isPublic) { if (isPublic) {
image.setImageType(Constant.Image_Type_Pub); image.setImageType(Constant.Image_Type_Pub);
}else {
} else {
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
image.setCreateBy(loginUser.getUsername()); image.setCreateBy(loginUser.getUsername());
image.setImageType(Constant.Image_Type_Pri); image.setImageType(Constant.Image_Type_Pri);


Loading…
Cancel
Save