代码生成器 模板仓库fix

This commit is contained in:
cuijiawang 2025-09-27 14:19:02 +08:00
parent c9929c84d2
commit db5bda1bba
3 changed files with 122 additions and 31 deletions

View File

@ -64,23 +64,6 @@ public class TemplateRepositoryController {
}
}
/**
* 从用户仓库移除模板
*/
@PostMapping("/remove")
public R<Void> removeTemplateFromRepository(@RequestBody Map<String, Object> params) {
try {
String templateSource = params.get("templateSource").toString();
String templateId = params.get("templateId").toString();
Long userId = LoginHelper.getUserId();
boolean success = templateRepositoryService.removeTemplateFromRepository(userId, templateSource, templateId);
return success ? R.ok() : R.fail("从仓库移除模板失败");
} catch (Exception e) {
log.error("从仓库移除模板失败", e);
return R.fail(e.getMessage());
}
}
/**
* 切换模板启用状态

View File

@ -41,6 +41,20 @@ public interface UserTemplateRepositoryMapper extends BaseMapper<UserTemplateRep
"ORDER BY sort_order ASC, create_time ASC")
List<UserTemplateRepository> selectAllByUserId(@Param("userId") Long userId);
/**
* 根据模板信息查询用户仓库配置
*
* @param userId 用户ID
* @param templateSource 模板来源
* @param templateId 模板ID
* @return 模板仓库配置
*/
@Select("SELECT * FROM user_template_repository " +
"WHERE user_id = #{userId} AND template_source = #{templateSource} AND template_id = #{templateId}")
UserTemplateRepository selectByTemplate(@Param("userId") Long userId,
@Param("templateSource") String templateSource,
@Param("templateId") String templateId);
/**
* 检查模板是否已添加到用户仓库
*

View File

@ -99,6 +99,9 @@ public class TemplateRepositoryServiceImpl implements ITemplateRepositoryService
@Override
public List<TemplateRepositoryDTO> getAvailableTemplates(Long userId) {
// 确保用户仓库已初始化
initUserRepository(userId);
List<TemplateRepositoryDTO> result = new ArrayList<>();
// 1. 添加系统模板
@ -117,9 +120,9 @@ public class TemplateRepositoryServiceImpl implements ITemplateRepositoryService
dto.setTemplateName(template.getString("name"));
dto.setTemplateGroup(groupName);
// 检查是否已添加到用户仓库
boolean exists = repositoryMapper.checkTemplateExists(userId, "system", template.getString("id")) > 0;
dto.setIsEnabled(exists ? 1 : 0);
// 从用户仓库获取显示状态
UserTemplateRepository userRepo = repositoryMapper.selectByTemplate(userId, "system", template.getString("id"));
dto.setIsEnabled(userRepo != null ? userRepo.getIsEnabled() : 1); // 默认显示
result.add(dto);
}
@ -137,9 +140,9 @@ public class TemplateRepositoryServiceImpl implements ITemplateRepositoryService
dto.setTemplateName(template.getTemplateName());
dto.setTemplateGroup(template.getTemplateGroup());
// 检查是否已添加到用户仓库
boolean exists = repositoryMapper.checkTemplateExists(userId, "user", template.getId().toString()) > 0;
dto.setIsEnabled(exists ? 1 : 0);
// 从用户仓库获取显示状态
UserTemplateRepository userRepo = repositoryMapper.selectByTemplate(userId, "user", template.getId().toString());
dto.setIsEnabled(userRepo != null ? userRepo.getIsEnabled() : 1); // 默认显示
result.add(dto);
}
@ -177,7 +180,72 @@ public class TemplateRepositoryServiceImpl implements ITemplateRepositoryService
@Override
@Transactional
public boolean toggleTemplateStatus(Long userId, String templateSource, String templateId, Integer isEnabled) {
return repositoryMapper.toggleTemplateStatus(userId, templateSource, templateId, isEnabled) > 0;
// 先检查记录是否存在
if (repositoryMapper.checkTemplateExists(userId, templateSource, templateId) == 0) {
// 记录不存在需要先创建
log.info("模板记录不存在,先创建记录: userId={}, templateSource={}, templateId={}", userId, templateSource, templateId);
// 获取模板信息
String templateName = "";
String templateGroup = "";
if ("system".equals(templateSource)) {
// 系统模板从配置中获取信息
try {
JSONArray systemTemplates = JSONArray.parseArray(generatorService.getTemplateConfig());
for (Object groupObj : systemTemplates) {
JSONObject group = (JSONObject) groupObj;
String groupName = group.getString("group");
JSONArray templates = group.getJSONArray("templates");
for (Object templateObj : templates) {
JSONObject template = (JSONObject) templateObj;
if (templateId.equals(template.getString("id"))) {
templateName = template.getString("name");
templateGroup = groupName;
break;
}
}
if (!templateName.isEmpty()) break;
}
} catch (Exception e) {
log.error("获取系统模板信息失败", e);
return false;
}
} else if ("user".equals(templateSource)) {
// 用户模板从数据库获取信息
try {
UserTemplate userTemplate = userTemplateMapper.selectById(Long.parseLong(templateId));
if (userTemplate != null) {
templateName = userTemplate.getTemplateName();
templateGroup = userTemplate.getTemplateGroup();
}
} catch (Exception e) {
log.error("获取用户模板信息失败", e);
return false;
}
}
if (templateName.isEmpty()) {
log.error("无法获取模板信息: templateSource={}, templateId={}", templateSource, templateId);
return false;
}
// 创建记录
UserTemplateRepository repository = new UserTemplateRepository();
repository.setUserId(userId);
repository.setTemplateSource(templateSource);
repository.setTemplateId(templateId);
repository.setTemplateName(templateName);
repository.setTemplateGroup(templateGroup);
repository.setIsEnabled(isEnabled);
repository.setSortOrder(repositoryMapper.getMaxSortOrder(userId) + 1);
return repositoryMapper.insert(repository) > 0;
} else {
// 记录存在直接更新状态
return repositoryMapper.toggleTemplateStatus(userId, templateSource, templateId, isEnabled) > 0;
}
}
@Override
@ -199,9 +267,10 @@ public class TemplateRepositoryServiceImpl implements ITemplateRepositoryService
@Transactional
public boolean initUserRepository(Long userId) {
try {
// 将系统默认模板添加到用户仓库
int sortOrder = repositoryMapper.getMaxSortOrder(userId) + 1;
// 1. 将系统默认模板添加到用户仓库如果不存在
JSONArray systemTemplates = JSONArray.parseArray(generatorService.getTemplateConfig());
int sortOrder = 1;
for (Object groupObj : systemTemplates) {
JSONObject group = (JSONObject) groupObj;
@ -210,19 +279,44 @@ public class TemplateRepositoryServiceImpl implements ITemplateRepositoryService
for (Object templateObj : templates) {
JSONObject template = (JSONObject) templateObj;
String templateId = template.getString("id");
// 检查是否已存在
if (repositoryMapper.checkTemplateExists(userId, "system", templateId) == 0) {
UserTemplateRepository repository = new UserTemplateRepository();
repository.setUserId(userId);
repository.setTemplateSource("system");
repository.setTemplateId(templateId);
repository.setTemplateName(template.getString("name"));
repository.setTemplateGroup(groupName);
repository.setIsEnabled(1); // 系统模板默认启用
repository.setSortOrder(sortOrder++);
repositoryMapper.insert(repository);
}
}
}
// 2. 将公开的用户模板添加到用户仓库如果不存在
List<UserTemplate> publicTemplates = userTemplateMapper.selectPublicTemplates(null);
for (UserTemplate template : publicTemplates) {
String templateId = template.getId().toString();
// 检查是否已存在
if (repositoryMapper.checkTemplateExists(userId, "user", templateId) == 0) {
UserTemplateRepository repository = new UserTemplateRepository();
repository.setUserId(userId);
repository.setTemplateSource("system");
repository.setTemplateId(template.getString("id"));
repository.setTemplateName(template.getString("name"));
repository.setTemplateGroup(groupName);
repository.setIsEnabled(1);
repository.setTemplateSource("user");
repository.setTemplateId(templateId);
repository.setTemplateName(template.getTemplateName());
repository.setTemplateGroup(template.getTemplateGroup());
repository.setIsEnabled(1); // 公开模板默认启用
repository.setSortOrder(sortOrder++);
repositoryMapper.insert(repository);
}
}
return true;
} catch (Exception e) {
log.error("初始化用户模板仓库失败", e);