refactor(cms): 优化网站创建时的数据复制逻辑

- 仅在templateId存在且大于0时执行数据复制操作
- 添加无效模板ID时的日志警告提示-保持原有国际化、参数、模型、广告、链接及栏目文章的复制逻辑- 修复可能因templateId为null导致的潜在空指针异常
This commit is contained in:
2025-09-25 10:07:13 +08:00
parent 246e402730
commit b145ce12e1

View File

@@ -173,123 +173,116 @@ public class CmsWebsiteServiceImpl extends ServiceImpl<CmsWebsiteMapper, CmsWebs
// cmsWebsiteSettingService.save(setting); // cmsWebsiteSettingService.save(setting);
// 将网站创建者的userId做为查询条件 10257(4716),10324(6978),10398(26564) // 将网站创建者的userId做为查询条件 10257(4716),10324(6978),10398(26564)
Integer websiteUserId = website.getTemplateId() != null ? website.getTemplateId() : 0; Integer websiteUserId = website.getTemplateId();
// 只有当templateId存在时才执行复制操作
if (websiteUserId != null && websiteUserId > 0) {
// TODO 国际化
final CmsLangLogParam cmsLangLogParam = new CmsLangLogParam();
cmsLangLogParam.setWebsiteUserId(websiteUserId);
final List<CmsLangLog> 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<CmsWebsiteField> fields = cmsWebsiteFieldMapper.selectListAllRel(param);
fields.forEach(d->{
d.setTenantId(loginUser.getTenantId());
});
cmsWebsiteFieldService.saveBatch(fields);
// TODO 国际化 // TODO 复制模型
final CmsLangLogParam cmsLangLogParam = new CmsLangLogParam(); final CmsModelParam modelParam = new CmsModelParam();
cmsLangLogParam.setWebsiteUserId(websiteUserId); modelParam.setWebsiteUserId(websiteUserId);
final List<CmsLangLog> logs = cmsLangLogMapper.selectListAllRel(cmsLangLogParam); final List<CmsModel> models = cmsModelMapper.selectListAllRel(modelParam);
logs.forEach(d->{ models.forEach(d->{
d.setTenantId(loginUser.getTenantId()); d.setUserId(loginUser.getUserId());
}); d.setTenantId(loginUser.getTenantId());
cmsLangLogService.saveBatch(logs); });
cmsModelService.saveBatch(models);
// TODO 复制参数 // TODO 复制广告
final CmsWebsiteFieldParam param = new CmsWebsiteFieldParam(); final CmsAdParam cmsAdParam = new CmsAdParam();
param.setUserId(websiteUserId); cmsAdParam.setWebsiteUserId(websiteUserId);
final List<CmsWebsiteField> fields = cmsWebsiteFieldMapper.selectListAllRel(param); final List<CmsAd> ads = cmsAdMapper.selectListAllRel(cmsAdParam);
fields.forEach(d->{ ads.forEach(d -> {
d.setTenantId(loginUser.getTenantId()); d.setUserId(loginUser.getUserId());
}); d.setTenantId(loginUser.getTenantId());
cmsWebsiteFieldService.saveBatch(fields); });
cmsAdService.saveBatch(ads);
// TODO 复制模型 // TODO 复制链接
final CmsModelParam modelParam = new CmsModelParam(); CmsLinkParam cmsLinkParam = new CmsLinkParam();
modelParam.setWebsiteUserId(websiteUserId); cmsLinkParam.setWebsiteUserId(websiteUserId);
final List<CmsModel> models = cmsModelMapper.selectListAllRel(modelParam); final List<CmsLink> links = cmsLinkMapper.selectListAllRel(cmsLinkParam);
models.forEach(d->{ links.forEach(d -> {
d.setUserId(loginUser.getUserId()); d.setUserId(loginUser.getUserId());
d.setTenantId(loginUser.getTenantId()); d.setTenantId(loginUser.getTenantId());
}); });
cmsModelService.saveBatch(models); cmsLinkService.saveBatch(links);
// TODO 复制广告 // TODO 复制栏目和文章、文章内容
final CmsAdParam cmsAdParam = new CmsAdParam(); CmsNavigationParam cmsNavigationParam = new CmsNavigationParam();
cmsAdParam.setWebsiteUserId(websiteUserId); cmsNavigationParam.setWebsiteUserId(websiteUserId);
final List<CmsAd> ads = cmsAdMapper.selectListAllRel(cmsAdParam); cmsNavigationParam.setParentId(0);
ads.forEach(d -> { final List<CmsNavigation> parents = cmsNavigationMapper.selectListAllRel(cmsNavigationParam);
d.setUserId(loginUser.getUserId()); parents.forEach(d -> {
d.setTenantId(loginUser.getTenantId()); Integer navigationId = d.getNavigationId();
}); // 复制顶级栏目
cmsAdService.saveBatch(ads); d.setTenantId(loginUser.getTenantId());
d.setUserId(loginUser.getUserId());
// TODO 复制链接 if (cmsNavigationService.save(d)) {
CmsLinkParam cmsLinkParam = new CmsLinkParam(); cmsNavigationService.saveAsync(d);
cmsLinkParam.setWebsiteUserId(websiteUserId); // 复制栏目文章
final List<CmsLink> links = cmsLinkMapper.selectListAllRel(cmsLinkParam); CmsArticleParam cmsArticleParam = new CmsArticleParam();
links.forEach(d -> { cmsArticleParam.setWebsiteUserId(websiteUserId);
d.setUserId(loginUser.getUserId()); cmsArticleParam.setCategoryId(navigationId);
d.setTenantId(loginUser.getTenantId()); final List<CmsArticle> articles = cmsArticleMapper.selectListAllRel(cmsArticleParam);
}); articles.forEach(a -> {
cmsLinkService.saveBatch(links); a.setCategoryId(d.getNavigationId());
a.setUserId(loginUser.getUserId());
// TODO 复制订单 a.setTenantId(loginUser.getTenantId());
// CmsOrderParam cmsOrderParam = new CmsOrderParam(); if (cmsArticleService.save(a)) {
// cmsOrderParam.setWebsiteUserId(websiteUserId); final CmsArticleContent content = new CmsArticleContent();
// final List<CmsOrder> orders = cmsOrderMapper.selectListAllRel(cmsOrderParam); content.setArticleId(a.getArticleId());
// orders.forEach(d -> { content.setContent(a.getContent());
// d.setUserId(loginUser.getUserId()); cmsArticleContentService.save(content);
// d.setTenantId(loginUser.getTenantId()); }
// }); });
// cmsOrderService.saveBatch(orders); // 复制子栏目
cmsNavigationParam.setParentId(navigationId);
final List<CmsNavigation> navigations = cmsNavigationMapper.selectListAllRel(cmsNavigationParam);
// TODO 复制栏目和文章、文章内容 navigations.forEach(c -> {
CmsNavigationParam cmsNavigationParam = new CmsNavigationParam(); cmsArticleParam.setCategoryId(c.getNavigationId());
cmsNavigationParam.setWebsiteUserId(websiteUserId); c.setParentId(d.getNavigationId());
cmsNavigationParam.setParentId(0); c.setTenantId(loginUser.getTenantId());
final List<CmsNavigation> parents = cmsNavigationMapper.selectListAllRel(cmsNavigationParam); c.setUserId(loginUser.getUserId());
parents.forEach(d -> { cmsNavigationService.save(c);
Integer navigationId = d.getNavigationId(); cmsNavigationService.saveAsync(c);
// 复制顶级栏目 // 复制子栏目文章
d.setTenantId(loginUser.getTenantId()); final List<CmsArticle> articles2 = cmsArticleMapper.selectListAllRel(cmsArticleParam);
d.setUserId(loginUser.getUserId()); articles2.forEach(a2 -> {
if (cmsNavigationService.save(d)) { a2.setCategoryId(c.getNavigationId());
cmsNavigationService.saveAsync(d); a2.setParentId(c.getParentId());
// 复制栏目文章 a2.setUserId(loginUser.getUserId());
CmsArticleParam cmsArticleParam = new CmsArticleParam(); a2.setTenantId(loginUser.getTenantId());
cmsArticleParam.setWebsiteUserId(websiteUserId); if (cmsArticleService.save(a2)) {
cmsArticleParam.setCategoryId(navigationId); final CmsArticleContent content = new CmsArticleContent();
final List<CmsArticle> articles = cmsArticleMapper.selectListAllRel(cmsArticleParam); content.setArticleId(a2.getArticleId());
articles.forEach(a -> { content.setContent(a2.getContent());
a.setCategoryId(d.getNavigationId()); cmsArticleContentService.save(content);
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<CmsNavigation> 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<CmsArticle> 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(); final Project project = new Project();