211 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			211 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C#
		
	
	
	
using Prism.Commands;
 | 
						|
using Prism.Events;
 | 
						|
using Prism.Mvvm;
 | 
						|
using Prism.Regions;
 | 
						|
using Prism.Services.Dialogs;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Configuration;
 | 
						|
using System.Linq;
 | 
						|
using System.Text;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using System.Windows;
 | 
						|
using DM_Weight.Finger;
 | 
						|
using DM_Weight.Models;
 | 
						|
using DM_Weight.msg;
 | 
						|
using DM_Weight.util;
 | 
						|
 | 
						|
namespace DM_Weight.ViewModels
 | 
						|
{
 | 
						|
    public class EditUserDialogViewModel : BindableBase, IDialogAware, IRegionMemberLifetime
 | 
						|
    {
 | 
						|
 | 
						|
        private readonly FingerprintUtil _fingerprintUtil;
 | 
						|
        IEventAggregator _eventAggregator;
 | 
						|
        public EditUserDialogViewModel(FingerprintUtil fingerprintUtil, IEventAggregator eventAggregator)
 | 
						|
        {
 | 
						|
            _fingerprintUtil = fingerprintUtil;
 | 
						|
            _eventAggregator = eventAggregator;
 | 
						|
        }
 | 
						|
 | 
						|
        private UserList _userList = new UserList();
 | 
						|
 | 
						|
        public UserList UserList
 | 
						|
        {
 | 
						|
            get => _userList;
 | 
						|
            set => SetProperty(ref _userList, value);
 | 
						|
        }
 | 
						|
 | 
						|
        public List<RoleDm> Roles { get; set; }
 | 
						|
 | 
						|
        private string _oldPass;
 | 
						|
        public string OldPass
 | 
						|
        {
 | 
						|
            get => _oldPass;
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if (string.IsNullOrEmpty(value))
 | 
						|
                {
 | 
						|
                    throw new ArgumentException("请输入原密码");
 | 
						|
                }
 | 
						|
                if (!MD5.GetMD5Hash(value).ToLower().Equals(UserList.PassWord.ToLower()))
 | 
						|
                {
 | 
						|
                    throw new ArgumentException("旧密码错误");
 | 
						|
                }
 | 
						|
                SetProperty(ref _oldPass, value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        private string _newPass;
 | 
						|
        public string NewPass
 | 
						|
        {
 | 
						|
            get => _newPass; set
 | 
						|
            {
 | 
						|
                if (string.IsNullOrEmpty(value))
 | 
						|
                {
 | 
						|
                    throw new ArgumentNullException("请输入新密码");
 | 
						|
                }
 | 
						|
                SetProperty(ref _newPass, value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private bool _onlyPassword = false;
 | 
						|
        private bool _editUser = true;
 | 
						|
        public bool OnlyPassword { get => _onlyPassword; set => SetProperty(ref _onlyPassword, value); }
 | 
						|
        public bool EditUser { get => _editUser; set => SetProperty(ref _editUser, value); }
 | 
						|
 | 
						|
        public event Action<IDialogResult> RequestClose;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
        public bool KeepAlive => false;
 | 
						|
 | 
						|
        private string _title = "编辑用户";
 | 
						|
 | 
						|
        public string Title
 | 
						|
        {
 | 
						|
            get => _title;
 | 
						|
            set => SetProperty(ref _title, value);
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        public DelegateCommand SaveUser
 | 
						|
        {
 | 
						|
            get => new DelegateCommand(() =>
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
 | 
						|
                    // 修改密码
 | 
						|
                    if (OnlyPassword)
 | 
						|
                    {
 | 
						|
                        if (MD5.GetMD5Hash(OldPass).ToLower().Equals(UserList.PassWord.ToLower()))
 | 
						|
                        {
 | 
						|
                            // 旧密码输入正确
 | 
						|
                            UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
						|
                            SqlSugarHelper.Db.Updateable<UserList>(UserList).UpdateColumns(u => new { u.PassWord }).ExecuteCommand();
 | 
						|
                            // 关闭当前窗口
 | 
						|
                            RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    // 保存用户
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        if (UserList.Id > 0)
 | 
						|
                        {
 | 
						|
                            // 更新
 | 
						|
                            // 没有写密码
 | 
						|
                            if (string.IsNullOrEmpty(NewPass))
 | 
						|
                            {
 | 
						|
                                SqlSugarHelper.Db.Updateable<UserList>(UserList).UpdateColumns(u => new { u.Nickname, u.UserName, u.UserBarcode, u.RoleId }).ExecuteCommand();
 | 
						|
                            }
 | 
						|
                            // 更改了密码
 | 
						|
                            else
 | 
						|
                            {
 | 
						|
                                UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
						|
                                SqlSugarHelper.Db.Updateable<UserList>(UserList).UpdateColumns(u => new { u.Nickname, u.UserName, u.PassWord, u.UserBarcode, u.RoleId }).ExecuteCommand();
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            UserList.PassWord = MD5.GetMD5Hash(NewPass);
 | 
						|
                            UserList.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1";
 | 
						|
                            // 插入
 | 
						|
                            SqlSugarHelper.Db.Insertable<UserList>(UserList).InsertColumns(u => new { u.Id, u.Nickname, u.UserName, u.PassWord, u.UserBarcode, u.RoleId, u.MachineId }).ExecuteCommand();
 | 
						|
                        }
 | 
						|
                        RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
 | 
						|
                    }
 | 
						|
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    AlertMsg alertMsg = new AlertMsg
 | 
						|
                    {
 | 
						|
                        Message = $"保存用户信息异常{ex.Message}",
 | 
						|
                        Type = MsgType.ERROR,
 | 
						|
                    };
 | 
						|
                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
        void GetAllRole()
 | 
						|
        {
 | 
						|
            Roles = SqlSugarHelper.Db.Queryable<RoleDm>().Where(r => r.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM1")).OrderBy(r => r.Id).ToList();
 | 
						|
            RaisePropertyChanged("Roles");
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        public DelegateCommand CancelCommand
 | 
						|
        {
 | 
						|
            get => new DelegateCommand(() =>
 | 
						|
            {
 | 
						|
                // 关闭当前窗口
 | 
						|
                RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel));
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        public bool CanCloseDialog()
 | 
						|
        {
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
 | 
						|
        public void OnDialogClosed()
 | 
						|
        {
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
        public void OnDialogOpened(IDialogParameters parameters)
 | 
						|
        {
 | 
						|
 | 
						|
            if (parameters.ContainsKey("EditPass"))
 | 
						|
            {
 | 
						|
 | 
						|
                UserList = parameters.GetValue<UserList>("User");
 | 
						|
                OnlyPassword = parameters.GetValue<bool>("EditPass");
 | 
						|
                EditUser = false;
 | 
						|
                Title = "修改密码";
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                if (parameters.ContainsKey("User"))
 | 
						|
                {
 | 
						|
                    UserList = parameters.GetValue<UserList>("User");
 | 
						|
                }
 | 
						|
                if (UserList.Id == null)
 | 
						|
                {
 | 
						|
                    Title = "添加用户";
 | 
						|
                }
 | 
						|
                GetAllRole();
 | 
						|
            }
 | 
						|
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
}
 |