Browse Source

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

- 仅在templateId存在且大于0时执行数据复制操作
- 添加无效模板ID时的日志警告提示-保持原有国际化、参数、模型、广告、链接及栏目文章的复制逻辑- 修复可能因templateId为null导致的潜在空指针异常
dev
科技小王子 4 days ago
parent
commit
b145ce12e1
  1. 225
      src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java

225
src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java

@ -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;
// 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 复制模型
final CmsModelParam modelParam = new CmsModelParam();
modelParam.setWebsiteUserId(websiteUserId);
final List<CmsModel> 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<CmsAd> 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<CmsLink> 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<CmsOrder> 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<CmsNavigation> 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<CmsArticle> 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<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);
}
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 复制模型
final CmsModelParam modelParam = new CmsModelParam();
modelParam.setWebsiteUserId(websiteUserId);
final List<CmsModel> 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<CmsAd> 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<CmsLink> 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<CmsNavigation> 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<CmsArticle> 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<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();

Loading…
Cancel
Save