From b145ce12e119a12c8a090dbb7924c574e8bd7b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Thu, 25 Sep 2025 10:07:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor(cms):=20=E4=BC=98=E5=8C=96=E7=BD=91?= =?UTF-8?q?=E7=AB=99=E5=88=9B=E5=BB=BA=E6=97=B6=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 仅在templateId存在且大于0时执行数据复制操作 - 添加无效模板ID时的日志警告提示-保持原有国际化、参数、模型、广告、链接及栏目文章的复制逻辑- 修复可能因templateId为null导致的潜在空指针异常 --- .../service/impl/CmsWebsiteServiceImpl.java | 225 +++++++++--------- 1 file changed, 109 insertions(+), 116 deletions(-) diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java index a38c35e..0bc0566 100644 --- a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java @@ -173,123 +173,116 @@ public class CmsWebsiteServiceImpl extends ServiceImpl logs = cmsLangLogMapper.selectListAllRel(cmsLangLogParam); - logs.forEach(d->{ - d.setTenantId(loginUser.getTenantId()); - }); - cmsLangLogService.saveBatch(logs); - - // TODO 复制参数 - final CmsWebsiteFieldParam param = new CmsWebsiteFieldParam(); - param.setUserId(websiteUserId); - final List fields = cmsWebsiteFieldMapper.selectListAllRel(param); - fields.forEach(d->{ - d.setTenantId(loginUser.getTenantId()); - }); - cmsWebsiteFieldService.saveBatch(fields); - - // TODO 复制模型 - final CmsModelParam modelParam = new CmsModelParam(); - modelParam.setWebsiteUserId(websiteUserId); - final List models = cmsModelMapper.selectListAllRel(modelParam); - models.forEach(d->{ - d.setUserId(loginUser.getUserId()); - d.setTenantId(loginUser.getTenantId()); - }); - cmsModelService.saveBatch(models); - - // TODO 复制广告 - final CmsAdParam cmsAdParam = new CmsAdParam(); - cmsAdParam.setWebsiteUserId(websiteUserId); - final List ads = cmsAdMapper.selectListAllRel(cmsAdParam); - ads.forEach(d -> { - d.setUserId(loginUser.getUserId()); - d.setTenantId(loginUser.getTenantId()); - }); - cmsAdService.saveBatch(ads); - - // TODO 复制链接 - CmsLinkParam cmsLinkParam = new CmsLinkParam(); - cmsLinkParam.setWebsiteUserId(websiteUserId); - final List links = cmsLinkMapper.selectListAllRel(cmsLinkParam); - links.forEach(d -> { - d.setUserId(loginUser.getUserId()); - d.setTenantId(loginUser.getTenantId()); - }); - cmsLinkService.saveBatch(links); - - // TODO 复制订单 -// CmsOrderParam cmsOrderParam = new CmsOrderParam(); -// cmsOrderParam.setWebsiteUserId(websiteUserId); -// final List orders = cmsOrderMapper.selectListAllRel(cmsOrderParam); -// orders.forEach(d -> { -// d.setUserId(loginUser.getUserId()); -// d.setTenantId(loginUser.getTenantId()); -// }); -// cmsOrderService.saveBatch(orders); - - - // TODO 复制栏目和文章、文章内容 - CmsNavigationParam cmsNavigationParam = new CmsNavigationParam(); - cmsNavigationParam.setWebsiteUserId(websiteUserId); - cmsNavigationParam.setParentId(0); - final List parents = cmsNavigationMapper.selectListAllRel(cmsNavigationParam); - parents.forEach(d -> { - Integer navigationId = d.getNavigationId(); - // 复制顶级栏目 - d.setTenantId(loginUser.getTenantId()); - d.setUserId(loginUser.getUserId()); - if (cmsNavigationService.save(d)) { - cmsNavigationService.saveAsync(d); - // 复制栏目文章 - CmsArticleParam cmsArticleParam = new CmsArticleParam(); - cmsArticleParam.setWebsiteUserId(websiteUserId); - cmsArticleParam.setCategoryId(navigationId); - final List articles = cmsArticleMapper.selectListAllRel(cmsArticleParam); - articles.forEach(a -> { - a.setCategoryId(d.getNavigationId()); - a.setUserId(loginUser.getUserId()); - a.setTenantId(loginUser.getTenantId()); - if (cmsArticleService.save(a)) { - final CmsArticleContent content = new CmsArticleContent(); - content.setArticleId(a.getArticleId()); - content.setContent(a.getContent()); - cmsArticleContentService.save(content); - } - }); - // 复制子栏目 - cmsNavigationParam.setParentId(navigationId); - final List navigations = cmsNavigationMapper.selectListAllRel(cmsNavigationParam); - navigations.forEach(c -> { - cmsArticleParam.setCategoryId(c.getNavigationId()); - c.setParentId(d.getNavigationId()); - c.setTenantId(loginUser.getTenantId()); - c.setUserId(loginUser.getUserId()); - cmsNavigationService.save(c); - cmsNavigationService.saveAsync(c); - // 复制子栏目文章 - final List articles2 = cmsArticleMapper.selectListAllRel(cmsArticleParam); - articles2.forEach(a2 -> { - a2.setCategoryId(c.getNavigationId()); - a2.setParentId(c.getParentId()); - a2.setUserId(loginUser.getUserId()); - a2.setTenantId(loginUser.getTenantId()); - if (cmsArticleService.save(a2)) { - final CmsArticleContent content = new CmsArticleContent(); - content.setArticleId(a2.getArticleId()); - content.setContent(a2.getContent()); - cmsArticleContentService.save(content); - } + Integer websiteUserId = website.getTemplateId(); + + // 只有当templateId存在时才执行复制操作 + if (websiteUserId != null && websiteUserId > 0) { + // TODO 国际化 + final CmsLangLogParam cmsLangLogParam = new CmsLangLogParam(); + cmsLangLogParam.setWebsiteUserId(websiteUserId); + final List logs = cmsLangLogMapper.selectListAllRel(cmsLangLogParam); + logs.forEach(d->{ + d.setTenantId(loginUser.getTenantId()); + }); + cmsLangLogService.saveBatch(logs); + + // TODO 复制参数 + final CmsWebsiteFieldParam param = new CmsWebsiteFieldParam(); + param.setUserId(websiteUserId); + final List fields = cmsWebsiteFieldMapper.selectListAllRel(param); + fields.forEach(d->{ + d.setTenantId(loginUser.getTenantId()); + }); + cmsWebsiteFieldService.saveBatch(fields); + + // TODO 复制模型 + final CmsModelParam modelParam = new CmsModelParam(); + modelParam.setWebsiteUserId(websiteUserId); + final List models = cmsModelMapper.selectListAllRel(modelParam); + models.forEach(d->{ + d.setUserId(loginUser.getUserId()); + d.setTenantId(loginUser.getTenantId()); + }); + cmsModelService.saveBatch(models); + + // TODO 复制广告 + final CmsAdParam cmsAdParam = new CmsAdParam(); + cmsAdParam.setWebsiteUserId(websiteUserId); + final List ads = cmsAdMapper.selectListAllRel(cmsAdParam); + ads.forEach(d -> { + d.setUserId(loginUser.getUserId()); + d.setTenantId(loginUser.getTenantId()); + }); + cmsAdService.saveBatch(ads); + + // TODO 复制链接 + CmsLinkParam cmsLinkParam = new CmsLinkParam(); + cmsLinkParam.setWebsiteUserId(websiteUserId); + final List links = cmsLinkMapper.selectListAllRel(cmsLinkParam); + links.forEach(d -> { + d.setUserId(loginUser.getUserId()); + d.setTenantId(loginUser.getTenantId()); + }); + cmsLinkService.saveBatch(links); + + // TODO 复制栏目和文章、文章内容 + CmsNavigationParam cmsNavigationParam = new CmsNavigationParam(); + cmsNavigationParam.setWebsiteUserId(websiteUserId); + cmsNavigationParam.setParentId(0); + final List parents = cmsNavigationMapper.selectListAllRel(cmsNavigationParam); + parents.forEach(d -> { + Integer navigationId = d.getNavigationId(); + // 复制顶级栏目 + d.setTenantId(loginUser.getTenantId()); + d.setUserId(loginUser.getUserId()); + if (cmsNavigationService.save(d)) { + cmsNavigationService.saveAsync(d); + // 复制栏目文章 + CmsArticleParam cmsArticleParam = new CmsArticleParam(); + cmsArticleParam.setWebsiteUserId(websiteUserId); + cmsArticleParam.setCategoryId(navigationId); + final List articles = cmsArticleMapper.selectListAllRel(cmsArticleParam); + articles.forEach(a -> { + a.setCategoryId(d.getNavigationId()); + a.setUserId(loginUser.getUserId()); + a.setTenantId(loginUser.getTenantId()); + if (cmsArticleService.save(a)) { + final CmsArticleContent content = new CmsArticleContent(); + content.setArticleId(a.getArticleId()); + content.setContent(a.getContent()); + cmsArticleContentService.save(content); + } + }); + // 复制子栏目 + cmsNavigationParam.setParentId(navigationId); + final List navigations = cmsNavigationMapper.selectListAllRel(cmsNavigationParam); + navigations.forEach(c -> { + cmsArticleParam.setCategoryId(c.getNavigationId()); + c.setParentId(d.getNavigationId()); + c.setTenantId(loginUser.getTenantId()); + c.setUserId(loginUser.getUserId()); + cmsNavigationService.save(c); + cmsNavigationService.saveAsync(c); + // 复制子栏目文章 + final List articles2 = cmsArticleMapper.selectListAllRel(cmsArticleParam); + articles2.forEach(a2 -> { + a2.setCategoryId(c.getNavigationId()); + a2.setParentId(c.getParentId()); + a2.setUserId(loginUser.getUserId()); + a2.setTenantId(loginUser.getTenantId()); + if (cmsArticleService.save(a2)) { + final CmsArticleContent content = new CmsArticleContent(); + content.setArticleId(a2.getArticleId()); + content.setContent(a2.getContent()); + cmsArticleContentService.save(content); + } + }); }); - }); - } - }); + } + }); + } else { + log.warn("没有有效的模板ID,跳过复制操作"); + } // 新增项目 final Project project = new Project();