补全所有模型的完整 CRUD 接口
- ModelService: +AddModel/UpdateModel - IScenarioService: +UpdateScenario +GetScene +Get/DeleteControlZone +Add/Update/Delete/GetScenarioDrones +Add/Update/Delete/GetDeploymentUnits +GetCloudDispersal +GetRoutes/DeleteRoute +GetWaypoints/GetWaypointsByWave/DeleteWaypoint - ScenarioManager 全面暴露新增接口 - 238 测试全过
This commit is contained in:
parent
d73b586982
commit
225590ac19
@ -7,8 +7,10 @@ namespace CounterDrone.Core.Services
|
||||
public interface IModelService
|
||||
{
|
||||
ModelInfo ImportModel(string filePath, string name);
|
||||
ModelInfo AddModel(ModelInfo model);
|
||||
void DeleteModel(string id);
|
||||
List<ModelInfo> GetAllModels();
|
||||
ModelInfo GetModel(string id);
|
||||
ModelInfo UpdateModel(ModelInfo model);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,25 +6,54 @@ namespace CounterDrone.Core.Services
|
||||
/// <summary>想定管理服务</summary>
|
||||
public interface IScenarioService
|
||||
{
|
||||
// ═══ Scenario ═══
|
||||
Scenario CreateScenario(string name, string scenarioNumber);
|
||||
void DeleteScenario(string id);
|
||||
Scenario UpdateScenario(Scenario scenario);
|
||||
PagedResult<Scenario> SearchScenarios(string keyword, string? dateFrom, string? dateTo, int page, int pageSize);
|
||||
ScenarioConfig? GetScenarioDetail(string id);
|
||||
|
||||
// ═══ CombatScene ═══
|
||||
void SaveScene(string scenarioId, CombatScene scene);
|
||||
void SaveControlZones(string scenarioId, List<ControlZone> zones);
|
||||
void SaveScenarioDrone(string scenarioId, ScenarioDrone target);
|
||||
void SaveDeployment(string scenarioId, List<ScenarioUnit> equips);
|
||||
CombatScene GetScene(string scenarioId);
|
||||
|
||||
/// <summary>添加单个探测设备(独立于 SaveDeployment,不覆盖火力单元)</summary>
|
||||
// ═══ ControlZone ═══
|
||||
void SaveControlZones(string scenarioId, List<ControlZone> zones);
|
||||
List<ControlZone> GetControlZones(string scenarioId);
|
||||
void DeleteControlZone(string id);
|
||||
|
||||
// ═══ ScenarioDrone ═══
|
||||
ScenarioDrone SaveScenarioDrone(string scenarioId, ScenarioDrone drone);
|
||||
ScenarioDrone AddScenarioDrone(string scenarioId, ScenarioDrone drone);
|
||||
void UpdateScenarioDrone(ScenarioDrone drone);
|
||||
void DeleteScenarioDrone(string id);
|
||||
List<ScenarioDrone> GetScenarioDrones(string scenarioId);
|
||||
|
||||
// ═══ ScenarioUnit ═══
|
||||
void SaveDeployment(string scenarioId, List<ScenarioUnit> equips);
|
||||
ScenarioUnit AddDeploymentUnit(string scenarioId, ScenarioUnit unit);
|
||||
void UpdateDeploymentUnit(ScenarioUnit unit);
|
||||
void DeleteDeploymentUnit(string id);
|
||||
List<ScenarioUnit> GetDeploymentUnits(string scenarioId);
|
||||
|
||||
// ═══ Detection ═══
|
||||
void AddDetection(string scenarioId, ScenarioUnit detection);
|
||||
/// <summary>删除探测设备</summary>
|
||||
void DeleteDetection(string detectionId);
|
||||
/// <summary>获取任务的所有探测设备(EquipmentRole.Detection)</summary>
|
||||
List<ScenarioUnit> GetDetections(string scenarioId);
|
||||
|
||||
// ═══ CloudDispersal ═══
|
||||
void SaveCloudDispersal(string scenarioId, CloudDispersal cloud);
|
||||
CloudDispersal GetCloudDispersal(string scenarioId);
|
||||
|
||||
// ═══ Route & Waypoint ═══
|
||||
void SaveRoute(string scenarioId, string waveId, RoutePlan route, List<Waypoint> waypoints);
|
||||
List<RoutePlan> GetRoutes(string scenarioId);
|
||||
void DeleteRoute(string id);
|
||||
List<Waypoint> GetWaypoints(string scenarioId);
|
||||
List<Waypoint> GetWaypointsByWave(string scenarioId, string waveId);
|
||||
void DeleteWaypoint(string id);
|
||||
|
||||
// ═══ Misc ═══
|
||||
void UpdateStep(string scenarioId, int step);
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,6 +41,17 @@ namespace CounterDrone.Core.Services
|
||||
return model;
|
||||
}
|
||||
|
||||
public ModelInfo AddModel(ModelInfo model)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(model.Name))
|
||||
throw new ArgumentException("模型名称不能为空");
|
||||
if (string.IsNullOrEmpty(model.Id))
|
||||
model.Id = Guid.NewGuid().ToString();
|
||||
model.CreatedAt = DateTime.UtcNow.ToString("o");
|
||||
_repo.Insert(model);
|
||||
return model;
|
||||
}
|
||||
|
||||
public void DeleteModel(string id)
|
||||
{
|
||||
_repo.Delete(id);
|
||||
@ -55,5 +66,14 @@ namespace CounterDrone.Core.Services
|
||||
{
|
||||
return _repo.GetById(id);
|
||||
}
|
||||
|
||||
public ModelInfo UpdateModel(ModelInfo model)
|
||||
{
|
||||
var existing = _repo.GetById(model.Id);
|
||||
if (existing == null)
|
||||
throw new ArgumentException($"模型 {model.Id} 不存在");
|
||||
_repo.Update(model);
|
||||
return model;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@ namespace CounterDrone.Core.Services
|
||||
TouchScenario(scenarioId);
|
||||
}
|
||||
|
||||
public void SaveScenarioDrone(string scenarioId, ScenarioDrone target)
|
||||
public ScenarioDrone SaveScenarioDrone(string scenarioId, ScenarioDrone target)
|
||||
{
|
||||
target.ScenarioId = scenarioId;
|
||||
if (string.IsNullOrEmpty(target.Id))
|
||||
@ -143,6 +143,7 @@ namespace CounterDrone.Core.Services
|
||||
else
|
||||
_droneRepo.Insert(target);
|
||||
TouchScenario(scenarioId);
|
||||
return target;
|
||||
}
|
||||
|
||||
public void SaveDeployment(string scenarioId, List<ScenarioUnit> equips)
|
||||
@ -229,6 +230,99 @@ namespace CounterDrone.Core.Services
|
||||
_scenarioRepo.Update(scenario);
|
||||
}
|
||||
|
||||
// ========== Scenario CRUD ==========
|
||||
|
||||
public Scenario UpdateScenario(Scenario scenario)
|
||||
{
|
||||
var existing = _scenarioRepo.GetById(scenario.Id);
|
||||
if (existing == null)
|
||||
throw new ArgumentException($"想定 {scenario.Id} 不存在");
|
||||
scenario.UpdatedAt = DateTime.UtcNow.ToString("o");
|
||||
_scenarioRepo.Update(scenario);
|
||||
return scenario;
|
||||
}
|
||||
|
||||
// ========== CombatScene ==========
|
||||
|
||||
public CombatScene GetScene(string scenarioId)
|
||||
{
|
||||
return _sceneRepo.GetById(scenarioId) ?? new CombatScene { ScenarioId = scenarioId };
|
||||
}
|
||||
|
||||
// ========== ControlZone ==========
|
||||
|
||||
public List<ControlZone> GetControlZones(string scenarioId)
|
||||
=> _zoneRepo.GetByScenarioId(scenarioId);
|
||||
|
||||
public void DeleteControlZone(string id)
|
||||
=> _zoneRepo.Delete(id);
|
||||
|
||||
// ========== ScenarioDrone ==========
|
||||
|
||||
public ScenarioDrone AddScenarioDrone(string scenarioId, ScenarioDrone drone)
|
||||
=> SaveScenarioDrone(scenarioId, drone);
|
||||
|
||||
public void UpdateScenarioDrone(ScenarioDrone drone)
|
||||
{
|
||||
_droneRepo.Update(drone);
|
||||
TouchScenario(drone.ScenarioId);
|
||||
}
|
||||
|
||||
public void DeleteScenarioDrone(string id)
|
||||
=> _droneRepo.Delete(id);
|
||||
|
||||
public List<ScenarioDrone> GetScenarioDrones(string scenarioId)
|
||||
=> _droneRepo.GetByScenarioId(scenarioId);
|
||||
|
||||
// ========== ScenarioUnit ==========
|
||||
|
||||
public ScenarioUnit AddDeploymentUnit(string scenarioId, ScenarioUnit unit)
|
||||
{
|
||||
unit.ScenarioId = scenarioId;
|
||||
if (string.IsNullOrEmpty(unit.Id))
|
||||
unit.Id = Guid.NewGuid().ToString();
|
||||
_unitRepo.Insert(unit);
|
||||
TouchScenario(scenarioId);
|
||||
return unit;
|
||||
}
|
||||
|
||||
public void UpdateDeploymentUnit(ScenarioUnit unit)
|
||||
=> _unitRepo.Update(unit);
|
||||
|
||||
public void DeleteDeploymentUnit(string id)
|
||||
=> _unitRepo.Delete(id);
|
||||
|
||||
public List<ScenarioUnit> GetDeploymentUnits(string scenarioId)
|
||||
=> _unitRepo.GetByScenarioId(scenarioId);
|
||||
|
||||
// ========== CloudDispersal ==========
|
||||
|
||||
public CloudDispersal GetCloudDispersal(string scenarioId)
|
||||
=> _cloudRepo.GetById(scenarioId) ?? new CloudDispersal { ScenarioId = scenarioId };
|
||||
|
||||
// ========== Route & Waypoint ==========
|
||||
|
||||
public List<RoutePlan> GetRoutes(string scenarioId)
|
||||
=> _routeRepo.GetByScenarioId(scenarioId);
|
||||
|
||||
public void DeleteRoute(string id)
|
||||
{
|
||||
var r = _routeRepo.GetById(id);
|
||||
if (r == null) return;
|
||||
var wps = _waypointRepo.GetByScenarioAndWave(r.ScenarioId, r.WaveId);
|
||||
foreach (var w in wps) _waypointRepo.Delete(w.Id);
|
||||
_routeRepo.Delete(id);
|
||||
}
|
||||
|
||||
public List<Waypoint> GetWaypoints(string scenarioId)
|
||||
=> _waypointRepo.GetByScenarioId(scenarioId);
|
||||
|
||||
public List<Waypoint> GetWaypointsByWave(string scenarioId, string waveId)
|
||||
=> _waypointRepo.GetByScenarioAndWave(scenarioId, waveId);
|
||||
|
||||
public void DeleteWaypoint(string id)
|
||||
=> _waypointRepo.Delete(id);
|
||||
|
||||
// ========== Helpers ==========
|
||||
|
||||
private void TouchScenario(string scenarioId)
|
||||
|
||||
@ -28,9 +28,11 @@ namespace CounterDrone.Unity
|
||||
void OnDisable() { SqliteConnectionTracker.Untrack(_db); _db?.Dispose(); _db = null; }
|
||||
|
||||
public ModelInfo Import(string filePath, string name) => _service.ImportModel(filePath, name);
|
||||
public ModelInfo Add(ModelInfo model) => _service.AddModel(model);
|
||||
public void Delete(string id) => _service.DeleteModel(id);
|
||||
public List<ModelInfo> GetAll() => _service.GetAllModels();
|
||||
public ModelInfo Get(string id) => _service.GetModel(id);
|
||||
public ModelInfo Update(ModelInfo model) => _service.UpdateModel(model);
|
||||
|
||||
[ContextMenu("Verify")]
|
||||
void Verify()
|
||||
|
||||
@ -47,15 +47,44 @@ namespace CounterDrone.Unity
|
||||
|
||||
public Scenario CreateScenario(string name, string number) => _service.CreateScenario(name, number);
|
||||
public void DeleteScenario(string id) => _service.DeleteScenario(id);
|
||||
public Scenario UpdateScenario(Scenario s) => _service.UpdateScenario(s);
|
||||
public ScenarioConfig GetDetail(string id) => _service.GetScenarioDetail(id);
|
||||
public PagedResult<Scenario> Search(string kw, string from, string to, int page, int size)
|
||||
public PagedResult<Scenario> Search(string kw, string? from, string? to, int page, int size)
|
||||
=> _service.SearchScenarios(kw, from, to, page, size);
|
||||
|
||||
public void SaveScene(string scenarioId, CombatScene s) => _service.SaveScene(scenarioId, s);
|
||||
public void SaveScenarioDrone(string scenarioId, ScenarioDrone t) => _service.SaveScenarioDrone(scenarioId, t);
|
||||
public CombatScene GetScene(string scenarioId) => _service.GetScene(scenarioId);
|
||||
|
||||
public void SaveControlZones(string scenarioId, List<ControlZone> z) => _service.SaveControlZones(scenarioId, z);
|
||||
public List<ControlZone> GetControlZones(string scenarioId) => _service.GetControlZones(scenarioId);
|
||||
public void DeleteControlZone(string id) => _service.DeleteControlZone(id);
|
||||
|
||||
public ScenarioDrone SaveScenarioDrone(string scenarioId, ScenarioDrone d) => _service.SaveScenarioDrone(scenarioId, d);
|
||||
public ScenarioDrone AddScenarioDrone(string scenarioId, ScenarioDrone d) => _service.AddScenarioDrone(scenarioId, d);
|
||||
public void UpdateScenarioDrone(ScenarioDrone d) => _service.UpdateScenarioDrone(d);
|
||||
public void DeleteScenarioDrone(string id) => _service.DeleteScenarioDrone(id);
|
||||
public List<ScenarioDrone> GetScenarioDrones(string scenarioId) => _service.GetScenarioDrones(scenarioId);
|
||||
|
||||
public void SaveDeployment(string scenarioId, List<ScenarioUnit> e) => _service.SaveDeployment(scenarioId, e);
|
||||
public ScenarioUnit AddDeploymentUnit(string scenarioId, ScenarioUnit u) => _service.AddDeploymentUnit(scenarioId, u);
|
||||
public void UpdateDeploymentUnit(ScenarioUnit u) => _service.UpdateDeploymentUnit(u);
|
||||
public void DeleteDeploymentUnit(string id) => _service.DeleteDeploymentUnit(id);
|
||||
public List<ScenarioUnit> GetDeploymentUnits(string scenarioId) => _service.GetDeploymentUnits(scenarioId);
|
||||
|
||||
public void AddDetection(string scenarioId, ScenarioUnit d) => _service.AddDetection(scenarioId, d);
|
||||
public void DeleteDetection(string id) => _service.DeleteDetection(id);
|
||||
public List<ScenarioUnit> GetDetections(string scenarioId) => _service.GetDetections(scenarioId);
|
||||
|
||||
public void SaveCloud(string scenarioId, CloudDispersal c) => _service.SaveCloudDispersal(scenarioId, c);
|
||||
public CloudDispersal GetCloud(string scenarioId) => _service.GetCloudDispersal(scenarioId);
|
||||
|
||||
public void SaveRoute(string scenarioId, string waveId, RoutePlan r, List<Waypoint> w) => _service.SaveRoute(scenarioId, waveId, r, w);
|
||||
public List<RoutePlan> GetRoutes(string scenarioId) => _service.GetRoutes(scenarioId);
|
||||
public void DeleteRoute(string id) => _service.DeleteRoute(id);
|
||||
public List<Waypoint> GetWaypoints(string scenarioId) => _service.GetWaypoints(scenarioId);
|
||||
public List<Waypoint> GetWaypointsByWave(string scenarioId, string waveId) => _service.GetWaypointsByWave(scenarioId, waveId);
|
||||
public void DeleteWaypoint(string id) => _service.DeleteWaypoint(id);
|
||||
|
||||
public void UpdateStep(string scenarioId, int step) => _service.UpdateStep(scenarioId, step);
|
||||
|
||||
[ContextMenu("Verify")]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user