update 添加登录
This commit is contained in:
parent
d3fc2368c8
commit
ba41c6dad4
125
Common/Api/Base/LoginResponse.cs
Normal file
125
Common/Api/Base/LoginResponse.cs
Normal file
@ -0,0 +1,125 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace VideoConcat.Common.Api.Base
|
||||
{
|
||||
public partial class UserLoginResponse
|
||||
{
|
||||
[JsonProperty("user")]
|
||||
public User User { get; set; }
|
||||
|
||||
[JsonProperty("token")]
|
||||
public string Token { get; set; }
|
||||
|
||||
[JsonProperty("expiresAt")]
|
||||
public long ExpiresAt { get; set; }
|
||||
}
|
||||
|
||||
public partial class User
|
||||
{
|
||||
[JsonProperty("ID")]
|
||||
public long Id { get; set; }
|
||||
|
||||
[JsonProperty("CreatedAt")]
|
||||
public DateTimeOffset CreatedAt { get; set; }
|
||||
|
||||
[JsonProperty("UpdatedAt")]
|
||||
public DateTimeOffset UpdatedAt { get; set; }
|
||||
|
||||
[JsonProperty("uuid")]
|
||||
public Guid Uuid { get; set; }
|
||||
|
||||
[JsonProperty("userName")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[JsonProperty("nickName")]
|
||||
public string NickName { get; set; }
|
||||
|
||||
[JsonProperty("headerImg")]
|
||||
public Uri HeaderImg { get; set; }
|
||||
|
||||
[JsonProperty("authorityId")]
|
||||
public long AuthorityId { get; set; }
|
||||
|
||||
[JsonProperty("authority")]
|
||||
public Authority Authority { get; set; }
|
||||
|
||||
[JsonProperty("authorities")]
|
||||
public List<Authority> Authorities { get; set; }
|
||||
|
||||
[JsonProperty("phone")]
|
||||
public string Phone { get; set; }
|
||||
|
||||
[JsonProperty("email")]
|
||||
public string Email { get; set; }
|
||||
|
||||
[JsonProperty("enable")]
|
||||
public long Enable { get; set; }
|
||||
|
||||
[JsonProperty("originSetting")]
|
||||
public object OriginSetting { get; set; }
|
||||
}
|
||||
|
||||
public partial class Authority
|
||||
{
|
||||
[JsonProperty("CreatedAt")]
|
||||
public DateTimeOffset CreatedAt { get; set; }
|
||||
|
||||
[JsonProperty("UpdatedAt")]
|
||||
public DateTimeOffset UpdatedAt { get; set; }
|
||||
|
||||
[JsonProperty("DeletedAt")]
|
||||
public object DeletedAt { get; set; }
|
||||
|
||||
[JsonProperty("authorityId")]
|
||||
public long AuthorityId { get; set; }
|
||||
|
||||
[JsonProperty("authorityName")]
|
||||
public string AuthorityName { get; set; }
|
||||
|
||||
[JsonProperty("parentId")]
|
||||
public long ParentId { get; set; }
|
||||
|
||||
[JsonProperty("dataAuthorityId")]
|
||||
public object DataAuthorityId { get; set; }
|
||||
|
||||
[JsonProperty("children")]
|
||||
public object Children { get; set; }
|
||||
|
||||
[JsonProperty("menus")]
|
||||
public object Menus { get; set; }
|
||||
|
||||
[JsonProperty("defaultRouter")]
|
||||
public string DefaultRouter { get; set; }
|
||||
}
|
||||
|
||||
public partial class UserLoginResponse
|
||||
{
|
||||
public static UserLoginResponse FromJson(string json)
|
||||
{
|
||||
return JsonConvert.DeserializeObject<UserLoginResponse>(json, Converter.Settings);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this UserLoginResponse self) => JsonConvert.SerializeObject(self, Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
15
Common/Api/Base/SystemApi.cs
Normal file
15
Common/Api/Base/SystemApi.cs
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
using VideoConcat.Common.Tools;
|
||||
|
||||
namespace VideoConcat.Common.Api.Base
|
||||
{
|
||||
public class SystemApi
|
||||
{
|
||||
public static async Task<UserLoginResponse> LoginAsync<UserLoginResponse>(string username, string password)
|
||||
{
|
||||
HttpService Http = new();
|
||||
ApiResponse<UserLoginResponse> res = await Http.PostAsync<UserLoginResponse>("/api/base/login", new { Username = username, Password = password, Platform = "pc" });
|
||||
return res.Data;
|
||||
}
|
||||
}
|
||||
}
|
||||
99
Common/Tools/HttpUtils.cs
Normal file
99
Common/Tools/HttpUtils.cs
Normal file
@ -0,0 +1,99 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace VideoConcat.Common.Tools
|
||||
{
|
||||
public class HttpService
|
||||
{
|
||||
private readonly HttpClient _httpClient;
|
||||
|
||||
public HttpService()
|
||||
{
|
||||
_httpClient = new HttpClient
|
||||
{
|
||||
//BaseAddress = new Uri("https://admin.xiangbing.vip"),
|
||||
BaseAddress = new Uri("http://127.0.0.1:8080"),
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<ApiResponse<T>> PostAsync<T>(string url, object data)
|
||||
{
|
||||
try
|
||||
{
|
||||
var json = JsonSerializer.Serialize(data);
|
||||
var content = new StringContent(json, Encoding.UTF8, "application/json");
|
||||
|
||||
var response = await _httpClient.PostAsync(url, content);
|
||||
var apiResponse = await ApiResponse<T>.CreateAsync(response);
|
||||
|
||||
if (!apiResponse.IsSuccess)
|
||||
{
|
||||
LogUtils.Error($"PostAsync<{typeof(T)}> failed: {apiResponse.Code} {apiResponse.Msg}");
|
||||
}
|
||||
|
||||
return apiResponse;
|
||||
}
|
||||
catch (TaskCanceledException)
|
||||
{
|
||||
return new ApiResponse<T>
|
||||
{
|
||||
IsSuccess = false,
|
||||
Msg = "请求超时",
|
||||
Code = 408
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ApiResponse<T>
|
||||
{
|
||||
IsSuccess = false,
|
||||
Msg = ex.Message,
|
||||
Code = 500
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ApiResponse<T>
|
||||
{
|
||||
public bool IsSuccess { get; set; }
|
||||
public int Code { get; set; }
|
||||
public T Data { get; set; }
|
||||
public string Msg { get; set; }
|
||||
public string RawContent { get; set; }
|
||||
|
||||
public static async Task<ApiResponse<T>> CreateAsync(HttpResponseMessage response)
|
||||
{
|
||||
var result = new ApiResponse<T>
|
||||
{
|
||||
IsSuccess = response.IsSuccessStatusCode,
|
||||
Code = (int)response.StatusCode,
|
||||
RawContent = await response.Content.ReadAsStringAsync()
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
result.Data = JsonSerializer.Deserialize<T>(result.RawContent);
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Msg = result.RawContent; // 或解析错误结构
|
||||
}
|
||||
}
|
||||
catch (JsonException ex)
|
||||
{
|
||||
result.IsSuccess = false;
|
||||
result.Msg = $"JSON解析失败: {ex.Message}";
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -16,6 +16,7 @@
|
||||
<PackageReference Include="log4net" Version="3.0.2" />
|
||||
<PackageReference Include="MaterialDesignXaml.DialogsHelper" Version="1.0.4" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="System.IO.Pipelines" Version="9.0.0" />
|
||||
<PackageReference Include="System.Text.Encodings.Web" Version="9.0.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
using System.Windows;
|
||||
using VideoConcat.Common.Api.Base;
|
||||
using VideoConcat.Common.Tools;
|
||||
|
||||
namespace VideoConcat.Views
|
||||
{
|
||||
@ -17,20 +19,22 @@ namespace VideoConcat.Views
|
||||
Close();
|
||||
}
|
||||
|
||||
private void BtnLogin_Click(object sender, RoutedEventArgs e)
|
||||
private async void BtnLogin_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (Username.Text == "admin" && Password.Password == "mA%4ZRKve_kA")
|
||||
|
||||
string _userName = Username.Text;
|
||||
string _password = Password.Password;
|
||||
|
||||
if (string.IsNullOrEmpty(_userName) || string.IsNullOrEmpty(_password))
|
||||
{
|
||||
new Video().Show();
|
||||
Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
System.Windows.MessageBox.Show("用户名或者密码错误!");
|
||||
Username.Clear();
|
||||
Password.Clear();
|
||||
WPFDevelopers.Controls.MessageBox.Show("请输入用户名或者密码!");
|
||||
return;
|
||||
}
|
||||
|
||||
UserLoginResponse res =await SystemApi.LoginAsync<UserLoginResponse>(_userName, _password);
|
||||
Console.WriteLine(res);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user