public CommandResult <TopMenus> Update(int topMenuId, long timestamp, TopMenusUpdateRequestModel requestModel) { var result = new CommandResult <TopMenus>(); using (var db = new FrameContext()) { if (!BaseService.Exist(db, a => a.Id == topMenuId)) { result.Message = "该数据在系统中已不存在,请检查后再试……"; } else if (!BaseService.Exist(db, a => a.Id == topMenuId && a.Timestamp == timestamp)) { result.Message = "该节点已在别处被更改过!"; } else if (requestModel.MenuId != null && requestModel.MenuId.Trim().Length != 0 && BaseService.Exist(db, a => a.Id != topMenuId && a.MenuId == requestModel.MenuId)) { result.Message = $"菜单唯一标识 MenuId “{requestModel.MenuId}”在系统中已存在!"; } else { var entity = BaseService.Find(db, a => a.Id == topMenuId); entity.DisplayName = requestModel.DisplayName; entity.DllPath = requestModel.DllPath; entity.EntryFunction = requestModel.EntryFunction; entity.Ico = requestModel.Ico; entity.MenuId = requestModel.MenuId; entity.ParentId = requestModel.ParentId; entity.Timestamp = requestModel.Timestamp; if (!BaseService.Update(db, entity)) { result.Message = "未知原因"; } else { result.ResultStatus = ResultStatus.Success; result.Message = "更新数据成功"; result.Data = entity; } } } return(result); }
/// <summary> /// 保存 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnSave_OnClick(object sender, RoutedEventArgs e) { if (!_clsLoginModel.PermissionsFunc(_currentMenuId, (int)PermissionsEnum.修改)) { _metroWindow.ShowMessageAsync("友情提示", "您没有修改菜单信息的权限"); return; } if (!Verify()) { return; } if (!LeftMenuManager.JudgeDisplayNameNotRootName(_metroWindow, DisplayName)) { return; } Action updateAction = () => { var requestModel = new TopMenusUpdateRequestModel { DisplayName = DisplayName, DllPath = DllPath, EntryFunction = EntryFunction, Ico = null, MenuId = MenuId, ParentId = ParentId, Timestamp = _topMenusManage.ServerTime.ToUnixTimestamp() }; var result = _topMenusManage.Update(TopMenuId, Timestamp, requestModel); if (result.ResultStatus == ResultStatus.Success) { Timestamp = result.Data.Timestamp; ((TopMenus)((TreeViewItem)(TreeViewMain.SelectedItem)).DataContext).Timestamp = result.Data.Timestamp; UpdateSelectedItemPosition(TopMenuId); UpdateSort(TreeViewMain.Items); UpdateSelectedItem(TreeViewMain.Items, TopMenuId); _topMenusList = _topMenusManage.GetAll(); } _metroWindow.ShowMessageAsync(result.ResultStatus == ResultStatus.Success ? "更新成功" : "更新失败", result.Message); }; var setting = new MetroDialogSettings { AnimateShow = true, AnimateHide = true, AffirmativeButtonText = "确定", NegativeButtonText = "取消", DefaultButtonFocus = MessageDialogResult.Negative }; _metroWindow.ShowMessageAsync("更新节点提示", "您确定要更新此节点信息吗?", MessageDialogStyle.AffirmativeAndNegative, setting).ContinueWith( t => { _metroWindow.Dispatcher.Invoke((Action)(() => { if (t.Result == MessageDialogResult.Affirmative) { if (_topMenusManage.Exist(a => a.Id != TopMenuId && a.DisplayName == DisplayName)) { _metroWindow.ShowMessageAsync("信息重复提示", $"菜单名称“{DisplayName}”,在系统中已存在,是否仍使用该名称?", MessageDialogStyle.AffirmativeAndNegative, setting) .ContinueWith(z => { if (z.Result == MessageDialogResult.Affirmative) { _metroWindow.Dispatcher.Invoke((Action)(() => { updateAction(); })); } }); } else { updateAction(); } } })); }); }