refactor(cms): 优化网站创建时的数据复制逻辑
- 仅在templateId存在且大于0时执行数据复制操作 - 添加无效模板ID时的日志警告提示-保持原有国际化、参数、模型、广告、链接及栏目文章的复制逻辑- 修复可能因templateId为null导致的潜在空指针异常
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user