public static UserCloudModel GetClouds(User user, IUserVaultService _uservaultService //IUserCloudService _usercloudService, , ICloudService _cloudService, IVaultTemplateService _vaultTemplateService, IMFVaultService _vaultService, IMFilesVaultService _mfvaultService, string host, params string[] roleNames) { var clouds = _cloudService.GetCloudsByUserRoles(roleNames); var userId = user.Id; var appModel = new UserCloudModel(); var userVaults = _uservaultService.GetVaults(userId); foreach (var app in clouds) { var a = app; var appM = new CloudModel { App = a.ToDto() }; if (app.Id == CloudConstants.MyProjects) { var templates = new List <VaultTemplate>(); foreach (var t in _vaultTemplateService.GetTemplatesByCloud(app.Id)) { templates.Add(t); //a.Templates.Add(t); } if (templates.Count > 0) { var appVaults = userVaults.Where(c => templates.Any(d => c.TemplateId > 0 && c.TemplateId == d.Id)); appM.Vaults.AddRange(appVaults.Select(c => c.ToDtoWithoutTemplate())); } appM.Url = "/IntegratedManagement/Index"; } //else if (app.Id == CloudConstants.ProjManagements) //{ // //todo 指定路径 //} appModel.Apps.Add(appM); } var password = DBWorldCache.Get(userId.ToString()); var appVaultsC = _mfvaultService.GetVaultsByCloud(CloudConstants.SubContracts); var vv = new List <MFilesVault>(); foreach (var v in appVaultsC) { if (_vaultService.HasUser(user, password, v)) { vv.Add(v); } } if (vv.Count > 0) { var cc = _cloudService.GetCloudById(CloudConstants.SubContracts); var cM = new CloudModel { App = cc.ToDto() }; cM.Vaults.AddRange(vv.Select(c => c.ToDtoWithoutTemplate())); appModel.Apps.Add(cM); } return(appModel); }