Fix front project draft service safeguards

This commit is contained in:
王鹏
2026-05-22 09:26:58 +08:00
parent 98cd4f7df0
commit ebb529213a
5 changed files with 51 additions and 6 deletions

View File

@@ -11,4 +11,5 @@ public interface FrontProjectGenerationMapper
public int insertFrontProjectGeneration(FrontProjectGeneration frontProjectGeneration); public int insertFrontProjectGeneration(FrontProjectGeneration frontProjectGeneration);
public int updateFrontProjectGeneration(FrontProjectGeneration frontProjectGeneration); public int updateFrontProjectGeneration(FrontProjectGeneration frontProjectGeneration);
public int deleteFrontProjectGenerationById(Long generationId); public int deleteFrontProjectGenerationById(Long generationId);
public int deleteGenerationsByProjectId(Long projectId);
} }

View File

@@ -27,11 +27,11 @@ public class FrontProjectConverter
genProject.setFrontFramework(project.getFrontFramework()); genProject.setFrontFramework(project.getFrontFramework());
genProject.setBackFramework(project.getBackFramework()); genProject.setBackFramework(project.getBackFramework());
genProject.setStatus(project.getStatus()); genProject.setStatus(project.getStatus());
genProject.setTables(toGenTables(project.getTables())); genProject.setTables(toGenTables(project.getTables(), project.getPackageName()));
return genProject; return genProject;
} }
private static List<GenTable> toGenTables(List<FrontProjectTable> tables) private static List<GenTable> toGenTables(List<FrontProjectTable> tables, String packageName)
{ {
List<GenTable> genTables = new ArrayList<GenTable>(); List<GenTable> genTables = new ArrayList<GenTable>();
if (tables == null) if (tables == null)
@@ -40,18 +40,19 @@ public class FrontProjectConverter
} }
for (FrontProjectTable table : tables) for (FrontProjectTable table : tables)
{ {
genTables.add(toGenTable(table)); genTables.add(toGenTable(table, packageName));
} }
return genTables; return genTables;
} }
private static GenTable toGenTable(FrontProjectTable table) private static GenTable toGenTable(FrontProjectTable table, String packageName)
{ {
GenTable genTable = new GenTable(); GenTable genTable = new GenTable();
genTable.setTableId(table.getTableId()); genTable.setTableId(table.getTableId());
genTable.setTableName(table.getTableName()); genTable.setTableName(table.getTableName());
genTable.setTableComment(table.getTableComment()); genTable.setTableComment(table.getTableComment());
genTable.setClassName(table.getClassName()); genTable.setClassName(table.getClassName());
genTable.setPackageName(packageName);
genTable.setModuleName(table.getModuleName()); genTable.setModuleName(table.getModuleName());
genTable.setBusinessName(table.getBusinessName()); genTable.setBusinessName(table.getBusinessName());
genTable.setFunctionName(table.getFunctionName()); genTable.setFunctionName(table.getFunctionName());
@@ -59,10 +60,24 @@ public class FrontProjectConverter
genTable.setTplWebType(table.getTplWebType()); genTable.setTplWebType(table.getTplWebType());
genTable.setOptions(table.getOptions()); genTable.setOptions(table.getOptions());
genTable.setCreateTableSql(table.getCreateTableSql()); genTable.setCreateTableSql(table.getCreateTableSql());
genTable.setColumns(toGenColumns(table.getColumns())); List<GenTableColumn> columns = toGenColumns(table.getColumns());
genTable.setColumns(columns);
genTable.setPkColumn(findPkColumn(columns));
return genTable; return genTable;
} }
private static GenTableColumn findPkColumn(List<GenTableColumn> columns)
{
for (GenTableColumn column : columns)
{
if ("1".equals(column.getIsPk()))
{
return column;
}
}
return null;
}
private static List<GenTableColumn> toGenColumns(List<FrontProjectColumn> columns) private static List<GenTableColumn> toGenColumns(List<FrontProjectColumn> columns)
{ {
List<GenTableColumn> genColumns = new ArrayList<GenTableColumn>(); List<GenTableColumn> genColumns = new ArrayList<GenTableColumn>();

View File

@@ -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.FrontProjectCreateRequest;
import com.ruoyi.generator.domain.front.dto.FrontProjectUpdateRequest; import com.ruoyi.generator.domain.front.dto.FrontProjectUpdateRequest;
import com.ruoyi.generator.mapper.front.FrontProjectColumnMapper; 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.FrontProjectMapper;
import com.ruoyi.generator.mapper.front.FrontProjectTableMapper; import com.ruoyi.generator.mapper.front.FrontProjectTableMapper;
@@ -28,11 +30,16 @@ public class FrontProjectServiceImpl implements IFrontProjectService
private FrontProjectTableMapper frontProjectTableMapper; private FrontProjectTableMapper frontProjectTableMapper;
@Autowired @Autowired
private FrontProjectColumnMapper frontProjectColumnMapper; private FrontProjectColumnMapper frontProjectColumnMapper;
@Autowired
private FrontProjectFileMapper frontProjectFileMapper;
@Autowired
private FrontProjectGenerationMapper frontProjectGenerationMapper;
@Override @Override
public FrontProject createProject(Long userId, FrontProjectCreateRequest request) 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("项目名称不能为空"); throw new ServiceException("项目名称不能为空");
} }
@@ -56,6 +63,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService
@Override @Override
public List<FrontProject> listProjects(Long userId) public List<FrontProject> listProjects(Long userId)
{ {
assertFrontUserLoggedIn(userId);
FrontProject query = new FrontProject(); FrontProject query = new FrontProject();
query.setUserId(userId); query.setUserId(userId);
return frontProjectMapper.selectFrontProjectList(query); return frontProjectMapper.selectFrontProjectList(query);
@@ -64,6 +72,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService
@Override @Override
public FrontProject getProject(Long userId, Long projectId) public FrontProject getProject(Long userId, Long projectId)
{ {
assertFrontUserLoggedIn(userId);
FrontProject project = frontProjectMapper.selectFrontProjectByUserAndId(userId, projectId); FrontProject project = frontProjectMapper.selectFrontProjectByUserAndId(userId, projectId);
if (project == null) if (project == null)
{ {
@@ -75,6 +84,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService
@Override @Override
public int updateProject(Long userId, Long projectId, FrontProjectUpdateRequest request) public int updateProject(Long userId, Long projectId, FrontProjectUpdateRequest request)
{ {
assertFrontUserLoggedIn(userId);
if (request == null) if (request == null)
{ {
throw new ServiceException("项目参数不能为空"); throw new ServiceException("项目参数不能为空");
@@ -95,7 +105,10 @@ public class FrontProjectServiceImpl implements IFrontProjectService
@Transactional @Transactional
public int deleteProject(Long userId, Long projectId) public int deleteProject(Long userId, Long projectId)
{ {
assertFrontUserLoggedIn(userId);
getProject(userId, projectId); getProject(userId, projectId);
frontProjectFileMapper.deleteFilesByProjectId(projectId);
frontProjectGenerationMapper.deleteGenerationsByProjectId(projectId);
frontProjectColumnMapper.deleteColumnsByProjectId(projectId); frontProjectColumnMapper.deleteColumnsByProjectId(projectId);
frontProjectTableMapper.deleteTablesByProjectId(projectId); frontProjectTableMapper.deleteTablesByProjectId(projectId);
return frontProjectMapper.deleteFrontProjectByUserAndId(userId, projectId); return frontProjectMapper.deleteFrontProjectByUserAndId(userId, projectId);
@@ -104,6 +117,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService
@Override @Override
public DatabaseDesignResponse getDatabase(Long userId, Long projectId) public DatabaseDesignResponse getDatabase(Long userId, Long projectId)
{ {
assertFrontUserLoggedIn(userId);
getProject(userId, projectId); getProject(userId, projectId);
DatabaseDesignResponse response = new DatabaseDesignResponse(); DatabaseDesignResponse response = new DatabaseDesignResponse();
response.setProjectId(projectId); response.setProjectId(projectId);
@@ -127,6 +141,7 @@ public class FrontProjectServiceImpl implements IFrontProjectService
@Transactional @Transactional
public DatabaseDesignResponse saveDatabase(Long userId, Long projectId, DatabaseDesignResponse request) public DatabaseDesignResponse saveDatabase(Long userId, Long projectId, DatabaseDesignResponse request)
{ {
assertFrontUserLoggedIn(userId);
getProject(userId, projectId); getProject(userId, projectId);
frontProjectColumnMapper.deleteColumnsByProjectId(projectId); frontProjectColumnMapper.deleteColumnsByProjectId(projectId);
frontProjectTableMapper.deleteTablesByProjectId(projectId); frontProjectTableMapper.deleteTablesByProjectId(projectId);
@@ -153,6 +168,14 @@ public class FrontProjectServiceImpl implements IFrontProjectService
return getDatabase(userId, projectId); return getDatabase(userId, projectId);
} }
private void assertFrontUserLoggedIn(Long userId)
{
if (userId == null)
{
throw new ServiceException("前台用户未登录");
}
}
private String toProjectFileName(String projectName) private String toProjectFileName(String projectName)
{ {
return StringUtils.defaultString(projectName).trim().replaceAll("\\s+", "-").toLowerCase(); return StringUtils.defaultString(projectName).trim().replaceAll("\\s+", "-").toLowerCase();

View File

@@ -92,4 +92,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<delete id="deleteFrontProjectGenerationById" parameterType="Long"> <delete id="deleteFrontProjectGenerationById" parameterType="Long">
delete from front_project_generation where generation_id = #{generationId} delete from front_project_generation where generation_id = #{generationId}
</delete> </delete>
<delete id="deleteGenerationsByProjectId" parameterType="Long">
delete from front_project_generation where project_id = #{projectId}
</delete>
</mapper> </mapper>

View File

@@ -51,6 +51,8 @@ public class FrontProjectConverterTest
assertEquals("com.easycode.vehicle", genProject.getPackageName()); assertEquals("com.easycode.vehicle", genProject.getPackageName());
assertEquals(1, genProject.getTables().size()); assertEquals(1, genProject.getTables().size());
assertEquals("car_info", genProject.getTables().get(0).getTableName()); 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).getColumns().get(0).getJavaField());
assertEquals("carId", genProject.getTables().get(0).getPkColumn().getJavaField());
} }
} }