| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取全量路由数量(入口+出口合计) |
| | | /// </summary> |
| | | public int GetRouterCount() |
| | | { |
| | | // 分别获取入口类型和出口类型的路由数量并相加 |
| | | int inCount = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt()).Count; |
| | | int outCount = GetAllRoutersFromCache(RouterInOutType.Out.ObjToInt()).Count; |
| | | return inCount + outCount; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取指定类型路由数量 |
| | | /// </summary> |
| | | public int GetRouterCount(int routeType) |
| | | { |
| | | // 获取指定类型的全量路由数据并返回数量 |
| | | return GetAllRoutersFromCache(routeType).Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 批量删除指定ID的路由,删除后同步清除对应类型的缓存 |
| | | /// </summary> |
| | | /// <param name="routerIds">待删除的路由ID列表</param> |
| | | /// <returns>返回处理结果</returns> |
| | | public WebResponseContent DeleteRouters(List<long> routerIds) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (routerIds == null || routerIds.Count == 0) |
| | | { |
| | | return content = WebResponseContent.Instance.Error("待删除的路由ID列表不能为空"); |
| | | } |
| | | |
| | | // 查询待删除路由的类型(用于后续清除缓存) |
| | | var routersToDelete = BaseDal.QueryData(x => routerIds.Contains(x.Id)); |
| | | if (routersToDelete.Count == 0) |
| | | { |
| | | return content = WebResponseContent.Instance.Error("未找到待删除的路由"); |
| | | } |
| | | |
| | | // 记录涉及的类型(去重) |
| | | var affectedTypes = routersToDelete.Select(x => x.InOutType).Distinct().ToList(); |
| | | |
| | | // 执行批量删除 |
| | | BaseDal.DeleteData(routersToDelete); |
| | | |
| | | // 清除受影响类型的缓存 |
| | | foreach (var routeType in affectedTypes) |
| | | { |
| | | string cacheKey = $"Router:AllRouters:{(routeType == RouterInOutType.In.ObjToInt() ? "In" : "Out")}"; |
| | | _cacheService.Remove(cacheKey); |
| | | } |
| | | |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据起点/当前位置、终点获取下一个子节点。 |
| | | /// </summary> |
| | | /// <param name="startPosi">起点/当前位置。</param> |