feat: 站点审核通过时弹出编辑框,支持审核者修改数据后再通过
- SiteReview.vue: 「通过」打开编辑弹窗,可改名称/地址/类型/状态/备注 - AdminController: approveChange 接受 request body(编辑数据) - SiteService.approveChange: 优先用审核者编辑数据,否则用原始提交 - 拒绝保持原逻辑直接拒绝
This commit is contained in:
@@ -52,8 +52,9 @@ public interface SiteService {
|
||||
/** 待审核变更列表 */
|
||||
List<SiteChangeDTO> listPendingChanges();
|
||||
|
||||
/** 审核通过 → 写入 sites 表 */
|
||||
Site approveChange(Long changeId, Long reviewerId);
|
||||
/** 审核通过 → 写入 sites 表(支持审核时编辑 name/baseUrl/siteType/status/notes) */
|
||||
Site approveChange(Long changeId, Long reviewerId, String name, String baseUrl,
|
||||
String siteType, String status, String notes);
|
||||
|
||||
/** 拒绝变更 */
|
||||
void rejectChange(Long changeId, Long reviewerId);
|
||||
|
||||
@@ -238,7 +238,8 @@ public class SiteServiceImpl implements SiteService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Site approveChange(Long changeId, Long reviewerId) {
|
||||
public Site approveChange(Long changeId, Long reviewerId, String reviewerName, String reviewerBaseUrl,
|
||||
String reviewerSiteType, String reviewerStatus, String reviewerNotes) {
|
||||
SiteChange entry = changeMapper.selectById(changeId);
|
||||
if (entry == null) throw new IllegalArgumentException("变更记录不存在");
|
||||
if (!"pending".equals(entry.getStatus())) throw new IllegalArgumentException("该变更已处理");
|
||||
@@ -250,11 +251,13 @@ public class SiteServiceImpl implements SiteService {
|
||||
throw new RuntimeException("解析变更数据失败", e);
|
||||
}
|
||||
|
||||
// 优先使用审核者编辑的数据,否则用原始提交数据
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> names = (List<String>) raw.getOrDefault("names", List.of());
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> urls = (List<String>) raw.getOrDefault("urls", List.of());
|
||||
String notes = (String) raw.getOrDefault("notes", "");
|
||||
List<String> names = reviewerName != null ? List.of(reviewerName)
|
||||
: (List<String>) raw.getOrDefault("names", List.of());
|
||||
List<String> urls = reviewerBaseUrl != null ? List.of(reviewerBaseUrl)
|
||||
: (List<String>) raw.getOrDefault("urls", List.of());
|
||||
String notes = reviewerNotes != null ? reviewerNotes : (String) raw.getOrDefault("notes", "");
|
||||
|
||||
Site existing = siteMapper.selectBySiteId(entry.getSiteId());
|
||||
Site site;
|
||||
@@ -262,7 +265,14 @@ public class SiteServiceImpl implements SiteService {
|
||||
existing.setNamesJson(toJsonArray(names));
|
||||
existing.setUrlsJson(toJsonArray(urls));
|
||||
if (notes != null && !notes.isBlank()) existing.setNotes(notes);
|
||||
existing.setStatus(SiteStatus.ACTIVE);
|
||||
if (reviewerSiteType != null) {
|
||||
try { existing.setSiteType(SiteType.fromValue(reviewerSiteType)); } catch (Exception ignored) {}
|
||||
}
|
||||
if (reviewerStatus != null) {
|
||||
try { existing.setStatus(SiteStatus.fromValue(reviewerStatus)); } catch (Exception ignored) {}
|
||||
} else {
|
||||
existing.setStatus(SiteStatus.ACTIVE);
|
||||
}
|
||||
siteMapper.updateById(existing);
|
||||
site = existing;
|
||||
} else {
|
||||
@@ -271,9 +281,9 @@ public class SiteServiceImpl implements SiteService {
|
||||
site.setNamesJson(toJsonArray(names));
|
||||
site.setUrlsJson(toJsonArray(urls));
|
||||
site.setNotes(notes);
|
||||
site.setSiteType(SiteType.UNKNOWN);
|
||||
site.setSiteType(reviewerSiteType != null ? SiteType.fromValue(reviewerSiteType) : SiteType.UNKNOWN);
|
||||
site.setSchemaVersion("1.0.0");
|
||||
site.setStatus(SiteStatus.ACTIVE);
|
||||
site.setStatus(reviewerStatus != null ? SiteStatus.fromValue(reviewerStatus) : SiteStatus.ACTIVE);
|
||||
site.setSubmitterId(entry.getSubmitterId());
|
||||
siteMapper.insert(site);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user