127 lines
4.0 KiB
C#
127 lines
4.0 KiB
C#
//using Cowain.Bake.Common.Service;
|
|
using Cowain.Bake.BLL;
|
|
using Cowain.Bake.Common;
|
|
using Cowain.Bake.Common.Enums;
|
|
using Cowain.Bake.Common.Interface;
|
|
using Prism.Commands;
|
|
using Prism.Ioc;
|
|
using Prism.Mvvm;
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
using Unity;
|
|
|
|
namespace Cowain.Bake.UI.Home.ViewModels
|
|
{
|
|
public class LoginViewModel : BindableBase
|
|
{
|
|
private readonly IUnityContainer _unityContainer;
|
|
//private readonly IRegionManager _regionManager;
|
|
|
|
public LoginViewModel(IUnityContainer unityContainer/*, IRegionManager regionManager*/)
|
|
{
|
|
//初始化数据库连接池
|
|
_unityContainer = unityContainer;
|
|
//_regionManager = regionManager;
|
|
//ConfigInfo.InitConfigParm(_unityContainer);
|
|
Global.STOVE_LAYERS = _unityContainer.Resolve<MemoryDataProvider>().AllStation.Find(x => x.Type == (int)EStationType.Stove).Layers;
|
|
}
|
|
|
|
private string _userName = "TEST12132";
|
|
|
|
public string UserName
|
|
{
|
|
get { return _userName; }
|
|
set { SetProperty<string>(ref _userName, value); }
|
|
}
|
|
|
|
|
|
private string _password = "123456";
|
|
|
|
public string Password
|
|
{
|
|
get { return _password; }
|
|
set { SetProperty<string>(ref _password, value); }
|
|
}
|
|
|
|
private string _errorMsg;
|
|
|
|
public string ErrorMsg
|
|
{
|
|
get { return _errorMsg; }
|
|
set { SetProperty<string>(ref _errorMsg, value); }
|
|
}
|
|
|
|
|
|
// 登录命令
|
|
public ICommand LoginCommand
|
|
{
|
|
get => new DelegateCommand<object>(OnLogin);
|
|
}
|
|
public static bool loginFlag = false;
|
|
private async void OnLogin(object obj)
|
|
{
|
|
string msg = "";
|
|
try
|
|
{
|
|
this.ErrorMsg = "" ;
|
|
if (string.IsNullOrEmpty(this.UserName))
|
|
{
|
|
this.ErrorMsg = "请输入用户名!";
|
|
return;
|
|
}
|
|
if (string.IsNullOrEmpty(this.Password))
|
|
{
|
|
this.ErrorMsg = "请输入密码!";
|
|
return;
|
|
}
|
|
|
|
|
|
var loginTask = Task.Run(() => _unityContainer.Resolve<UserService>().Login(this.UserName, this.Password, out msg));
|
|
var timeouttask = Task.Delay(8000);
|
|
var completedTask = await Task.WhenAny(loginTask, timeouttask);
|
|
if (completedTask == timeouttask)
|
|
{
|
|
this.ErrorMsg = "连接数据库超时,请联系管理员!";
|
|
}
|
|
else
|
|
{
|
|
var task = await loginTask;
|
|
if (task == true && !loginFlag)
|
|
{
|
|
loginFlag = true;
|
|
this.ErrorMsg = "登录成功 . . .";
|
|
(obj as Window).DialogResult = true;
|
|
}
|
|
else if (task == true && loginFlag)//切换用户
|
|
{
|
|
_unityContainer.Resolve<ICommonFun>().InitWindows();
|
|
(obj as Window).DialogResult = true;
|
|
(obj as Window).Close();
|
|
}
|
|
else
|
|
{
|
|
if (!string.IsNullOrEmpty(msg))
|
|
{
|
|
this.ErrorMsg = msg;
|
|
}
|
|
else if (!loginFlag)
|
|
{
|
|
this.ErrorMsg = "登录失败,用户名或密码错误. . .";
|
|
}
|
|
else
|
|
{
|
|
this.ErrorMsg = "切换用户失败,用户名或密码错误. . .";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
this.ErrorMsg = "登录失败!" + ex.Message;
|
|
}
|
|
}
|
|
}
|
|
}
|