feat(B2): 附件引用模型-cms_attachment 增 ref_type/ref_id,消灭孤儿误报
- 实体/双 SQL 加列+idx_att_ref;upload 增 scene 白名单(banner/link/site) - AttachmentService 新增 markUsed/release/markSiteConfigUsed(webUrl 反查,幂等) - 未使用=articleId 与 refType 均空;page 返回 unusedCount(前后端同步改名无兼容别名) - Banner/Link 保存先解引用再回写(换图旧图回未使用);Site 配置 logo/favicon 引用回写(@Lazy 解循环依赖) - 新增13例(Attachment6/Banner3/Link2/Site2)+既有语义断言更新;mvn -o test 全绿
This commit is contained in:
@@ -29,6 +29,7 @@ public class LinkService {
|
||||
private final CmsLinkRepository linkRepository;
|
||||
private final SiteService siteService;
|
||||
private final ApplicationEventPublisher eventPublisher;
|
||||
private final AttachmentService attachmentService;
|
||||
|
||||
public List<LinkVo> list(BoaUser user, Integer siteId) {
|
||||
siteService.requireManageable(user, siteId);
|
||||
@@ -66,6 +67,11 @@ public class LinkService {
|
||||
link.setSortNo(req.getSortNo() == null ? 0 : req.getSortNo());
|
||||
link.setStatus(req.getStatus() == null ? 1 : req.getStatus());
|
||||
link = linkRepository.save(link);
|
||||
// B2 附件引用:先解引用,logoUrl 非空才回写(编辑换图/清空 logo 旧图均回未使用);幂等
|
||||
attachmentService.release("link", link.getId());
|
||||
if (StringUtils.hasText(req.getLogoUrl())) {
|
||||
attachmentService.markUsed(site.getId(), req.getLogoUrl(), "link", link.getId());
|
||||
}
|
||||
eventPublisher.publishEvent(new SiteContentChangedEvent(site.getId(), "link"));
|
||||
return LinkVo.of(link);
|
||||
}
|
||||
@@ -79,6 +85,7 @@ public class LinkService {
|
||||
throw new BizException(ErrorCode.FORBIDDEN, "无权删除该友链");
|
||||
}
|
||||
linkRepository.delete(link);
|
||||
attachmentService.release("link", link.getId());
|
||||
eventPublisher.publishEvent(new SiteContentChangedEvent(site.getId(), "link"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user