update v0.0.2 twa sys

This commit is contained in:
2025-11-18 11:48:01 +07:00
parent b4b191f829
commit a586da6edc
40 changed files with 1347 additions and 937 deletions

View File

@ -1,7 +1,11 @@

using AppLibs.Libs;
using Dapper;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Razor.Language.Intermediate;
using Microsoft.VisualBasic;
using MySqlConnector;
using Newtonsoft.Json;
using System.Data.Common;
using System.Xml.Linq;
using TWASys_App.Dapper.AExtentions;
@ -11,6 +15,7 @@ namespace TWASys_App.Models
{
public class StorageModel : ModelBase
{
public long IdStorageServer { set; get; }
public long StorageTypeID { set; get; }
public string ControllerName { set; get; } = "";
@ -19,6 +24,7 @@ namespace TWASys_App.Models
public ICollection<ValidationDomain> ValidationDomains { set; get; } = new List<ValidationDomain>();
public int Size { set; get; };
public string IpPublic { set; get; } = "";
public string IpPrivatev4 { set; get; } = "";
@ -54,6 +60,45 @@ namespace TWASys_App.Models
public string RTokenValue { set; get; } = "";
public async Task<IActionResult> GetStorages(int status = 0)
{
await using (var con = new MySqlConnection(DBManagement.GetConnectionString()))
{
string sql = @"
WITH d AS (
SELECT *
FROM StorageServer
WHERE status = @status
ORDER BY idStorageServer
LIMIT @PageSize OFFSET @Offset)
SELECT d.*,t.typeName FROM d
JOIN TypeStorageServer t ON t.idTypeStorageServer = d.idTypeStorageServer;
";
await con.OpenAsync();
if (IsFirstQuery)
{
await using (var multi = await con
.QueryMultipleAsync("SELECT COUNT(*) FROM StorageServer;" + sql, new { Offset = (PageNumber - 1) * PageSize, PageSize = this.PageSize, status = status }))
{
int maxRow = await multi.ReadSingleAsync<int>();
var types = await multi.ReadAsync();
return new JsonResult(new
{
mrows = maxRow,
data = JsonConvert.SerializeObject(types)
});
}
}
else
{
var t = (await con.QueryAsync(sql, new { Offset = (PageNumber - 1) * PageSize, PageSize = this.PageSize, status = status }));
return new JsonResult(new
{
data = JsonConvert.SerializeObject(t)
});
}
}
}
public override async Task<MessageHeader> AddAsync()
{
await using var con = new MySqlConnector.MySqlConnection(DBManagement.GetConnectionString(true));
@ -114,6 +159,12 @@ namespace TWASys_App.Models
ExpireDate = DateTime.UtcNow.AddMonths(3),
Status = 0
};
var ssAT = new ServerAuthorization_has_Token
{
IdToken = TokenID,
Count = 1,
Status = 0
};
var rT = new RefreshToken
{
IdRefreshToken = RTokenID,
@ -129,6 +180,7 @@ namespace TWASys_App.Models
bi.AddRow(ss_lc);
bi.AddRow(serverAuthorization);
bi.AddRow(token);
bi.AddRow(ssAT);
bi.AddRow(rT);
await bi.ExcuteQuery();
await trans.CommitAsync();
@ -155,5 +207,73 @@ namespace TWASys_App.Models
{
throw new NotImplementedException();
}
public async Task<MessageHeader> UpdateStorageSize()
{
var fMess = new MessageHeader();
string sql = @"UPDATE StorageServer
SET Size = @size
Where idStorageServer = @idStorage;
WITH sa_need AS (
SELECT idServerAuthorization
FROM ServerAuthorization
WHERE idStorageServer = @idStorage
),
maxc AS (
SELECT idServerAuthorization, MAX(`count`) AS max_count
FROM ServerAuthorization_has_Token
WHERE idServerAuthorization IN (SELECT idServerAuthorization FROM sa_need)
GROUP BY idServerAuthorization
)
SELECT
sa.idServerAuthorization,
st.idToken,
t.accessToken
FROM sa_need sa
JOIN maxc m ON m.idServerAuthorization = sa.idServerAuthorization
JOIN ServerAuthorization_has_Token st
ON st.idServerAuthorization = sa.idServerAuthorization AND st.`count` = m.max_count
LEFT JOIN Token t ON t.idToken = st.idToken;
WITH sa_need AS (
SELECT idServerAuthorization
FROM ServerAuthorization
WHERE idStorageServer = @idStorage)
SELECT r.*
FROM sa_need s
JOIN RefreshToken r
ON r.idServerAuthorization = s.idServerAuthorization
WHERE r.idRefreshToken = (
SELECT r2.idRefreshToken
FROM RefreshToken r2
WHERE r2.idServerAuthorization = s.idServerAuthorization and r2.status = 0
ORDER BY r2.expireDate DESC
LIMIT 1);";
try
{
await using var con = new MySqlConnection(DBManagement.GetConnectionString(true));
await con.OpenAsync();
using var trans = await con.BeginTransactionAsync();
using var multi = await con.QueryMultipleAsync(sql, new { size = Size, id = IdStorageServer }, trans);
IList<dynamic> tokens = (await multi.ReadAsync()).AsList();
IList<dynamic> rTokens = (await multi.ReadAsync()).AsList();
using (var writer = new StreamWriter(Path.GetFullPath("Json/dataServer.json"), false))
{
await writer.WriteAsync(JsonConvert.SerializeObject(new
{
idRToken = "",
rToken = "",
cDate = "",
eDate = "",
token = "",
idToken = ""
}));
}
}
catch (DbException ex)
{
}
return fMess;
}
}
}