feat: 待审核变更支持手动搜索匹配已有站点
This commit is contained in:
@@ -60,4 +60,10 @@ public interface SiteService {
|
||||
|
||||
/** 查看站点的变更记录 */
|
||||
List<SiteChangeDTO> listChangesBySite(String siteId);
|
||||
|
||||
/** 搜索站点(按名称/URL 模糊匹配) */
|
||||
List<SiteDTO> searchSites(String keyword);
|
||||
|
||||
/** 将变更关联到指定站点 */
|
||||
void linkChangeToSite(Long changeId, String siteId);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user