// WTM默认页面 Wtm buidin page using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Mvc.Admin.ViewModels.FrameworkMenuVMs; using WalkingTec.Mvvm.Core.Extensions; namespace WalkingTec.Mvvm.Mvc.Admin.ViewModels.FrameworkRoleVMs { public class FrameworkRoleMDVM : BaseCRUDVM { public FrameworkMenuListVM ListVM { get; set; } public FrameworkRoleMDVM() { ListVM = new FrameworkMenuListVM(); } protected override void InitVM() { ListVM.CopyContext(this); ListVM.Searcher.RoleID = Entity.ID; } public async Task DoChangeAsync() { var all = FC.Where(x => x.Key.StartsWith("menu_")).ToList(); List AllowedMenuIds = all.Where(x => x.Value.ToString() == "1").Select(x=> Guid.Parse(x.Key.Replace("menu_",""))).ToList(); var torem = AllowedMenuIds.Distinct(); var oldIDs = DC.Set().Where(x => x.RoleCode == Entity.RoleCode).Select(x => x.ID).ToList(); foreach (var oldid in oldIDs) { FunctionPrivilege fp = new FunctionPrivilege { ID = oldid }; DC.Set().Attach(fp); DC.DeleteEntity(fp); } foreach (var menuid in AllowedMenuIds) { FunctionPrivilege fp = new FunctionPrivilege(); fp.MenuItemId = menuid; fp.RoleCode = Entity.RoleCode; fp.Allowed = true; DC.Set().Add(fp); } await DC.SaveChangesAsync(); var userids = DC.Set().Where(x => x.RoleCode == Entity.RoleCode).Select(x => x.UserCode).ToArray(); await Wtm.RemoveUserCache(userids); return true; } } }