Merge branch 'master' of http://www.scserverddns.top:13000/sc/SunlightAggregationManager
This commit is contained in:
commit
84b14491e2
4 files changed
+74
-16
No files matched your search
@@ -13,6 +13,7 @@
|
||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="10.0.5" />
|
||||
<PackageReference Include="Net.Codecrete.QrCodeGenerator" Version="2.1.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.9.1" />
|
||||
<PackageReference Include="TouchSocket" Version="4.2.3" />
|
||||
<PackageReference Include="vocaluxe.dependencies.netfwtypelib" Version="1.0.1" />
|
||||
|
||||
+24
-14
@@ -31,7 +31,9 @@ namespace SunlightAggregationManager.UserClass
|
||||
//TcpService service = new TcpService();
|
||||
service.Connecting = (client, e) => { return EasyTask.CompletedTask; };//有客户端正在连接
|
||||
service.Connected = (client, e) => {return EasyTask.CompletedTask;};//有客户端成功连接
|
||||
service.Closing = (client, e) => { return EasyTask.CompletedTask; };//有客户端正在断开连接,只有当主动断开时才有效。
|
||||
service.Closing = (client, e) => {
|
||||
Console.WriteLine("[Disconnecting]IP[" + client.IP + "]ID[" + client.Id + "]");
|
||||
return EasyTask.CompletedTask; };//有客户端正在断开连接,只有当主动断开时才有效。
|
||||
service.Closed = (client, e) => {
|
||||
//离线记录
|
||||
Dictionary<string, object> myDictOff = new Dictionary<string, object>();
|
||||
@@ -66,7 +68,7 @@ namespace SunlightAggregationManager.UserClass
|
||||
MainWindowViewModel.Updata_Memory(MainWindowViewModel._userData, "User='" + deserializedPerson?.User + "'", myDict);
|
||||
|
||||
Console.WriteLine("[Log on]User[" + deserializedPerson?.User + "]Note[" + (deserializedPerson?.Dat ?? "unknown") + "]");
|
||||
client.SendAsync(Command(deserializedPerson?.Dat?? "NOT"));
|
||||
Command(deserializedPerson?.Dat ?? "NOT", client.Id);
|
||||
}
|
||||
else
|
||||
{//首次登录记录
|
||||
@@ -140,18 +142,12 @@ namespace SunlightAggregationManager.UserClass
|
||||
}
|
||||
}
|
||||
|
||||
//string DAT = e.ByteBlock.Span.ToString(Encoding.UTF8).Substring(5);
|
||||
//string SYSDAT = "";// = e.ByteBlock.Span.ToString(Encoding.ASCII).Substring(5);
|
||||
// string SYSKEY = "";
|
||||
// if (DAT.Length >= 16) SYSKEY = DAT.Substring(0, 16);
|
||||
// if (DAT.Length > 16) SYSDAT = DAT.Substring(16);
|
||||
|
||||
|
||||
return EasyTask.CompletedTask;
|
||||
};
|
||||
|
||||
|
||||
await service.SetupAsync(new TouchSocketConfig()//载入配置
|
||||
// .SetMaxBufferSize(1024 * 1024 * 100)
|
||||
// .SetMaxBufferSize(1024 * 1024 * 100)
|
||||
//.SetMinBufferSize(1024 * 1024)
|
||||
.SetListenIPHosts(new IPHost[] { new IPHost(port1), new IPHost(port2) })//同时监听两个地址
|
||||
.ConfigureContainer(a =>//容器的配置顺序应该在最前面
|
||||
@@ -161,6 +157,7 @@ namespace SunlightAggregationManager.UserClass
|
||||
{
|
||||
})
|
||||
);
|
||||
|
||||
await service.StartAsync();//启动
|
||||
|
||||
Console.WriteLine("TCP Port:"+ port1.ToString());
|
||||
@@ -168,7 +165,7 @@ namespace SunlightAggregationManager.UserClass
|
||||
Console.WriteLine("TCP SERVER:START");
|
||||
}
|
||||
|
||||
public static string Command(string dat)//
|
||||
public static async void Command(string dat,string id)//
|
||||
{
|
||||
string Command="", ret ="";
|
||||
|
||||
@@ -179,14 +176,27 @@ namespace SunlightAggregationManager.UserClass
|
||||
if (Command == "Info")//回复info请求的信息
|
||||
{
|
||||
var t = ToList(MainWindowViewModel._machines).ToJsonString();
|
||||
|
||||
//格式化返回信息
|
||||
data_.Add("Info", t);
|
||||
|
||||
ret = JsonSerializer.Serialize(data_);
|
||||
}
|
||||
if (Command == "Query")//回复Query请求的信息
|
||||
{
|
||||
string s_ = deserialized.GetValue("StartTime").ToString()!;
|
||||
string e_ = deserialized.GetValue("EndTime").ToString()!;
|
||||
|
||||
DataTable resultTable = await MainWindowViewModel.dataBase.ExecuteQueryAsync("SELECT * FROM [dbo].[Dyelots] " +
|
||||
"WHERE CreationTime>'"+s_+"'and CreationTime<'"+e_+"'");
|
||||
//格式化返回信息
|
||||
data_.Add("Query", Newtonsoft.Json.JsonConvert.SerializeObject(resultTable));
|
||||
ret = JsonSerializer.Serialize(data_);
|
||||
}
|
||||
if (Command == "QueryDetail")//回复info请求的信息
|
||||
{
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
await service.SendAsync(id, ret);
|
||||
}
|
||||
|
||||
public static List<Dictionary<string, object?>>? ToList(DataTable table)//datatable转list
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using Microsoft.Data.SqlClient;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
@@ -70,6 +71,52 @@ namespace SunlightAggregationManager.UserClass
|
||||
});
|
||||
}
|
||||
|
||||
public async Task<DataTable> ExecuteQueryAsync(string sql)
|
||||
{
|
||||
// 创建一个空的 DataTable 用于存放查询结果
|
||||
DataTable dataTable = new DataTable();
|
||||
|
||||
// 沿用你原有的数据库连接字符串构建逻辑
|
||||
var builder = new SqlConnectionStringBuilder
|
||||
{
|
||||
DataSource = DB_IP,
|
||||
InitialCatalog = DB_NAME,
|
||||
IntegratedSecurity = DB_TYPE == "Windows Authentication",
|
||||
TrustServerCertificate = true,
|
||||
ConnectTimeout = 5
|
||||
};
|
||||
|
||||
if (!builder.IntegratedSecurity)
|
||||
{
|
||||
builder.UserID = DB_ID;
|
||||
builder.Password = DB_PASSWORD;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
using var conn = new SqlConnection(builder.ConnectionString);
|
||||
await conn.OpenAsync(); // 使用异步方式打开连接<websource>source_group_web_2</websource>
|
||||
|
||||
using (var cmd = new SqlCommand(sql, conn))
|
||||
{
|
||||
// 执行查询并将结果直接加载到 DataTable 中
|
||||
using (var reader = await cmd.ExecuteReaderAsync())
|
||||
{
|
||||
dataTable.Load(reader);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("DataBase Query failed\n" + ex.ToString());
|
||||
// 这里可以选择将异常抛出给调用方,或者返回一个空的 DataTable
|
||||
throw;
|
||||
}
|
||||
|
||||
return dataTable;
|
||||
}
|
||||
|
||||
public void Database(string dat)
|
||||
{
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace SunlightAggregationManager.ViewModel
|
||||
public static string TCP_E = "0";
|
||||
public static string HTTP_E = "0";
|
||||
public static string TLS_E = "0";
|
||||
public static DataBase dataBase = new DataBase();
|
||||
public static UserClass.SqliteHelper SQLiteHelpers = null!; //定义数据库
|
||||
private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SunlightAggregationManager.db"; //数据库路径
|
||||
|
||||
@@ -78,8 +79,7 @@ namespace SunlightAggregationManager.ViewModel
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
|
||||
//运行数据库
|
||||
DataBase dataBase = new DataBase();
|
||||
//运行数据库
|
||||
dataBase.Config(SQLIP, SQLNAME, SQMOD, SQLUSER, SQLPASWORD);
|
||||
|
||||
if (TCP_E == "1")//启动tcp(内网直连)
|
||||
|
||||
Reference in new issue
Block a user