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 国际化 // TODO 复制参数
final CmsLangLogParam cmsLangLogParam = new CmsLangLogParam(); final CmsWebsiteFieldParam param = new CmsWebsiteFieldParam();
cmsLangLogParam.setWebsiteUserId(websiteUserId); param.setUserId(websiteUserId);
final List<CmsLangLog> logs = cmsLangLogMapper.selectListAllRel(cmsLangLogParam); final List<CmsWebsiteField> fields = cmsWebsiteFieldMapper.selectListAllRel(param);
logs.forEach(d->{ fields.forEach(d->{
d.setTenantId(loginUser.getTenantId()); d.setTenantId(loginUser.getTenantId());
}); });
cmsLangLogService.saveBatch(logs); cmsWebsiteFieldService.saveBatch(fields);
// TODO 复制参数 // TODO 复制模型
final CmsWebsiteFieldParam param = new CmsWebsiteFieldParam(); final CmsModelParam modelParam = new CmsModelParam();
param.setUserId(websiteUserId); modelParam.setWebsiteUserId(websiteUserId);
final List<CmsWebsiteField> fields = cmsWebsiteFieldMapper.selectListAllRel(param); final List<CmsModel> models = cmsModelMapper.selectListAllRel(modelParam);
fields.forEach(d->{ models.forEach(d->{
d.setTenantId(loginUser.getTenantId()); d.setUserId(loginUser.getUserId());
}); d.setTenantId(loginUser.getTenantId());
cmsWebsiteFieldService.saveBatch(fields); });
cmsModelService.saveBatch(models);
// TODO 复制模型 // TODO 复制广告
final CmsModelParam modelParam = new CmsModelParam(); final CmsAdParam cmsAdParam = new CmsAdParam();
modelParam.setWebsiteUserId(websiteUserId); cmsAdParam.setWebsiteUserId(websiteUserId);
final List<CmsModel> models = cmsModelMapper.selectListAllRel(modelParam); final List<CmsAd> ads = cmsAdMapper.selectListAllRel(cmsAdParam);
models.forEach(d->{ ads.forEach(d -> {
d.setUserId(loginUser.getUserId()); d.setUserId(loginUser.getUserId());
d.setTenantId(loginUser.getTenantId()); d.setTenantId(loginUser.getTenantId());
}); });
cmsModelService.saveBatch(models); cmsAdService.saveBatch(ads);
// TODO 复制广告 // TODO 复制链接
final CmsAdParam cmsAdParam = new CmsAdParam(); CmsLinkParam cmsLinkParam = new CmsLinkParam();
cmsAdParam.setWebsiteUserId(websiteUserId); cmsLinkParam.setWebsiteUserId(websiteUserId);
final List<CmsAd> ads = cmsAdMapper.selectListAllRel(cmsAdParam); final List<CmsLink> links = cmsLinkMapper.selectListAllRel(cmsLinkParam);
ads.forEach(d -> { links.forEach(d -> {
d.setUserId(loginUser.getUserId()); d.setUserId(loginUser.getUserId());
d.setTenantId(loginUser.getTenantId()); d.setTenantId(loginUser.getTenantId());
}); });
cmsAdService.saveBatch(ads); cmsLinkService.saveBatch(links);
// TODO 复制链接 // TODO 复制栏目和文章、文章内容
CmsLinkParam cmsLinkParam = new CmsLinkParam(); CmsNavigationParam cmsNavigationParam = new CmsNavigationParam();
cmsLinkParam.setWebsiteUserId(websiteUserId); cmsNavigationParam.setWebsiteUserId(websiteUserId);
final List<CmsLink> links = cmsLinkMapper.selectListAllRel(cmsLinkParam); cmsNavigationParam.setParentId(0);
links.forEach(d -> { final List<CmsNavigation> parents = cmsNavigationMapper.selectListAllRel(cmsNavigationParam);
d.setUserId(loginUser.getUserId()); parents.forEach(d -> {
d.setTenantId(loginUser.getTenantId()); Integer navigationId = d.getNavigationId();
}); // 复制顶级栏目
cmsLinkService.saveBatch(links); d.setTenantId(loginUser.getTenantId());
d.setUserId(loginUser.getUserId());
// TODO 复制订单 if (cmsNavigationService.save(d)) {
// CmsOrderParam cmsOrderParam = new CmsOrderParam(); cmsNavigationService.saveAsync(d);
// cmsOrderParam.setWebsiteUserId(websiteUserId); // 复制栏目文章
// final List<CmsOrder> orders = cmsOrderMapper.selectListAllRel(cmsOrderParam); CmsArticleParam cmsArticleParam = new CmsArticleParam();
// orders.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 -> {
// cmsOrderService.saveBatch(orders); a.setCategoryId(d.getNavigationId());
a.setUserId(loginUser.getUserId());
a.setTenantId(loginUser.getTenantId());
// TODO 复制栏目和文章、文章内容 if (cmsArticleService.save(a)) {
CmsNavigationParam cmsNavigationParam = new CmsNavigationParam(); final CmsArticleContent content = new CmsArticleContent();
cmsNavigationParam.setWebsiteUserId(websiteUserId); content.setArticleId(a.getArticleId());
cmsNavigationParam.setParentId(0); content.setContent(a.getContent());
final List<CmsNavigation> parents = cmsNavigationMapper.selectListAllRel(cmsNavigationParam); cmsArticleContentService.save(content);
parents.forEach(d -> { }
Integer navigationId = d.getNavigationId(); });
// 复制顶级栏目 // 复制栏目
d.setTenantId(loginUser.getTenantId()); cmsNavigationParam.setParentId(navigationId);
d.setUserId(loginUser.getUserId()); final List<CmsNavigation> navigations = cmsNavigationMapper.selectListAllRel(cmsNavigationParam);
if (cmsNavigationService.save(d)) { navigations.forEach(c -> {
cmsNavigationService.saveAsync(d); cmsArticleParam.setCategoryId(c.getNavigationId());
// 复制栏目文章 c.setParentId(d.getNavigationId());
CmsArticleParam cmsArticleParam = new CmsArticleParam(); c.setTenantId(loginUser.getTenantId());
cmsArticleParam.setWebsiteUserId(websiteUserId); c.setUserId(loginUser.getUserId());
cmsArticleParam.setCategoryId(navigationId); cmsNavigationService.save(c);
final List<CmsArticle> articles = cmsArticleMapper.selectListAllRel(cmsArticleParam); cmsNavigationService.saveAsync(c);
articles.forEach(a -> { // 复制子栏目文章
a.setCategoryId(d.getNavigationId()); final List<CmsArticle> articles2 = cmsArticleMapper.selectListAllRel(cmsArticleParam);
a.setUserId(loginUser.getUserId()); articles2.forEach(a2 -> {
a.setTenantId(loginUser.getTenantId()); a2.setCategoryId(c.getNavigationId());
if (cmsArticleService.save(a)) { a2.setParentId(c.getParentId());
final CmsArticleContent content = new CmsArticleContent(); a2.setUserId(loginUser.getUserId());
content.setArticleId(a.getArticleId()); a2.setTenantId(loginUser.getTenantId());
content.setContent(a.getContent()); if (cmsArticleService.save(a2)) {
cmsArticleContentService.save(content); final CmsArticleContent content = new CmsArticleContent();
} content.setArticleId(a2.getArticleId());
}); content.setContent(a2.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();