feat: 待审核变更支持手动搜索匹配已有站点

This commit is contained in:
mediabot-pt
2026-06-30 09:09:24 +08:00
parent 690d1ae926
commit 56e2615624
5 changed files with 110 additions and 1 deletions

View File

@@ -60,4 +60,10 @@ public interface SiteService {
/** 查看站点的变更记录 */
List<SiteChangeDTO> listChangesBySite(String siteId);
/** 搜索站点(按名称/URL 模糊匹配) */
List<SiteDTO> searchSites(String keyword);
/** 将变更关联到指定站点 */
void linkChangeToSite(Long changeId, String siteId);
}

View File

@@ -302,6 +302,29 @@ public class SiteServiceImpl implements SiteService {
.map(this::toChangeDTO).collect(Collectors.toList());
}
@Override
public List<SiteDTO> searchSites(String keyword) {
return siteMapper.selectList(
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<Site>()
.and(w -> w.like(Site::getNamesJson, keyword)
.or().like(Site::getUrlsJson, keyword)
.or().eq(Site::getSiteId, keyword))
.eq(Site::getDeleted, 0)
.orderByDesc(Site::getUpdatedAt)
.last("LIMIT 20")
).stream().map(this::toDTO).collect(Collectors.toList());
}
@Override
public void linkChangeToSite(Long changeId, String siteId) {
SiteChange entry = changeMapper.selectById(changeId);
if (entry == null) throw new IllegalArgumentException("变更记录不存在");
if (!"pending".equals(entry.getStatus())) throw new IllegalArgumentException("只能关联待审核的变更");
entry.setSiteId(siteId);
changeMapper.updateById(entry);
log.info("变更手动关联: changeId={} → siteId={}", changeId, siteId);
}
private SiteChangeDTO toChangeDTO(SiteChange entry) {
SiteChangeDTO dto = new SiteChangeDTO();
dto.setId(entry.getId());