208 lines
6.5 KiB
C#
208 lines
6.5 KiB
C#
|
|
using InSituLaboratory.Entities;
|
|||
|
|
using InSituLaboratory.IService;
|
|||
|
|
using InSituLaboratory.Models;
|
|||
|
|
using Prism.Commands;
|
|||
|
|
using Prism.Regions;
|
|||
|
|
using Prism.Services.Dialogs;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Collections.ObjectModel;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using System.Windows;
|
|||
|
|
|
|||
|
|
namespace InSituLaboratory.ViewModels.Pages
|
|||
|
|
{
|
|||
|
|
public class UserManagementViewModel : ViewModelBase
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
IUserService _userService;
|
|||
|
|
IRoleService _roleService;
|
|||
|
|
IDialogService _dialogService;
|
|||
|
|
public UserManagementViewModel(IRegionManager regionManager, IUserService userService, IRoleService roleService, IDialogService dialogService) : base(regionManager)
|
|||
|
|
{
|
|||
|
|
PageTitle = "系统用户管理";
|
|||
|
|
|
|||
|
|
_userService = userService;
|
|||
|
|
_roleService = roleService;
|
|||
|
|
_dialogService = dialogService;
|
|||
|
|
|
|||
|
|
SelectRoleCommand = new DelegateCommand<UserModel>(DoSelectRole);
|
|||
|
|
ResetPasswordCommand = new DelegateCommand<object>(DoResetPassword);
|
|||
|
|
LockUserCommand = new DelegateCommand<object>(DoLockUser);
|
|||
|
|
|
|||
|
|
|
|||
|
|
this.Refresh();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public ObservableCollection<UserModelEx> Users { get; set; } =
|
|||
|
|
new ObservableCollection<UserModelEx>();
|
|||
|
|
|
|||
|
|
public DelegateCommand<UserModel> SelectRoleCommand { get; set; }
|
|||
|
|
//重置密码
|
|||
|
|
public DelegateCommand<object> ResetPasswordCommand { get; set; }
|
|||
|
|
//锁定用户
|
|||
|
|
public DelegateCommand<object> LockUserCommand { get; set; }
|
|||
|
|
|
|||
|
|
public override void Refresh()
|
|||
|
|
{
|
|||
|
|
Users.Clear();
|
|||
|
|
var users = _userService.GetUsers(SearchKey).ToList();
|
|||
|
|
// 数据里拿到的是角色的ID 没有角色名称
|
|||
|
|
// 界面一般都会显示名称
|
|||
|
|
|
|||
|
|
int index = 1;
|
|||
|
|
foreach (var user in users)
|
|||
|
|
{
|
|||
|
|
UserModelEx userModel = new UserModelEx
|
|||
|
|
{
|
|||
|
|
Index = index++,
|
|||
|
|
UserId = user.UserId,
|
|||
|
|
UserName = user.UserName,
|
|||
|
|
RealName = user.RealName,
|
|||
|
|
UserIcon = "pack://siteoforigin:,,,/Avatars/" + user.UserIcon,
|
|||
|
|
Address = user.Address,
|
|||
|
|
Age = user.Age,
|
|||
|
|
Password = user.Password,
|
|||
|
|
Gender = user.Gender,
|
|||
|
|
Email = user.Email,
|
|||
|
|
Status = user.Status,
|
|||
|
|
|
|||
|
|
LockButtonText = user.Status == 1 ? "锁定" : "启用"
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
var rs = _roleService.Query<SysRole>(r =>
|
|||
|
|
user.Roles.Select(ur => ur.RoleId).ToList()
|
|||
|
|
.Contains(r.RoleId)).ToList();
|
|||
|
|
userModel.Roles = rs.Select(r => new RoleModel
|
|||
|
|
{
|
|||
|
|
RoleId = r.RoleId,
|
|||
|
|
RoleName = r.RoleName,
|
|||
|
|
}).ToList();
|
|||
|
|
|
|||
|
|
|
|||
|
|
Users.Add(userModel);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//删除
|
|||
|
|
public override void DoDelete(object model)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (MessageBox.Show("是否确定删除此项?", "提示", MessageBoxButton.YesNo) ==
|
|||
|
|
MessageBoxResult.Yes)
|
|||
|
|
{
|
|||
|
|
// 物理删除
|
|||
|
|
_userService.Delete<SysUser>((model as UserModelEx).UserId);
|
|||
|
|
|
|||
|
|
MessageBox.Show("删除完成!", "提示");
|
|||
|
|
|
|||
|
|
Users.Remove(model as UserModelEx);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
MessageBox.Show(ex.Message, "提示");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//编辑
|
|||
|
|
public override void DoModify(object model)
|
|||
|
|
{
|
|||
|
|
DialogParameters ps = new DialogParameters();
|
|||
|
|
ps.Add("model", model);
|
|||
|
|
_dialogService.ShowDialog("ModifyUserView", ps, result =>
|
|||
|
|
{
|
|||
|
|
// 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管
|
|||
|
|
if (result.Result == ButtonResult.OK)
|
|||
|
|
{
|
|||
|
|
this.Refresh();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 重置用户密码
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="model"></param>
|
|||
|
|
public void DoResetPassword(object model)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (MessageBox.Show("是否确定重置当前用户密码?", "提示", MessageBoxButton.YesNo) ==
|
|||
|
|
MessageBoxResult.Yes)
|
|||
|
|
{
|
|||
|
|
var user = _userService.Find<SysUser>((model as UserModel).UserId);
|
|||
|
|
user.Password = "123456";
|
|||
|
|
_userService.Update<SysUser>(user);
|
|||
|
|
|
|||
|
|
MessageBox.Show("重置完成!", "提示");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
MessageBox.Show(ex.Message, "提示");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 锁定用户
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="model"></param>
|
|||
|
|
public void DoLockUser(object model)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
var ui = model as UserModelEx;
|
|||
|
|
var user = _userService.Find<SysUser>(ui.UserId);
|
|||
|
|
if (ui.Status == 1)
|
|||
|
|
{
|
|||
|
|
if (MessageBox.Show("是否锁定前用户?", "提示", MessageBoxButton.YesNo) ==
|
|||
|
|
MessageBoxResult.Yes)
|
|||
|
|
{
|
|||
|
|
user.Status = 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
user.Status = 1;
|
|||
|
|
}
|
|||
|
|
_userService.Update<SysUser>(user);
|
|||
|
|
|
|||
|
|
MessageBox.Show("操作已完成!", "提示");
|
|||
|
|
|
|||
|
|
ui.Status = user.Status;
|
|||
|
|
this.Refresh();
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
MessageBox.Show(ex.Message, "提示");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 编辑角色
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="model"></param>
|
|||
|
|
private void DoSelectRole(UserModel model)
|
|||
|
|
{
|
|||
|
|
DialogParameters ps = new DialogParameters();
|
|||
|
|
ps.Add("model", model);
|
|||
|
|
_dialogService.ShowDialog("SelectRoleView", ps, result =>
|
|||
|
|
{
|
|||
|
|
// 判断子窗口的返回状态,如果OK,刷新当前页面,否则不管
|
|||
|
|
if (result.Result == ButtonResult.OK)
|
|||
|
|
{
|
|||
|
|
this.Refresh();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|