diff --git a/par-api/src/main/java/com/par/api/controller/SiteController.java b/par-api/src/main/java/com/par/api/controller/SiteController.java index c449bf0..35d3c60 100644 --- a/par-api/src/main/java/com/par/api/controller/SiteController.java +++ b/par-api/src/main/java/com/par/api/controller/SiteController.java @@ -51,10 +51,11 @@ public class SiteController { String description = (String) payload.get("description"); String baseUrl = (String) payload.get("baseUrl"); String siteType = (String) payload.get("siteType"); + String status = (String) payload.get("status"); Long operatorId = (Long) request.getAttribute("accountId"); try { - Site site = siteService.updateSite(siteId, name, description, baseUrl, siteType, operatorId); + Site site = siteService.updateSite(siteId, name, description, baseUrl, siteType, status, operatorId); return ApiResponse.success(siteService.toDTO(site)); } catch (IllegalArgumentException e) { return ApiResponse.error(404, e.getMessage()); diff --git a/par-core/src/main/java/com/par/core/service/SiteService.java b/par-core/src/main/java/com/par/core/service/SiteService.java index 78bd451..6ce0814 100644 --- a/par-core/src/main/java/com/par/core/service/SiteService.java +++ b/par-core/src/main/java/com/par/core/service/SiteService.java @@ -44,7 +44,7 @@ public interface SiteService { * 管理员编辑站点基本信息 */ Site updateSite(String siteId, String name, String description, String baseUrl, - String siteType, Long operatorId); + String siteType, String status, Long operatorId); /** 所有站点列表(管理员用) */ List listAllSites(); diff --git a/par-core/src/main/java/com/par/core/service/impl/SiteServiceImpl.java b/par-core/src/main/java/com/par/core/service/impl/SiteServiceImpl.java index 0800d54..7fdfdc0 100644 --- a/par-core/src/main/java/com/par/core/service/impl/SiteServiceImpl.java +++ b/par-core/src/main/java/com/par/core/service/impl/SiteServiceImpl.java @@ -195,7 +195,7 @@ public class SiteServiceImpl implements SiteService { @Override public Site updateSite(String siteId, String name, String description, String baseUrl, - String siteType, Long operatorId) { + String siteType, String status, Long operatorId) { Site site = siteMapper.selectBySiteId(siteId); if (site == null) throw new IllegalArgumentException("站点不存在: " + siteId); @@ -215,6 +215,9 @@ public class SiteServiceImpl implements SiteService { if (siteType != null && !siteType.isBlank()) { try { site.setSiteType(SiteType.fromValue(siteType)); } catch (Exception ignored) {} } + if (status != null && !status.isBlank()) { + try { site.setStatus(SiteStatus.fromValue(status)); } catch (Exception ignored) {} + } siteMapper.updateById(site); log.info("站点编辑: siteId={}", siteId); return site; diff --git a/web/src/views/Sites.vue b/web/src/views/Sites.vue index 7803133..c1d0ad1 100644 --- a/web/src/views/Sites.vue +++ b/web/src/views/Sites.vue @@ -49,6 +49,12 @@ + + + + + + @@ -116,7 +122,7 @@ import api from '../api' const sites = ref([]) const loading = ref(false) const editVisible = ref(false), saving = ref(false) -const editForm = ref({ id: null, siteId: '', name: '', baseUrl: '', siteType: '', description: '' }) +const editForm = ref({ id: null, siteId: '', name: '', baseUrl: '', siteType: '', status: '', description: '' }) const siteTypes = [ { value: 'nexusphp', label: 'NexusPHP' }, { value: 'mtorrent', label: 'MTorrent' }, { value: 'mteam', label: 'M-Team API' }, { value: 'pttime', label: 'PTTime' }, @@ -140,7 +146,7 @@ const fetchAll = async () => { } const handleEdit = (row) => { - editForm.value = { id: row.id, siteId: row.siteId, name: (row.names||[]).join('\n'), baseUrl: (row.urls||[]).join('\n'), siteType: row.siteType||'', description: row.description||'' } + editForm.value = { id: row.id, siteId: row.siteId, name: (row.names||[]).join('\n'), baseUrl: (row.urls||[]).join('\n'), siteType: row.siteType||'', status: row.status||'active', description: row.description||'' } editVisible.value = true } @@ -152,6 +158,7 @@ const handleSave = async () => { name: editForm.value.name.trim().split('\n').filter(Boolean)[0]||'', baseUrl: editForm.value.baseUrl.trim().split('\n').filter(Boolean)[0]||'', siteType: editForm.value.siteType.trim()||'unknown', + status: editForm.value.status||'active', description: editForm.value.description.trim()||null, }) ElMessage.success('保存成功'); editVisible.value = false; fetchAll()