Files
Desktop_BLVStudio_EN/BLV_Studio/Control/FrmLogin.vb

453 lines
15 KiB
VB.net
Raw Normal View History

2025-12-11 14:22:51 +08:00
Imports System.Data.Common
Imports System.Drawing.Drawing2D
Imports System.IO
Imports System.Net
Imports System.Text
Imports Newtonsoft.Json
Public Class FrmLogin
#Region "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
''' <summary> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺͰ汾<CDB0><E6B1BE>Ϣ </summary>
Public dicNC As New Dictionary(Of String, Integer)
''' <summary>
''' <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
''' </summary>
Private Sub InitmultiLanguage()
Dim lag As DataTable = GetCloudVersionInfo()
For index = 0 To lag.Rows.Count - 1
dicNC.Add(lag(index)(0), lag(index)(1))
Next
ComboBox1.Items.AddRange(dicNC.Keys.ToArray)
If ComboBox1.Items.Count > 0 Then ComboBox1.SelectedIndex = 0
End Sub
''' <summary>
''' <20><>ȡ<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>ݰ汾
''' </summary>
''' <returns></returns>
Private Function GetCloudVersionInfo() As DataTable
Dim dtVer As DataTable = _SqlLogin.GetCloudVersionInfo()
Return dtVer
End Function
''' <summary>
''' <20><>ȡ<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
''' </summary>
''' <returns></returns>
Private Function GetCloudDataInfo(languageName As String) As DataTable
Dim dtData As DataTable = _SqlLogin.GetCloudDataInfo(languageName)
Return dtData
End Function
''' <summary>
''' <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC>ı<EFBFBD>
''' </summary>
Private Sub InitMultiLanguageInfo()
'If IsNothing(LanguageData) Then Return
Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Login) & $" v{Application.ProductVersion}"
UsernameLabel.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.UserName)
PasswordLabel.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PassWord)
CheckBox1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AutomaticLogin)
LblLanguage.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Language)
CheckBox2.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RememberPassWord)
OK.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginDetermine)
Cancel.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginCancel)
End Sub
#End Region
#Region "<22><>¼<EFBFBD>ӿ<EFBFBD>"
Public _countIndex As Integer = 0
''' <summary>
''' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ϣ
''' </summary>
Private Function DealLoginInfo() As Boolean
Dim user As String = UsernameTextBox.Text
Dim pwd As String = PasswordTextBox.Text
user = user.Trim()
pwd = pwd.Trim()
' MsgBox("1.1")
Dim jsonString As String = String.Empty
Try
jsonString = PostData("http://auth.blv-oa.com/OTApi/Login", $"Uid={user}&Pwd={pwd}&appid=1")
'jsonString = PostData("http://47.119.147.104:90/OTApi/Login", $"Uid={user}&Pwd={pwd}&appid=1")
' MsgBox("1.2")
Catch ex As Exception
MsgBox($"{ex.Message}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Ա")
' MsgBox("1.3")
End Try
Console.WriteLine(jsonString)
If jsonString = Nothing Then
Return False
End If
'MsgBox("1.4")
Dim login As LoginBLL = JsonConvert.DeserializeObject(Of LoginBLL)(jsonString)
If login Is Nothing Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginFailed)}<7D><>{LanguageData.StringList(MultiLanguageDAL.StringEnum.NoLoginInformationIsDisplayed)}<7D><>")
Return False
End If
'MsgBox("1.5")
Console.WriteLine($"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>{login.Status} {login.Message}")
If login.Status <> 200 Then
MsgBox($"<EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{login.Status}-" & login.Message)
Return False
End If
' MsgBox("1.6")
<><C8A1><EFBFBD><EFBFBD>
Dim index As Integer = 0
_loginData.Clear()
_countIndex = 0
'MsgBox("1.7")
For i = 0 To login.Data.HotelData.Count - 1
'<27><>ID, <20><><EFBFBD><EFBFBD>
For j = 0 To login.Data.HotelData.Item(i).Hotels.Count - 1
'<27>Ƶ<EFBFBD>ID, <20>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>, <20>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>
For k = 0 To login.Data.HotelData.Item(i).Hotels.Item(j).Auth.Count - 1
<><C8A8>״̬<D7B4><CCAC>Ȩ<EFBFBD><C8A8>ID, Ȩ<><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
index += 1
Dim data As New LoginReturnDataBLL
data.HotelGroupsId = login.Data.HotelData.Item(i).HotelGroupsId
data.HotelGroupsName = login.Data.HotelData.Item(i).HotelGroupsName
data.HotelId = login.Data.HotelData.Item(i).Hotels.Item(j).HotelId
data.Code = login.Data.HotelData.Item(i).Hotels.Item(j).Code
data.HotelName = login.Data.HotelData.Item(i).Hotels.Item(j).HotelName
data.AuthotypeId = login.Data.HotelData.Item(i).Hotels.Item(j).Auth(k).AuthotypeId
data.AuthorityId = login.Data.HotelData.Item(i).Hotels.Item(j).Auth(k).AuthorityId
data.AuthorityName = login.Data.HotelData.Item(i).Hotels.Item(j).Auth(k).AuthorityName
_countIndex += 1
Dim key As String = $"{login.Data.HotelData.Item(i).Hotels.Item(j).HotelName}{login.Data.HotelData.Item(i).Hotels.Item(j).Code}-{_countIndex}"
_loginData.Add(key, data)
Next
Next
' MsgBox("1.8")
Next
'MsgBox("1.9")
Return True
End Function
''' <summary>
''' Post<73><74><EFBFBD><EFBFBD>
''' </summary>
''' <param name="url"></param>
''' <param name="data"></param>
''' <returns></returns>
Public Shared Function PostData(ByVal url As String, ByVal data As String) As String
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest = WebRequest.Create(url)
'//Post<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
request.Method = "POST"
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
request.ContentType = "application/x-www-form-urlencoded"
'<27><>URL<52><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ֽ<EFBFBD>
Dim encoding As New UTF8Encoding()
Dim bys As Byte() = encoding.GetBytes(data)
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ContentLength
request.ContentLength = bys.Length
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Dim newStream As Stream = request.GetRequestStream()
newStream.Write(bys, 0, bys.Length)
newStream.Close()
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
Return sr.ReadToEnd
End Function
'Public Shared Function GetData(url As String) As String
' Dim str As String = $"http://47.119.147.104:90/OTApi/Login?Uid=AdminBlv&Pwd=123456&appid=1"
' Dim request As HttpWebRequest = CType(WebRequest.Create(str), HttpWebRequest)
' request.Accept = "text/html,application/xhtml+xml,*/*"
' request.ContentType = "application/json"
' request.Method = "Post"
' Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
' Return sr.ReadToEnd
'End Function
'Public Shared Function GetData(ByVal url As String, ByVal data As String) As String
' Dim request As HttpWebRequest = WebRequest.Create(url + "?" + data)
' request.Method = "GET"
' Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
' Return sr.ReadToEnd
'End Function
#End Region
#Region "<22><>¼"
''' <summary> <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڵ<EFBFBD>¼ </summary>
Private _isLogging As Boolean
''' <summary>
''' <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmLogin_Load(sender As Object, e As EventArgs) Handles Me.Load
If ConnLoginDataSourse() = False Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DatabaseConnectionFailed)}<7D><>{LanguageData.StringList(MultiLanguageDAL.StringEnum.CheckWhetherTheNetworkConnectionIsSuccessful)}<7D><>")
Return
End If
'<27><><EFBFBD>ӵ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ݿ<EFBFBD>
InitmultiLanguage() '<27><><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD>ʼ<EFBFBD><CABC>
InitMultiLanguageInfo()
UsernameTextBox.Text = My.Settings.User
PasswordTextBox.Text = My.Settings.PassWord
'asdfghjkl()
End Sub
''' <summary>
''' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
'MsgBox("0")
DealHotelListInterfaceInfo()
'DealHostListInterfaceInfo()
'DealSetHostMACInterfaceInfo()
'MsgBox("1")
Static time As Date = Now
While True
If DealLoginInfo() = False Then
Return
Else
Exit While
End If
If (Now - time).TotalMilliseconds > 2000 Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginTimeout)}<7D><>")
Return
End If
Threading.Thread.Sleep(100)
End While
'MsgBox("2")
Try
_userNames = UsernameTextBox.Text
'If AccountLogin() = False Then '<27><><EFBFBD>ƶ˻<C6B6>ȡ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ
' Exit Sub
'End If
DialogResult = DialogResult.OK
FrmCSeriesConfig.Show()
Me.Close() '<27><>¼<EFBFBD><C2BC><EFBFBD>ɹرյ<D8B1>¼ҳ<C2BC><D2B3>
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly, $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginFailed)}") ''<27><>¼ʧ<C2BC><CAA7>
End Try
'MsgBox("3")
_isLogging = False
End Sub
'''' <summary>
'''' ʹ<><CAB9><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
'''' </summary>
'Private Function AccountLogin() As Boolean
' Dim userAccount As String = UsernameTextBox.Text
' Dim userPassword As String = PasswordTextBox.Text
' CheckUserAccount(userAccount)
' CheckUserPassword(userPassword)
' Dim dtUser As DataTable = _SqlLogin.GetUserInfo(userAccount, userPassword)
' If dtUser.Rows.Count = 0 Then
' MessageBox.Show($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.NoSuchUser)}<7D><>") ''<27>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
' Return False
' ElseIf dtUser.Rows.Count > 0 Then
' Dim createTime As String = dtUser(0)(3)
' createTime = createTime.Replace("/", "-")
' Dim userPass As String = $"{userAccount.ToUpper()}{userPassword}{createTime}"
' Dim pwd As String = GetStringMd5(userPass)
' Dim pwdcloud As String = dtUser(0)(2) '<27><>ȡ<EFBFBD><C8A1>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
' _userNames = dtUser(0)(1) '<27><>ȡ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>
' 'Console.WriteLine($"<22>û<EFBFBD><C3BB><EFBFBD>{_userNames}")
' 'Console.WriteLine($"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룺{pwd}")
' 'Console.WriteLine($"<22><>ѯ<EFBFBD><D1AF><EFBFBD>룺{pwdcloud}")
' _userData = dtUser
' If GetPassWordCheck(pwd, pwdcloud) = True Then
' MessageBox.Show($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.IncorrectPasswordPleaseTryAgain)}<7D><>") '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
' Return False
' End If
' End If
' Return True
'End Function
'''' <summary>
'''' <20>û<EFBFBD>У<EFBFBD><D0A3>
'''' </summary>
'''' <param name="userAccount"></param>
'Private Sub CheckUserAccount(userAccount As String)
' If String.IsNullOrWhiteSpace(userAccount) Then
' Throw New Exception($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseEnterYourUserAccount)}<7D><>") '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>˺ţ<CBBA>
' End If
'End Sub
'''' <summary>
'''' <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
'''' </summary>
'''' <param name="userPassword"></param>
'Private Sub CheckUserPassword(userPassword As String)
' If String.IsNullOrWhiteSpace(userPassword) Then
' Throw New Exception($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseEnterYourPassword)}<7D><>") '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
' End If
'End Sub
'''' <summary>
'''' <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
'''' </summary>
'''' <param name="pwd"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
'''' <param name="pwdcloud"><3E>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD></param>
'''' <returns></returns>
'Private Function GetPassWordCheck(pwd As String, pwdcloud As String) As Boolean
' If String.IsNullOrWhiteSpace(pwd) OrElse String.IsNullOrWhiteSpace(pwdcloud) Then Return False
' If String.Compare(pwd, pwdcloud) = 0 Then Return False
' Return True
'End Function
''' <summary>
''' ȡ<><C8A1><EFBFBD><EFBFBD>¼
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
Me.Close()
End Sub
''' <summary>
''' <20><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1>¼<EFBFBD>
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmLogin_Closed(sender As Object, e As EventArgs) Handles Me.Closed
If CheckBox2.Checked = True Then
My.Settings.User = UsernameTextBox.Text
My.Settings.PassWord = PasswordTextBox.Text
My.Settings.Save()
End If
End Sub
''' <summary>
''' <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim SName As String = ComboBox1.Text
Dim path As String = $"{ComboBox1.Text}.xml"
If String.IsNullOrEmpty(SName) Then Return
If IO.File.Exists(path) Then
LanguageData = MultiLanguageDAL.DeserializeFormXml(Of MultiLanguageDAL)(path)
If LanguageData.Version <> dicNC(SName) Then
LanguageData.Version = dicNC(SName)
LanguageData.InitializeByDataTable(GetCloudDataInfo(SName))
MultiLanguageDAL.SerializeToXml(Of MultiLanguageDAL)($"{SName}.xml", LanguageData)
End If
Else
LanguageData = New MultiLanguageDAL
LanguageData.Name = SName
LanguageData.Version = dicNC(SName)
LanguageData.InitializeByDataTable(GetCloudDataInfo(SName))
MultiLanguageDAL.SerializeToXml(Of MultiLanguageDAL)($"{SName}.xml", LanguageData)
End If
'<27><><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD>
InitMultiLanguageInfo()
End Sub
#End Region
Private Sub asdfghjkl()
''<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'Dim picture As Image
'If My.Computer.Clipboard.ContainsImage() Then
' picture = My.Computer.Clipboard.GetImage
'End If
''<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'My.Computer.Audio.Play("SoundFile.wav", AudioPlayMode.BackgroundLoop)
''<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'Dim italicFont As New Font("Courier New", 12, FontStyle.Italic)
''<27>ؼ<EFBFBD>&<26><><EFBFBD><EFBFBD>
'' For more information on the rich text format characters, see: http://www.microsoft.com/downloads/details.aspx?FamilyID=e5b8ebc2-6ad6-49f0-8c90-e4f763e3f04f&DisplayLang=en
'RichTextBox1.Rtf = "{\rtf1\ansi This is in \b bold\b0.}"
''<27><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
'Dim tooltip As New ToolTip()
'tooltip.SetToolTip(OK, "<22><><EFBFBD><EFBFBD>")
'With ProgressBar1
' .Minimum = 1
' .Maximum = 100000
' .Value = 1
' .Step = 1
' For i As Integer = .Minimum To .Maximum
' ' Perform one step of the action being tracked.
' .PerformStep()
' Next i
'End With
''<27><>ͼ
'Dim path As New GraphicsPath()
'Dim points() As Point = {
' New Point(0, 0),
' New Point(100, 0),
' New Point(100, 100),
' New Point(0, 0)}
'path.AddLines(points)
'Dim surface As Graphics = PictureBox1.CreateGraphics
'surface.DrawPath(Pens.Black, path)
End Sub
End Class