From ebb529213afef8a649db02d54a32e4cb2f990874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=B9=8F?= Date: Fri, 22 May 2026 09:26:58 +0800 Subject: [PATCH] Fix front project draft service safeguards --- .../front/FrontProjectGenerationMapper.java | 1 + .../service/front/FrontProjectConverter.java | 25 +++++++++++++++---- .../front/FrontProjectServiceImpl.java | 25 ++++++++++++++++++- .../front/FrontProjectGenerationMapper.xml | 4 +++ .../front/FrontProjectConverterTest.java | 2 ++ 5 files changed, 51 insertions(+), 6 deletions(-) diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/front/FrontProjectGenerationMapper.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/front/FrontProjectGenerationMapper.java index 3b6e932..0b974d6 100644 --- a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/front/FrontProjectGenerationMapper.java +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/front/FrontProjectGenerationMapper.java @@ -11,4 +11,5 @@ public interface FrontProjectGenerationMapper public int insertFrontProjectGeneration(FrontProjectGeneration frontProjectGeneration); public int updateFrontProjectGeneration(FrontProjectGeneration frontProjectGeneration); public int deleteFrontProjectGenerationById(Long generationId); + public int deleteGenerationsByProjectId(Long projectId); } diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectConverter.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectConverter.java index b7b096f..b383ac0 100644 --- a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectConverter.java +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectConverter.java @@ -27,11 +27,11 @@ public class FrontProjectConverter genProject.setFrontFramework(project.getFrontFramework()); genProject.setBackFramework(project.getBackFramework()); genProject.setStatus(project.getStatus()); - genProject.setTables(toGenTables(project.getTables())); + genProject.setTables(toGenTables(project.getTables(), project.getPackageName())); return genProject; } - private static List toGenTables(List tables) + private static List toGenTables(List tables, String packageName) { List genTables = new ArrayList(); if (tables == null) @@ -40,18 +40,19 @@ public class FrontProjectConverter } for (FrontProjectTable table : tables) { - genTables.add(toGenTable(table)); + genTables.add(toGenTable(table, packageName)); } return genTables; } - private static GenTable toGenTable(FrontProjectTable table) + private static GenTable toGenTable(FrontProjectTable table, String packageName) { GenTable genTable = new GenTable(); genTable.setTableId(table.getTableId()); genTable.setTableName(table.getTableName()); genTable.setTableComment(table.getTableComment()); genTable.setClassName(table.getClassName()); + genTable.setPackageName(packageName); genTable.setModuleName(table.getModuleName()); genTable.setBusinessName(table.getBusinessName()); genTable.setFunctionName(table.getFunctionName()); @@ -59,10 +60,24 @@ public class FrontProjectConverter genTable.setTplWebType(table.getTplWebType()); genTable.setOptions(table.getOptions()); genTable.setCreateTableSql(table.getCreateTableSql()); - genTable.setColumns(toGenColumns(table.getColumns())); + List columns = toGenColumns(table.getColumns()); + genTable.setColumns(columns); + genTable.setPkColumn(findPkColumn(columns)); return genTable; } + private static GenTableColumn findPkColumn(List columns) + { + for (GenTableColumn column : columns) + { + if ("1".equals(column.getIsPk())) + { + return column; + } + } + return null; + } + private static List toGenColumns(List columns) { List genColumns = new ArrayList(); diff --git a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectServiceImpl.java b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectServiceImpl.java index 895b39d..3636752 100644 --- a/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectServiceImpl.java +++ b/RuoYi-Vue/ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/FrontProjectServiceImpl.java @@ -16,6 +16,8 @@ import com.ruoyi.generator.domain.front.dto.DatabaseTableDesign; import com.ruoyi.generator.domain.front.dto.FrontProjectCreateRequest; import com.ruoyi.generator.domain.front.dto.FrontProjectUpdateRequest; import com.ruoyi.generator.mapper.front.FrontProjectColumnMapper; +import com.ruoyi.generator.mapper.front.FrontProjectFileMapper; +import com.ruoyi.generator.mapper.front.FrontProjectGenerationMapper; import com.ruoyi.generator.mapper.front.FrontProjectMapper; import com.ruoyi.generator.mapper.front.FrontProjectTableMapper; @@ -28,11 +30,16 @@ public class FrontProjectServiceImpl implements IFrontProjectService private FrontProjectTableMapper frontProjectTableMapper; @Autowired private FrontProjectColumnMapper frontProjectColumnMapper; + @Autowired + private FrontProjectFileMapper frontProjectFileMapper; + @Autowired + private FrontProjectGenerationMapper frontProjectGenerationMapper; @Override public FrontProject createProject(Long userId, FrontProjectCreateRequest request) { - if (userId == null || request == null || StringUtils.isEmpty(request.getProjectName())) + assertFrontUserLoggedIn(userId); + if (request == null || StringUtils.isEmpty(request.getProjectName())) { throw new ServiceException("项目名称不能为空"); } @@ -56,6 +63,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService @Override public List listProjects(Long userId) { + assertFrontUserLoggedIn(userId); FrontProject query = new FrontProject(); query.setUserId(userId); return frontProjectMapper.selectFrontProjectList(query); @@ -64,6 +72,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService @Override public FrontProject getProject(Long userId, Long projectId) { + assertFrontUserLoggedIn(userId); FrontProject project = frontProjectMapper.selectFrontProjectByUserAndId(userId, projectId); if (project == null) { @@ -75,6 +84,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService @Override public int updateProject(Long userId, Long projectId, FrontProjectUpdateRequest request) { + assertFrontUserLoggedIn(userId); if (request == null) { throw new ServiceException("项目参数不能为空"); @@ -95,7 +105,10 @@ public class FrontProjectServiceImpl implements IFrontProjectService @Transactional public int deleteProject(Long userId, Long projectId) { + assertFrontUserLoggedIn(userId); getProject(userId, projectId); + frontProjectFileMapper.deleteFilesByProjectId(projectId); + frontProjectGenerationMapper.deleteGenerationsByProjectId(projectId); frontProjectColumnMapper.deleteColumnsByProjectId(projectId); frontProjectTableMapper.deleteTablesByProjectId(projectId); return frontProjectMapper.deleteFrontProjectByUserAndId(userId, projectId); @@ -104,6 +117,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService @Override public DatabaseDesignResponse getDatabase(Long userId, Long projectId) { + assertFrontUserLoggedIn(userId); getProject(userId, projectId); DatabaseDesignResponse response = new DatabaseDesignResponse(); response.setProjectId(projectId); @@ -127,6 +141,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService @Transactional public DatabaseDesignResponse saveDatabase(Long userId, Long projectId, DatabaseDesignResponse request) { + assertFrontUserLoggedIn(userId); getProject(userId, projectId); frontProjectColumnMapper.deleteColumnsByProjectId(projectId); frontProjectTableMapper.deleteTablesByProjectId(projectId); @@ -153,6 +168,14 @@ public class FrontProjectServiceImpl implements IFrontProjectService return getDatabase(userId, projectId); } + private void assertFrontUserLoggedIn(Long userId) + { + if (userId == null) + { + throw new ServiceException("前台用户未登录"); + } + } + private String toProjectFileName(String projectName) { return StringUtils.defaultString(projectName).trim().replaceAll("\\s+", "-").toLowerCase(); diff --git a/RuoYi-Vue/ruoyi-generator/src/main/resources/mapper/front/FrontProjectGenerationMapper.xml b/RuoYi-Vue/ruoyi-generator/src/main/resources/mapper/front/FrontProjectGenerationMapper.xml index c0c0bb9..060e4fd 100644 --- a/RuoYi-Vue/ruoyi-generator/src/main/resources/mapper/front/FrontProjectGenerationMapper.xml +++ b/RuoYi-Vue/ruoyi-generator/src/main/resources/mapper/front/FrontProjectGenerationMapper.xml @@ -92,4 +92,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete from front_project_generation where generation_id = #{generationId} + + + delete from front_project_generation where project_id = #{projectId} + diff --git a/RuoYi-Vue/ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/FrontProjectConverterTest.java b/RuoYi-Vue/ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/FrontProjectConverterTest.java index bfba641..90186b6 100644 --- a/RuoYi-Vue/ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/FrontProjectConverterTest.java +++ b/RuoYi-Vue/ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/FrontProjectConverterTest.java @@ -51,6 +51,8 @@ public class FrontProjectConverterTest assertEquals("com.easycode.vehicle", genProject.getPackageName()); assertEquals(1, genProject.getTables().size()); assertEquals("car_info", genProject.getTables().get(0).getTableName()); + assertEquals("com.easycode.vehicle", genProject.getTables().get(0).getPackageName()); assertEquals("carId", genProject.getTables().get(0).getColumns().get(0).getJavaField()); + assertEquals("carId", genProject.getTables().get(0).getPkColumn().getJavaField()); } }