Files
AUTS_Desktop_Prod/AUTS_DataService/ServiceConfig.vb
MomoWen 027d0f8024 初始化提交
仓库转移到Gitea,初始化提交,可能丢失以前的git版本日志
2025-11-27 16:41:05 +08:00

295 lines
7.8 KiB
VB.net

Imports System.Management
Imports System.Net
Imports UTS_Core.Database
Imports UTS_Core.UTSModule
Imports UTS_Core.UTSModule.DbTableModel.Manage
Public Class ServiceConfig
Private _privateIP As String
Private _publicIP As String
Private _mac As String
Private ReadOnly _dsIndex As Integer
Private ReadOnly _dsName As String
Private ReadOnly _dsVerString As String
Private _usVerString As String
Private ReadOnly _usName As String
Private _dsVer As Version
Private _usVer As Version
Sub New()
_dsIndex = CInt(UtsRegistry.DataServiceIndex)
_dsName = My.Application.Info.ProductName
_dsVer = My.Application.Info.Version
_dsVerString = My.Application.Info.Version.ToString
_usName = UtsRegistry.UpdateServiceName
_usVerString = UtsRegistry.UpdateServiceVersion
If Version.TryParse(_usVerString, _usVer) = False Then
_usVer = New Version(0, 0, 0, 0)
End If
BarnchNet = UtsRegistry.BarnchNet
If Integer.TryParse(UtsRegistry.Roles, Roles) = False Then
Roles = 0
End If
IsDBProxyConn = 0
CacheCount = 0
DbStatus = 0
FtpStatus = 0
NetworkNeiborhood = ""
UsConnected = 0
InitMacAndLocalIP()
End Sub
Public ReadOnly Property DsIndex() As Integer
Get
Return _dsIndex
End Get
End Property
''' <summary>
''' 数据服务的数据服务的名称
''' </summary>
''' <returns></returns>
Public ReadOnly Property DsName() As String
Get
Return _dsName
End Get
End Property
''' <summary>
''' 数据服务的版本字符串
''' </summary>
''' <returns></returns>
Public ReadOnly Property DsVerString() As String
Get
Return _dsVerString
End Get
End Property
''' <summary>
''' 更新服务的版本字符串
''' </summary>
''' <returns></returns>
Public Property UsVerString() As String
Get
Return _usVerString
End Get
Set(value As String)
_usVerString = value
If Version.TryParse(_usVerString, _usVer) = False Then
_usVer = New Version(0, 0, 0, 0)
End If
End Set
End Property
''' <summary>
''' 数据服务的版本
''' </summary>
''' <returns></returns>
Public ReadOnly Property DsVersion() As Version
Get
Return _dsVer
End Get
End Property
''' <summary>
''' 更新服务的版本
''' </summary>
''' <returns></returns>
Public ReadOnly Property UsVersion() As Version
Get
Return _usVer
End Get
End Property
''' <summary>
''' 更新服务的名称
''' </summary>
''' <returns></returns>
Public ReadOnly Property UsName() As String
Get
Return _usName
End Get
End Property
''' <summary>
''' 设备的局域网IP
''' </summary>
''' <returns></returns>
Public ReadOnly Property PrivateIP() As String
Get
Return _privateIP
End Get
End Property
''' <summary>
''' 设备的MAC地址
''' </summary>
''' <returns></returns>
Public ReadOnly Property Mac() As String
Get
Return _mac
End Get
End Property
''' <summary>
''' 与更新服务的连接状态
''' </summary>
''' <returns></returns>
Public Property UsConnected As Integer
''' <summary>
''' 设备运行中产生的异常
''' </summary>
''' <returns></returns>
Private Property ErrMsg As String
''' <summary>
''' 局域网中与主机的连接状态
''' </summary>
''' <returns></returns>
Public Property IsDBProxyConn As Integer
''' <summary>
''' 设备加入的子网名称
''' </summary>
''' <returns></returns>
Public Property BarnchNet As String
''' <summary>
''' 当前设备在局域网中的角色
''' </summary>
''' <returns></returns>
Public Property Roles As Integer
''' <summary>
''' 网上邻居集合
''' </summary>
''' <returns></returns>
Public Property NetworkNeiborhood As String
''' <summary>
''' 当前缓存表字段数量
''' </summary>
''' <returns></returns>
Public Property CacheCount As Integer
''' <summary>
''' 云端数据库连接状态
''' </summary>
''' <returns></returns>
Public Property DbStatus As Integer
''' <summary>
''' Ftp服务器连接状态
''' </summary>
''' <returns></returns>
Public Property FtpStatus As Integer
''' <summary>
''' 私有IP地址变化
''' </summary>
''' <param name="ip"></param>
Public Event PrivateIPChanged(ip As String)
''' <summary>
''' MAC地址变化
''' </summary>
''' <param name="mac"></param>
Public Event MACChanged(mac As String)
Public Sub UpdateErrMsg(type As String, msg As String)
ErrMsg = $"{type},{msg}"
End Sub
''' <summary>
''' 初始化MAC地址与获取本地IP
''' </summary>
Public Sub InitMacAndLocalIP()
' Dim ip As String
Dim mac As String
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()
If String.Compare(_mac, mac) <> 0 Then
_mac = mac
'触发MAC地址变化
RaiseEvent MACChanged(_mac)
End If
Dim a() As String = CType(mo("IpAddress"), String())
Dim address As IPAddress = Nothing
For Each ip As String In a
If IPAddress.TryParse(ip, address) Then
'使用IPV4地址
If address.AddressFamily = Sockets.AddressFamily.InterNetwork Then
If String.Compare(_privateIP, ip) <> 0 Then
'触发IP地址变化
_privateIP = ip
RaiseEvent PrivateIPChanged(_privateIP)
End If
Return
End If
End If
Next
End If
Next
End Sub
''' <summary>
''' 上传服务信息至数据库
''' </summary>
Public Sub UpdateServiceInfo()
Using db As New DbExecutor(UtsDb.RemoteDbType, UtsDb.RemoteConnString)
db.Open()
Dim cmdText As String
Dim tbName As String = DataServiceListTable.TableName
Dim filed As New Dictionary(Of String, String)
filed.Add($"{DataServiceListTable.ColNames.ServiceVersion}", DsVerString)
filed.Add($"{DataServiceListTable.ColNames.CacheCount}", CacheCount.ToString)
filed.Add($"{DataServiceListTable.ColNames.IsDBProxyConn}", IsDBProxyConn.ToString)
filed.Add($"{DataServiceListTable.ColNames.NetworkNeiborhood}", NetworkNeiborhood)
If String.IsNullOrEmpty(ErrMsg) = False Then
filed.Add($"{DataServiceListTable.ColNames.ErrMsg}", ErrMsg)
ErrMsg = String.Empty
End If
Dim condition As String = $"`{DataServiceListTable.ColNames.ID}` = {_dsIndex}"
cmdText = db.CmdHelper.DbUpdate(UtsDb.RemotePublicDb, tbName, filed, condition)
Try
db.ExecuteNonQuery(cmdText)
Catch ex As Exception
ServiceLog.WriteErrorLog($"Update ServiceTable Error:{ex.Message}")
End Try
db.Close()
End Using
End Sub
End Class