From db5bda1bba47e27a57e25c10311382c2b9516e9d Mon Sep 17 00:00:00 2001 From: cuijiawang Date: Sat, 27 Sep 2025 14:19:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8?= =?UTF-8?q?=20=E6=A8=A1=E6=9D=BF=E4=BB=93=E5=BA=93fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TemplateRepositoryController.java | 17 --- .../mapper/UserTemplateRepositoryMapper.java | 14 ++ .../impl/TemplateRepositoryServiceImpl.java | 122 ++++++++++++++++-- 3 files changed, 122 insertions(+), 31 deletions(-) diff --git a/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/controller/TemplateRepositoryController.java b/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/controller/TemplateRepositoryController.java index c00cc87..930c121 100644 --- a/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/controller/TemplateRepositoryController.java +++ b/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/controller/TemplateRepositoryController.java @@ -64,23 +64,6 @@ public class TemplateRepositoryController { } } - /** - * 从用户仓库移除模板 - */ - @PostMapping("/remove") - public R removeTemplateFromRepository(@RequestBody Map 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()); - } - } /** * 切换模板启用状态 diff --git a/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/mapper/UserTemplateRepositoryMapper.java b/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/mapper/UserTemplateRepositoryMapper.java index e8c0324..738445c 100644 --- a/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/mapper/UserTemplateRepositoryMapper.java +++ b/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/mapper/UserTemplateRepositoryMapper.java @@ -41,6 +41,20 @@ public interface UserTemplateRepositoryMapper extends BaseMapper 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); + /** * 检查模板是否已添加到用户仓库 * diff --git a/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/service/impl/TemplateRepositoryServiceImpl.java b/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/service/impl/TemplateRepositoryServiceImpl.java index 15f1c1b..2860d6a 100644 --- a/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/service/impl/TemplateRepositoryServiceImpl.java +++ b/agileboot-system/wol-codegenerator/src/main/java/com/agileboot/codegen/service/impl/TemplateRepositoryServiceImpl.java @@ -99,6 +99,9 @@ public class TemplateRepositoryServiceImpl implements ITemplateRepositoryService @Override public List getAvailableTemplates(Long userId) { + // 确保用户仓库已初始化 + initUserRepository(userId); + List 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 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);