This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AUTS_OLD/AUTS_ServiceControler/ServiceRegister.vb

189 lines
6.7 KiB
VB.net
Raw Normal View History

2024-03-11 16:32:52 +08:00
Imports System.Management
Imports UTS_Core.Database
Imports UTS_Core.UTSModule
Imports UTS_Core.UTSModule.DbTableModel.Manage
Public Class ServiceRegister
Private _serviceID As Integer
Private _mac As String
Private _cpuId As String
Private _privateIP As String
Private _publicIP As String
Private _dsVersion As String
Private _usVersion As String
Sub New()
_dsVersion = UtsRegistry.DataServiceVersion
_usVersion = UtsRegistry.UpdateServiceVersion
InitServiceIndex()
InitMacAndLocalIP()
_cpuId = GetProcessorId()
If String.IsNullOrWhiteSpace(_cpuId) Then
Throw New Exception("无效的CPU序列号")
End If
End Sub
Public ReadOnly Property PrivateIP() As String
Get
Return _privateIP
End Get
End Property
Public ReadOnly Property DsVersion() As String
Get
Return _dsVersion
End Get
End Property
Public Property UsVersion() As String
Get
Return _usVersion
End Get
Set(value As String)
_usVersion = value
End Set
End Property
Public ReadOnly Property ServiceID() As Integer
Get
Return _serviceID
End Get
End Property
Public Property LicenseID As String
Public Property VendorName As String
Public Property ExpirationDate As String
Public Property TerminalAlias As String
Public Property Group As String
Public Property Roles As String
Private Function InitServiceIndex() As Boolean
Try
_serviceID = CInt(UtsRegistry.DataServiceIndex)
If _serviceID = -1 Then Return False
Catch ex As Exception
Throw New Exception($"RegisterService Error: {ex.Message}")
End Try
Return True
End Function
''' <summary>
''' 注册服务返回注册服务的索引
''' </summary>
Public Sub RegisterService()
'增加服务记录
Dim filed As New Dictionary(Of String, String) From {
{$"{DataServiceListTable.ColNames.LicenseID}", LicenseID},
{$"{DataServiceListTable.ColNames.CompanyName}", VendorName},
{$"{DataServiceListTable.ColNames.LicenseValidDateTime}", ExpirationDate},
{$"{DataServiceListTable.ColNames.TerminalType}", "Windows"},
{$"{DataServiceListTable.ColNames.TerminalName}", Environment.MachineName},
{$"{DataServiceListTable.ColNames.TerminalOS}", My.Computer.Info.OSFullName},
{$"{DataServiceListTable.ColNames.TerminalAlias}", TerminalAlias},
{$"{DataServiceListTable.ColNames.TerminalMAC}", _mac},
{$"{DataServiceListTable.ColNames.ProcessorId}", _cpuId},
{$"{DataServiceListTable.ColNames.ServiceVersion}", DsVersion},
{$"{DataServiceListTable.ColNames.USVer}", UsVersion},
{$"{DataServiceListTable.ColNames.BarnchNet}", Group},
{$"{DataServiceListTable.ColNames.Roles}", Roles},
{$"{DataServiceListTable.ColNames.ServiceRegisterDateTime}", Now.ToString("yyyy-MM-dd HH:mm:ss")},
{$"{DataServiceListTable.ColNames.ServiceLastActiveDateTime}", Now.ToString("yyyy-MM-dd HH:mm:ss")}
}
Dim tableName As String = DataServiceListTable.TableName
Dim colName As String = $"{DataServiceListTable.ColNames.ID}"
Dim condition As String = $"`{DataServiceListTable.ColNames.ProcessorId}` = '{_cpuId}'"
Dim sid As Integer
Using db As New DbExecutor(UtsDb.RemoteDbType, UtsDb.RemoteConnString)
db.Open()
'检测本机是否有注册信息
If _serviceID = -1 Then
'根据CPUID获取索引
Try
_serviceID = CInt(db.ExecuteScalar(db.CmdHelper.DbSearch(UtsDb.RemotePublicDb, colName, tableName, condition)))
Catch ex As Exception
Throw New Exception($"Don't Find Mac:{_mac} Register.")
End Try
If _serviceID > 0 Then '更新
'有索引则更新
condition = $"`{DataServiceListTable.ColNames.ID}` = {_serviceID}"
db.ExecuteNonQuery(db.CmdHelper.DbUpdate(UtsDb.RemotePublicDb, tableName, filed, condition))
Else
'无索引则注册
db.ExecuteNonQuery(db.CmdHelper.DbInsert(UtsDb.RemotePublicDb, tableName, filed))
_serviceID = CInt(db.ExecuteScalar(db.CmdHelper.DbSearch(UtsDb.RemotePublicDb, colName, tableName, condition)))
End If
Else
'根据CPUID获取索引
Try
sid = CInt(db.ExecuteScalar(db.CmdHelper.DbSearch(UtsDb.RemotePublicDb, colName, tableName, condition)))
Catch ex As Exception
Throw New Exception($"Search Service ID Error:{ex.Message}")
End Try
If _serviceID = sid Then
'索引相同则更新
condition = $"`{DataServiceListTable.ColNames.ID}` = {_serviceID}"
db.ExecuteNonQuery(db.CmdHelper.DbUpdate(UtsDb.RemotePublicDb, tableName, filed, condition))
ElseIf sid = 0 Then
'索引不相同但无CUPID则更新
condition = $"`{DataServiceListTable.ColNames.ID}` = {_serviceID}"
db.ExecuteNonQuery(db.CmdHelper.DbUpdate(UtsDb.RemotePublicDb, tableName, filed, condition))
Else
'索引不同则异常
Throw New Exception($"设备索引异常,请联系管理员解决问题")
End If
End If
db.Close()
End Using
UtsRegistry.DataServiceIndex = _serviceID.ToString
End Sub
Private Sub InitMacAndLocalIP()
Dim searcher As New ManagementObjectSearcher("select * from win32_NetworkAdapterConfiguration")
Dim moc2 As ManagementObjectCollection = searcher.Get()
For Each mo As ManagementObject In moc2
If CBool(mo("IPEnabled")) Then
_mac = mo("MACAddress").ToString().ToUpper
Dim a() As String = CType(mo("IpAddress"), String())
_privateIP = a(0)
Exit For
End If
Next
End Sub
Private Function GetProcessorId() As String
Dim Wmis As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Processor")
Dim pid As String = ""
For Each WmiObj As ManagementObject In Wmis.Get
pid = CStr(WmiObj("ProcessorId")).ToUpper
Exit For
Next
Return pid
End Function
End Class