feat: 初始化项目结构并添加基础功能

- 创建解决方案及各项目层
- 添加API基础控制器和DTO定义
- 实现JWT认证服务和微信登录服务
- 添加Swagger文档支持
- 配置项目依赖和构建文件
This commit is contained in:
fanfpy 2026-02-18 20:36:09 +08:00
commit cd5c3aedbe
198 changed files with 24584 additions and 0 deletions

View File

@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/modules.xml
/.idea.AssetManager.iml
/projectSettingsUpdater.xml
/contentModel.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings" defaultProject="true" />
</project>

View File

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.0" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.10" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AssetManager.Services\AssetManager.Services.csproj" />
<ProjectReference Include="..\AssetManager.Models\AssetManager.Models.csproj" />
<ProjectReference Include="..\AssetManager.Infrastructure\AssetManager.Infrastructure.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,6 @@
@AssetManager.API_HostAddress = http://localhost:5049
GET {{AssetManager.API_HostAddress}}/weatherforecast/
Accept: application/json
###

View File

@ -0,0 +1,58 @@
using AssetManager.API.DTOs;
using AssetManager.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace AssetManager.API.Controllers;
[ApiController]
[Route("api/app")]
[Authorize]
public class AppController : ControllerBase
{
private readonly ILogger<AppController> _logger;
public AppController(ILogger<AppController> logger)
{
_logger = logger;
}
[HttpGet("info")]
public ActionResult<ApiResponse<AppInfoResponse>> GetAppInfo()
{
try
{
_logger.LogInformation("Request to get app info");
// 模拟返回应用信息
var response = new AppInfoResponse
{
Version = "1.0.0",
CurrentDate = DateTime.Now.ToString("yyyy-MM-dd"),
LatestVersion = "1.0.1",
UpdateAvailable = true
};
_logger.LogInformation("App info retrieved successfully");
return Ok(new ApiResponse<AppInfoResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Success"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error retrieving app info");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<AppInfoResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
}

View File

@ -0,0 +1,133 @@
using AssetManager.API.DTOs;
using AssetManager.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace AssetManager.API.Controllers;
[ApiController]
[Route("api/[controller]")]
[Authorize]
public class AssetController : ControllerBase
{
private readonly ILogger<AssetController> _logger;
public AssetController(ILogger<AssetController> logger)
{
_logger = logger;
}
[HttpGet]
public ActionResult<ApiResponse<TotalAssetResponse>> GetTotalAssets()
{
try
{
_logger.LogInformation("Request to get total assets");
// 模拟返回总资产数据
var response = new TotalAssetResponse
{
TotalValue = 125000.50,
TodayProfit = 250.75,
TotalReturnRate = 12.5
};
_logger.LogInformation("Total assets retrieved successfully");
return Ok(new ApiResponse<TotalAssetResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Success"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error retrieving total assets");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<TotalAssetResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpGet("holdings")]
public ActionResult<ApiResponse<List<HoldingItem>>> GetHoldings()
{
try
{
_logger.LogInformation("Request to get holdings");
// 模拟返回持仓组合数据
var holdings = new List<HoldingItem>
{
new HoldingItem
{
Id = "1",
Name = "沪深300指数增强",
Tags = "指数增强",
Status = "监控中",
StatusType = "green",
IconChar = "沪",
IconBgClass = "bg-blue-500",
IconTextClass = "text-white",
Value = 50000.00,
ReturnRate = 8.5,
ReturnType = "positive"
},
new HoldingItem
{
Id = "2",
Name = "中证500量化",
Tags = "量化策略",
Status = "等待信号",
StatusType = "gray",
IconChar = "中",
IconBgClass = "bg-green-500",
IconTextClass = "text-white",
Value = 35000.00,
ReturnRate = -2.1,
ReturnType = "negative"
},
new HoldingItem
{
Id = "3",
Name = "债券型基金",
Tags = "固定收益",
Status = "监控中",
StatusType = "green",
IconChar = "债",
IconBgClass = "bg-yellow-500",
IconTextClass = "text-white",
Value = 40000.00,
ReturnRate = 3.2,
ReturnType = "positive"
}
};
_logger.LogInformation("Holdings retrieved successfully");
return Ok(new ApiResponse<List<HoldingItem>>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = holdings,
Message = "Success"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error retrieving holdings");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<List<HoldingItem>>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
}

View File

@ -0,0 +1,174 @@
using AssetManager.API.DTOs;
using AssetManager.Models;
using AssetManager.Services.Services;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
namespace AssetManager.API.Controllers;
[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase
{
private readonly ILogger<AuthController> _logger;
private readonly WechatService _wechatService;
private readonly JwtService _jwtService;
public AuthController(ILogger<AuthController> logger, WechatService wechatService, JwtService jwtService)
{
_logger = logger;
_wechatService = wechatService;
_jwtService = jwtService;
}
[HttpPost("login")]
public ActionResult<ApiResponse<LoginResponse>> Login([FromBody] LoginRequest request)
{
try
{
_logger.LogInformation($"Login attempt for user: {request.Email}");
// 模拟登录验证
if (request.Email == "test@example.com" && request.Password == "password123")
{
// 生成真实的JWT令牌
var token = _jwtService.GenerateToken("1", "Test User", request.Email);
var response = new LoginResponse
{
Token = token,
ExpireAt = DateTime.Now.AddHours(24).ToString("yyyy-MM-dd HH:mm:ss"),
User = new UserBasicInfo
{
UserName = "Test User",
Email = request.Email
}
};
_logger.LogInformation($"Login successful for user: {request.Email}");
return Ok(new ApiResponse<LoginResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Login successful"
});
}
_logger.LogWarning($"Login failed for user: {request.Email}");
return Unauthorized(new ApiResponse<LoginResponse>
{
Code = AssetManager.Models.StatusCodes.Unauthorized,
Data = null,
Message = "Invalid email or password"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error during login");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<LoginResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpPost("wechat-login")]
public async Task<ActionResult<ApiResponse<WechatLoginResponse>>> WechatLogin([FromBody] WechatLoginRequest request)
{
try
{
_logger.LogInformation("Wechat login attempt");
// 用code换取openid
var authResult = await _wechatService.GetOpenIdAsync(request.Code);
if (authResult.Errcode != 0)
{
_logger.LogWarning($"Wechat login failed: {authResult.Errmsg}");
return Unauthorized(new ApiResponse<WechatLoginResponse>
{
Code = AssetManager.Models.StatusCodes.Unauthorized,
Data = null,
Message = authResult.Errmsg
});
}
// 生成真实的JWT令牌
var token = _jwtService.GenerateToken(authResult.OpenId, request.NickName ?? "Wechat User", $"{authResult.OpenId}@wechat.com");
var response = new WechatLoginResponse
{
Token = token,
ExpireAt = DateTime.Now.AddHours(24).ToString("yyyy-MM-dd HH:mm:ss"),
User = new UserBasicInfo
{
UserName = request.NickName ?? "Wechat User",
Email = $"{authResult.OpenId}@wechat.com"
},
OpenId = authResult.OpenId
};
_logger.LogInformation($"Wechat login successful for user: {authResult.OpenId}");
return Ok(new ApiResponse<WechatLoginResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Wechat login successful"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error during wechat login");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<WechatLoginResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpPost("register")]
public ActionResult<ApiResponse<RegisterResponse>> Register([FromBody] RegisterRequest request)
{
try
{
_logger.LogInformation($"Registration attempt for user: {request.Email}");
// 模拟注册
var response = new RegisterResponse
{
Id = Guid.NewGuid().ToString(),
Status = "success"
};
_logger.LogInformation($"Registration successful for user: {request.Email}");
return Ok(new ApiResponse<RegisterResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Registration successful"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error during registration");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<RegisterResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
}

View File

@ -0,0 +1,249 @@
using AssetManager.API.DTOs;
using AssetManager.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace AssetManager.API.Controllers;
[ApiController]
[Route("api/[controller]s")]
[Authorize]
public class StrategyController : ControllerBase
{
private readonly ILogger<StrategyController> _logger;
public StrategyController(ILogger<StrategyController> logger)
{
_logger = logger;
}
[HttpGet]
public ActionResult<ApiResponse<List<StrategyItem>>> GetStrategies()
{
try
{
_logger.LogInformation("Request to get strategies");
// 模拟返回策略列表
var strategies = new List<StrategyItem>
{
new StrategyItem
{
Id = "1",
IconChar = "A",
Title = "均值回归策略",
Tag = "量化",
Desc = "基于价格均值回归原理的交易策略",
BgClass = "bg-blue-100",
TagClass = "bg-blue-500",
Tags = new[] { "量化", "均值回归", "中风险" },
BtnText = "应用",
BtnClass = "bg-blue-500"
},
new StrategyItem
{
Id = "2",
IconChar = "B",
Title = "趋势跟踪策略",
Tag = "趋势",
Desc = "跟随市场趋势的交易策略",
BgClass = "bg-green-100",
TagClass = "bg-green-500",
Tags = new[] { "趋势", "中风险", "长线" },
BtnText = "应用",
BtnClass = "bg-green-500"
},
new StrategyItem
{
Id = "3",
IconChar = "C",
Title = "动量策略",
Tag = "动量",
Desc = "基于价格动量效应的交易策略",
BgClass = "bg-yellow-100",
TagClass = "bg-yellow-500",
Tags = new[] { "动量", "中高风险", "短线" },
BtnText = "应用",
BtnClass = "bg-yellow-500"
}
};
_logger.LogInformation("Strategies retrieved successfully");
return Ok(new ApiResponse<List<StrategyItem>>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = strategies,
Message = "Success"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error retrieving strategies");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<List<StrategyItem>>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpGet("{id}")]
public ActionResult<ApiResponse<StrategyDetail>> GetStrategyById(string id)
{
try
{
_logger.LogInformation($"Request to get strategy by id: {id}");
// 模拟返回策略详情
var strategy = new StrategyDetail
{
Id = id,
IconChar = "A",
Title = "均值回归策略",
Tag = "量化",
Desc = "基于价格均值回归原理的交易策略",
BgClass = "bg-blue-100",
TagClass = "bg-blue-500",
Tags = new[] { "量化", "均值回归", "中风险" },
BtnText = "应用",
BtnClass = "bg-blue-500",
Parameters = new { period = 20, threshold = 2.0 },
Backtest = new { annualReturn = 12.5, maxDrawdown = 15.2, sharpeRatio = 1.8 }
};
_logger.LogInformation($"Strategy {id} retrieved successfully");
return Ok(new ApiResponse<StrategyDetail>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = strategy,
Message = "Success"
});
}
catch (Exception ex)
{
_logger.LogError(ex, $"Error retrieving strategy {id}");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<StrategyDetail>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpPost]
public ActionResult<ApiResponse<StrategyResponse>> CreateStrategy([FromBody] CreateStrategyRequest request)
{
try
{
_logger.LogInformation($"Request to create strategy: {request.Title}");
// 模拟创建策略
var response = new StrategyResponse
{
Id = Guid.NewGuid().ToString(),
Title = request.Title,
Status = "created"
};
_logger.LogInformation($"Strategy {response.Id} created successfully");
return Ok(new ApiResponse<StrategyResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Strategy created successfully"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error creating strategy");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<StrategyResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpPut("{id}")]
public ActionResult<ApiResponse<StrategyResponse>> UpdateStrategy(string id, [FromBody] UpdateStrategyRequest request)
{
try
{
_logger.LogInformation($"Request to update strategy: {id}");
// 模拟更新策略
var response = new StrategyResponse
{
Id = id,
Title = request.Title,
Status = "updated"
};
_logger.LogInformation($"Strategy {id} updated successfully");
return Ok(new ApiResponse<StrategyResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Strategy updated successfully"
});
}
catch (Exception ex)
{
_logger.LogError(ex, $"Error updating strategy {id}");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<StrategyResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpDelete("{id}")]
public ActionResult<ApiResponse<DeleteStrategyResponse>> DeleteStrategy(string id)
{
try
{
_logger.LogInformation($"Request to delete strategy: {id}");
// 模拟删除策略
var response = new DeleteStrategyResponse
{
Id = id,
Status = "deleted"
};
_logger.LogInformation($"Strategy {id} deleted successfully");
return Ok(new ApiResponse<DeleteStrategyResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Strategy deleted successfully"
});
}
catch (Exception ex)
{
_logger.LogError(ex, $"Error deleting strategy {id}");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<DeleteStrategyResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
}

View File

@ -0,0 +1,133 @@
using AssetManager.API.DTOs;
using AssetManager.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace AssetManager.API.Controllers;
[ApiController]
[Route("api/user")]
[Authorize]
public class UserController : ControllerBase
{
private readonly ILogger<UserController> _logger;
public UserController(ILogger<UserController> logger)
{
_logger = logger;
}
[HttpGet("info")]
public ActionResult<ApiResponse<UserInfoResponse>> GetUserInfo()
{
try
{
_logger.LogInformation("Request to get user info");
// 模拟返回用户信息
var response = new UserInfoResponse
{
UserName = "Test User",
MemberLevel = "高级会员",
RunningDays = 180,
Avatar = "https://example.com/avatar.jpg",
Email = "test@example.com"
};
_logger.LogInformation("User info retrieved successfully");
return Ok(new ApiResponse<UserInfoResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Success"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error retrieving user info");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<UserInfoResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpGet("stats")]
public ActionResult<ApiResponse<UserStatsResponse>> GetUserStats()
{
try
{
_logger.LogInformation("Request to get user stats");
// 模拟返回用户统计数据
var response = new UserStatsResponse
{
SignalsCaptured = 125,
WinRate = 68.5,
TotalTrades = 320,
AverageProfit = 5.2
};
_logger.LogInformation("User stats retrieved successfully");
return Ok(new ApiResponse<UserStatsResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "Success"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error retrieving user stats");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<UserStatsResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
[HttpPut("info")]
public ActionResult<ApiResponse<UpdateUserResponse>> UpdateUserInfo([FromBody] UpdateUserRequest request)
{
try
{
_logger.LogInformation($"Request to update user info: {request.UserName}");
// 模拟更新用户信息
var response = new UpdateUserResponse
{
Status = "updated",
UserName = request.UserName
};
_logger.LogInformation("User info updated successfully");
return Ok(new ApiResponse<UpdateUserResponse>
{
Code = AssetManager.Models.StatusCodes.Success,
Data = response,
Message = "User info updated successfully"
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Error updating user info");
return StatusCode(AssetManager.Models.StatusCodes.InternalServerError, new ApiResponse<UpdateUserResponse>
{
Code = AssetManager.Models.StatusCodes.InternalServerError,
Data = null,
Message = ex.Message
});
}
}
}

View File

@ -0,0 +1,23 @@
namespace AssetManager.API.DTOs;
public class TotalAssetResponse
{
public double TotalValue { get; set; }
public double TodayProfit { get; set; }
public double TotalReturnRate { get; set; }
}
public class HoldingItem
{
public string Id { get; set; }
public string Name { get; set; }
public string Tags { get; set; }
public string Status { get; set; }
public string StatusType { get; set; }
public string IconChar { get; set; }
public string IconBgClass { get; set; }
public string IconTextClass { get; set; }
public double Value { get; set; }
public double ReturnRate { get; set; }
public string ReturnType { get; set; }
}

View File

@ -0,0 +1,33 @@
namespace AssetManager.API.DTOs;
public class LoginRequest
{
public string Email { get; set; }
public string Password { get; set; }
}
public class RegisterRequest
{
public string Email { get; set; }
public string Password { get; set; }
public string UserName { get; set; }
}
public class LoginResponse
{
public string Token { get; set; }
public string ExpireAt { get; set; }
public UserBasicInfo User { get; set; }
}
public class UserBasicInfo
{
public string UserName { get; set; }
public string Email { get; set; }
}
public class RegisterResponse
{
public string Id { get; set; }
public string Status { get; set; }
}

View File

@ -0,0 +1,55 @@
namespace AssetManager.API.DTOs;
public class StrategyItem
{
public string Id { get; set; }
public string IconChar { get; set; }
public string Title { get; set; }
public string Tag { get; set; }
public string Desc { get; set; }
public string BgClass { get; set; }
public string TagClass { get; set; }
public string[] Tags { get; set; }
public string BtnText { get; set; }
public string BtnClass { get; set; }
}
public class StrategyDetail : StrategyItem
{
public object Parameters { get; set; }
public object Backtest { get; set; }
}
public class CreateStrategyRequest
{
public string Title { get; set; }
public string Tag { get; set; }
public string Desc { get; set; }
public string[] Tags { get; set; }
public object Parameters { get; set; }
public string IconChar { get; set; }
public string BgClass { get; set; }
public string TagClass { get; set; }
}
public class UpdateStrategyRequest
{
public string Title { get; set; }
public string Tag { get; set; }
public string Desc { get; set; }
public string[] Tags { get; set; }
public object Parameters { get; set; }
}
public class StrategyResponse
{
public string Id { get; set; }
public string Title { get; set; }
public string Status { get; set; }
}
public class DeleteStrategyResponse
{
public string Id { get; set; }
public string Status { get; set; }
}

View File

@ -0,0 +1,39 @@
namespace AssetManager.API.DTOs;
public class UserInfoResponse
{
public string UserName { get; set; }
public string MemberLevel { get; set; }
public int RunningDays { get; set; }
public string Avatar { get; set; }
public string Email { get; set; }
}
public class UserStatsResponse
{
public int SignalsCaptured { get; set; }
public double WinRate { get; set; }
public int TotalTrades { get; set; }
public double AverageProfit { get; set; }
}
public class UpdateUserRequest
{
public string UserName { get; set; }
public string Avatar { get; set; }
public string Email { get; set; }
}
public class UpdateUserResponse
{
public string Status { get; set; }
public string UserName { get; set; }
}
public class AppInfoResponse
{
public string Version { get; set; }
public string CurrentDate { get; set; }
public string LatestVersion { get; set; }
public bool UpdateAvailable { get; set; }
}

View File

@ -0,0 +1,17 @@
namespace AssetManager.API.DTOs;
public class WechatLoginRequest
{
public string Code { get; set; }
public string NickName { get; set; }
public string AvatarUrl { get; set; }
public string Gender { get; set; }
}
public class WechatLoginResponse
{
public string Token { get; set; }
public string ExpireAt { get; set; }
public UserBasicInfo User { get; set; }
public string OpenId { get; set; }
}

View File

@ -0,0 +1,91 @@
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{
options.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme
{
Name = "Authorization",
Type = Microsoft.OpenApi.Models.SecuritySchemeType.Http,
Scheme = "bearer",
BearerFormat = "JWT",
In = Microsoft.OpenApi.Models.ParameterLocation.Header,
Description = "Enter 'Bearer' [space] and then your token in the text input below."
});
options.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement
{
{
new Microsoft.OpenApi.Models.OpenApiSecurityScheme
{
Reference = new Microsoft.OpenApi.Models.OpenApiReference
{
Type = Microsoft.OpenApi.Models.ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
new string[] {}
}
});
});
// Configure CORS
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
// Configure JWT authentication
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "AssetManager",
ValidAudience = "AssetManager",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-strong-secret-key-here-2026"))
};
});
// Configure services
builder.Services.AddHttpClient();
builder.Services.AddScoped<AssetManager.Services.Services.WechatService>();
builder.Services.AddScoped<AssetManager.Services.Services.JwtService>();
// Configure logging
builder.Logging.ClearProviders();
builder.Logging.AddConsole();
builder.Logging.AddDebug();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseCors("AllowAll");
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();

View File

@ -0,0 +1,41 @@
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:31733",
"sslPort": 44342
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5049",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7039;http://localhost:5049",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

View File

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

Binary file not shown.

View File

@ -0,0 +1,366 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"AssetManager.API/1.0.0": {
"dependencies": {
"AssetManager.Infrastructure": "1.0.0",
"AssetManager.Models": "1.0.0",
"AssetManager.Services": "1.0.0",
"Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.0",
"Microsoft.AspNetCore.OpenApi": "8.0.10",
"Swashbuckle.AspNetCore": "6.6.2"
},
"runtime": {
"AssetManager.API.dll": {}
}
},
"Microsoft.AspNetCore.Authentication.JwtBearer/8.0.0": {
"dependencies": {
"Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.0.3"
},
"runtime": {
"lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.23.53112"
}
}
},
"Microsoft.AspNetCore.OpenApi/8.0.10": {
"dependencies": {
"Microsoft.OpenApi": "1.6.14"
},
"runtime": {
"lib/net8.0/Microsoft.AspNetCore.OpenApi.dll": {
"assemblyVersion": "8.0.10.0",
"fileVersion": "8.0.1024.46804"
}
}
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
}
},
"Microsoft.Extensions.Primitives/8.0.0": {},
"Microsoft.IdentityModel.Abstractions/7.0.3": {
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": {
"assemblyVersion": "7.0.3.0",
"fileVersion": "7.0.3.41017"
}
}
},
"Microsoft.IdentityModel.JsonWebTokens/7.0.3": {
"dependencies": {
"Microsoft.IdentityModel.Tokens": "7.0.3"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
"assemblyVersion": "7.0.3.0",
"fileVersion": "7.0.3.41017"
}
}
},
"Microsoft.IdentityModel.Logging/7.0.3": {
"dependencies": {
"Microsoft.IdentityModel.Abstractions": "7.0.3"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Logging.dll": {
"assemblyVersion": "7.0.3.0",
"fileVersion": "7.0.3.41017"
}
}
},
"Microsoft.IdentityModel.Protocols/7.0.3": {
"dependencies": {
"Microsoft.IdentityModel.Logging": "7.0.3",
"Microsoft.IdentityModel.Tokens": "7.0.3"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Protocols.dll": {
"assemblyVersion": "7.0.3.0",
"fileVersion": "7.0.3.41017"
}
}
},
"Microsoft.IdentityModel.Protocols.OpenIdConnect/7.0.3": {
"dependencies": {
"Microsoft.IdentityModel.Protocols": "7.0.3",
"System.IdentityModel.Tokens.Jwt": "7.0.3"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": {
"assemblyVersion": "7.0.3.0",
"fileVersion": "7.0.3.41017"
}
}
},
"Microsoft.IdentityModel.Tokens/7.0.3": {
"dependencies": {
"Microsoft.IdentityModel.Logging": "7.0.3"
},
"runtime": {
"lib/net8.0/Microsoft.IdentityModel.Tokens.dll": {
"assemblyVersion": "7.0.3.0",
"fileVersion": "7.0.3.41017"
}
}
},
"Microsoft.OpenApi/1.6.14": {
"runtime": {
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
"assemblyVersion": "1.6.14.0",
"fileVersion": "1.6.14.0"
}
}
},
"Swashbuckle.AspNetCore/6.6.2": {
"dependencies": {
"Microsoft.Extensions.ApiDescription.Server": "6.0.5",
"Swashbuckle.AspNetCore.Swagger": "6.6.2",
"Swashbuckle.AspNetCore.SwaggerGen": "6.6.2",
"Swashbuckle.AspNetCore.SwaggerUI": "6.6.2"
}
},
"Swashbuckle.AspNetCore.Swagger/6.6.2": {
"dependencies": {
"Microsoft.OpenApi": "1.6.14"
},
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": {
"assemblyVersion": "6.6.2.0",
"fileVersion": "6.6.2.401"
}
}
},
"Swashbuckle.AspNetCore.SwaggerGen/6.6.2": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "6.6.2"
},
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
"assemblyVersion": "6.6.2.0",
"fileVersion": "6.6.2.401"
}
}
},
"Swashbuckle.AspNetCore.SwaggerUI/6.6.2": {
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
"assemblyVersion": "6.6.2.0",
"fileVersion": "6.6.2.401"
}
}
},
"System.IdentityModel.Tokens.Jwt/7.0.3": {
"dependencies": {
"Microsoft.IdentityModel.JsonWebTokens": "7.0.3",
"Microsoft.IdentityModel.Tokens": "7.0.3"
},
"runtime": {
"lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": {
"assemblyVersion": "7.0.3.0",
"fileVersion": "7.0.3.41017"
}
}
},
"AssetManager.Data/1.0.0": {
"dependencies": {
"AssetManager.Models": "1.0.0"
},
"runtime": {
"AssetManager.Data.dll": {
"assemblyVersion": "1.0.0",
"fileVersion": "1.0.0.0"
}
}
},
"AssetManager.Infrastructure/1.0.0": {
"dependencies": {
"AssetManager.Models": "1.0.0"
},
"runtime": {
"AssetManager.Infrastructure.dll": {
"assemblyVersion": "1.0.0",
"fileVersion": "1.0.0.0"
}
}
},
"AssetManager.Models/1.0.0": {
"runtime": {
"AssetManager.Models.dll": {
"assemblyVersion": "1.0.0",
"fileVersion": "1.0.0.0"
}
}
},
"AssetManager.Services/1.0.0": {
"dependencies": {
"AssetManager.Data": "1.0.0",
"AssetManager.Models": "1.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"System.IdentityModel.Tokens.Jwt": "7.0.3"
},
"runtime": {
"AssetManager.Services.dll": {
"assemblyVersion": "1.0.0",
"fileVersion": "1.0.0.0"
}
}
}
}
},
"libraries": {
"AssetManager.API/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Microsoft.AspNetCore.Authentication.JwtBearer/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rwxaZYHips5M9vqxRkGfJthTx+Ws4O4yCuefn17J371jL3ouC5Ker43h2hXb5yd9BMnImE9rznT75KJHm6bMgg==",
"path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.0",
"hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.0.nupkg.sha512"
},
"Microsoft.AspNetCore.OpenApi/8.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kzYiW/IbSN0xittjplA8eN1wrNcRi3DMalYRrEuF2xyf2Y5u7cGCfgN1oNZ+g3aBQzMKTQwYsY1PeNmC+P0WnA==",
"path": "microsoft.aspnetcore.openapi/8.0.10",
"hashPath": "microsoft.aspnetcore.openapi.8.0.10.nupkg.sha512"
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==",
"path": "microsoft.extensions.apidescription.server/6.0.5",
"hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"path": "microsoft.extensions.configuration.abstractions/8.0.0",
"hashPath": "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
"path": "microsoft.extensions.primitives/8.0.0",
"hashPath": "microsoft.extensions.primitives.8.0.0.nupkg.sha512"
},
"Microsoft.IdentityModel.Abstractions/7.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cfPUWdjigLIRIJSKz3uaZxShgf86RVDXHC1VEEchj1gnY25akwPYpbrfSoIGDCqA9UmOMdlctq411+2pAViFow==",
"path": "microsoft.identitymodel.abstractions/7.0.3",
"hashPath": "microsoft.identitymodel.abstractions.7.0.3.nupkg.sha512"
},
"Microsoft.IdentityModel.JsonWebTokens/7.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-vxjHVZbMKD3rVdbvKhzAW+7UiFrYToUVm3AGmYfKSOAwyhdLl/ELX1KZr+FaLyyS5VReIzWRWJfbOuHM9i6ywg==",
"path": "microsoft.identitymodel.jsonwebtokens/7.0.3",
"hashPath": "microsoft.identitymodel.jsonwebtokens.7.0.3.nupkg.sha512"
},
"Microsoft.IdentityModel.Logging/7.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-b6GbGO+2LOTBEccHhqoJsOsmemG4A/MY+8H0wK/ewRhiG+DCYwEnucog1cSArPIY55zcn+XdZl0YEiUHkpDISQ==",
"path": "microsoft.identitymodel.logging/7.0.3",
"hashPath": "microsoft.identitymodel.logging.7.0.3.nupkg.sha512"
},
"Microsoft.IdentityModel.Protocols/7.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BtwR+tctBYhPNygyZmt1Rnw74GFrJteW+1zcdIgyvBCjkek6cNwPPqRfdhzCv61i+lwyNomRi8+iI4QKd4YCKA==",
"path": "microsoft.identitymodel.protocols/7.0.3",
"hashPath": "microsoft.identitymodel.protocols.7.0.3.nupkg.sha512"
},
"Microsoft.IdentityModel.Protocols.OpenIdConnect/7.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-W97TraHApDNArLwpPcXfD+FZH7njJsfEwZE9y9BoofeXMS8H0LBBobz0VOmYmMK4mLdOKxzN7SFT3Ekg0FWI3Q==",
"path": "microsoft.identitymodel.protocols.openidconnect/7.0.3",
"hashPath": "microsoft.identitymodel.protocols.openidconnect.7.0.3.nupkg.sha512"
},
"Microsoft.IdentityModel.Tokens/7.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-wB+LlbDjhnJ98DULjmFepqf9eEMh/sDs6S6hFh68iNRHmwollwhxk+nbSSfpA5+j+FbRyNskoaY4JsY1iCOKCg==",
"path": "microsoft.identitymodel.tokens/7.0.3",
"hashPath": "microsoft.identitymodel.tokens.7.0.3.nupkg.sha512"
},
"Microsoft.OpenApi/1.6.14": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==",
"path": "microsoft.openapi/1.6.14",
"hashPath": "microsoft.openapi.1.6.14.nupkg.sha512"
},
"Swashbuckle.AspNetCore/6.6.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==",
"path": "swashbuckle.aspnetcore/6.6.2",
"hashPath": "swashbuckle.aspnetcore.6.6.2.nupkg.sha512"
},
"Swashbuckle.AspNetCore.Swagger/6.6.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==",
"path": "swashbuckle.aspnetcore.swagger/6.6.2",
"hashPath": "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerGen/6.6.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==",
"path": "swashbuckle.aspnetcore.swaggergen/6.6.2",
"hashPath": "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerUI/6.6.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==",
"path": "swashbuckle.aspnetcore.swaggerui/6.6.2",
"hashPath": "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512"
},
"System.IdentityModel.Tokens.Jwt/7.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-caEe+OpQNYNiyZb+DJpUVROXoVySWBahko2ooNfUcllxa9ZQUM8CgM/mDjP6AoFn6cQU9xMmG+jivXWub8cbGg==",
"path": "system.identitymodel.tokens.jwt/7.0.3",
"hashPath": "system.identitymodel.tokens.jwt.7.0.3.nupkg.sha512"
},
"AssetManager.Data/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"AssetManager.Infrastructure/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"AssetManager.Models/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"AssetManager.Services/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,19 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

Binary file not shown.

View File

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

View File

@ -0,0 +1,350 @@
{
"format": 1,
"restore": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.API/AssetManager.API.csproj": {}
},
"projects": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.API/AssetManager.API.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/Users/fanfpy/Projects/AssetManager/AssetManager.API/AssetManager.API.csproj",
"projectName": "AssetManager.API",
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.API/AssetManager.API.csproj",
"packagesPath": "/Users/fanfpy/.nuget/packages/",
"outputPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/Users/fanfpy/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.Infrastructure/AssetManager.Infrastructure.csproj": {
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Infrastructure/AssetManager.Infrastructure.csproj"
},
"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj": {
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj"
},
"/Users/fanfpy/Projects/AssetManager/AssetManager.Services/AssetManager.Services.csproj": {
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Services/AssetManager.Services.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.AspNetCore.Authentication.JwtBearer": {
"target": "Package",
"version": "[8.0.0, )"
},
"Microsoft.AspNetCore.OpenApi": {
"target": "Package",
"version": "[8.0.10, )"
},
"Swashbuckle.AspNetCore": {
"target": "Package",
"version": "[6.6.2, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.AspNetCore.App": {
"privateAssets": "none"
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj",
"projectName": "AssetManager.Data",
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj",
"packagesPath": "/Users/fanfpy/.nuget/packages/",
"outputPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/Users/fanfpy/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj": {
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"/Users/fanfpy/Projects/AssetManager/AssetManager.Infrastructure/AssetManager.Infrastructure.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/Users/fanfpy/Projects/AssetManager/AssetManager.Infrastructure/AssetManager.Infrastructure.csproj",
"projectName": "AssetManager.Infrastructure",
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Infrastructure/AssetManager.Infrastructure.csproj",
"packagesPath": "/Users/fanfpy/.nuget/packages/",
"outputPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Infrastructure/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/Users/fanfpy/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj": {
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj",
"projectName": "AssetManager.Models",
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj",
"packagesPath": "/Users/fanfpy/.nuget/packages/",
"outputPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/Users/fanfpy/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"/Users/fanfpy/Projects/AssetManager/AssetManager.Services/AssetManager.Services.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/Users/fanfpy/Projects/AssetManager/AssetManager.Services/AssetManager.Services.csproj",
"projectName": "AssetManager.Services",
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Services/AssetManager.Services.csproj",
"packagesPath": "/Users/fanfpy/.nuget/packages/",
"outputPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Services/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/Users/fanfpy/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj": {
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj"
},
"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj": {
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": {
"target": "Package",
"version": "[8.0.0, )"
},
"System.IdentityModel.Tokens.Jwt": {
"target": "Package",
"version": "[7.0.3, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/fanfpy/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/fanfpy/.nuget/packages/</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.10.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/Users/fanfpy/.nuget/packages/" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.props')" />
<Import Project="$(NuGetPackageRoot)swashbuckle.aspnetcore/6.6.2/build/Swashbuckle.AspNetCore.props" Condition="Exists('$(NuGetPackageRoot)swashbuckle.aspnetcore/6.6.2/build/Swashbuckle.AspNetCore.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">/Users/fanfpy/.nuget/packages/microsoft.extensions.apidescription.server/6.0.5</PkgMicrosoft_Extensions_ApiDescription_Server>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.targets')" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("AssetManager.API")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("AssetManager.API")]
[assembly: System.Reflection.AssemblyTitleAttribute("AssetManager.API")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
e0a9809b3a9ceef213f82aa78caca82a60a7c7297b94cb9238fccc7d0ad0144d

View File

@ -0,0 +1,19 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb = true
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = AssetManager.API
build_property.RootNamespace = AssetManager.API
build_property.ProjectDir = /Users/fanfpy/Projects/AssetManager/AssetManager.API/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.RazorLangVersion = 8.0
build_property.SupportLocalizedComponentNames =
build_property.GenerateRazorMetadataSourceChecksumAttributes =
build_property.MSBuildProjectDirectory = /Users/fanfpy/Projects/AssetManager/AssetManager.API
build_property._RazorSourceGeneratorDebug =

View File

@ -0,0 +1,17 @@
// <auto-generated/>
global using global::Microsoft.AspNetCore.Builder;
global using global::Microsoft.AspNetCore.Hosting;
global using global::Microsoft.AspNetCore.Http;
global using global::Microsoft.AspNetCore.Routing;
global using global::Microsoft.Extensions.Configuration;
global using global::Microsoft.Extensions.DependencyInjection;
global using global::Microsoft.Extensions.Hosting;
global using global::Microsoft.Extensions.Logging;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Net.Http.Json;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -0,0 +1,17 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Microsoft.AspNetCore.OpenApi")]
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.SwaggerGen")]
// 由 MSBuild WriteCodeFragment 类生成。

View File

@ -0,0 +1 @@
04b657c5d2dffdb4f50fb562ec5191168b0df465699665587b88d22995f1ad94

View File

@ -0,0 +1,49 @@
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/appsettings.Development.json
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/appsettings.json
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.API
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.API.deps.json
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.API.runtimeconfig.json
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.API.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.API.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.AspNetCore.OpenApi.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.OpenApi.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Swashbuckle.AspNetCore.Swagger.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.Data.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.Infrastructure.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.Models.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.Services.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.Services.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.Models.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.Infrastructure.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/AssetManager.Data.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.csproj.AssemblyReference.cache
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.GeneratedMSBuildEditorConfig.editorconfig
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.AssemblyInfoInputs.cache
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.AssemblyInfo.cs
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.csproj.CoreCompileInputs.cache
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.MvcApplicationPartsAssemblyInfo.cs
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.MvcApplicationPartsAssemblyInfo.cache
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/staticwebassets.build.json
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/staticwebassets.development.json
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/staticwebassets/msbuild.AssetManager.API.Microsoft.AspNetCore.StaticWebAssets.props
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/staticwebassets/msbuild.build.AssetManager.API.props
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.AssetManager.API.props
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.AssetManager.API.props
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/staticwebassets.pack.json
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/scopedcss/bundle/AssetManager.API.styles.css
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetMan.125952A3.Up2Date
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/refint/AssetManager.API.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/AssetManager.API.genruntimeconfig.cache
/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/Debug/net8.0/ref/AssetManager.API.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.IdentityModel.Abstractions.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.IdentityModel.Logging.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.IdentityModel.Protocols.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/Microsoft.IdentityModel.Tokens.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.API/bin/Debug/net8.0/System.IdentityModel.Tokens.Jwt.dll

Binary file not shown.

View File

@ -0,0 +1 @@
ceeba8e9e4c0d4f03dcf26e58fb1abd201fdd076b9b966a150b511c8674ea7f5

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
{
"Version": 1,
"Hash": "g8DcFPqQ2K/qyxpMn/oxCfkQxoQrFyi2oJNu9ro1uL8=",
"Source": "AssetManager.API",
"BasePath": "_content/AssetManager.API",
"Mode": "Default",
"ManifestType": "Build",
"ReferencedProjectsConfiguration": [],
"DiscoveryPatterns": [],
"Assets": []
}

View File

@ -0,0 +1,3 @@
<Project>
<Import Project="Microsoft.AspNetCore.StaticWebAssets.props" />
</Project>

View File

@ -0,0 +1,3 @@
<Project>
<Import Project="../build/AssetManager.API.props" />
</Project>

View File

@ -0,0 +1,3 @@
<Project>
<Import Project="../buildMultiTargeting/AssetManager.API.props" />
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
{
"version": 2,
"dgSpecHash": "MPEbrBQGuXY=",
"success": true,
"projectFilePath": "/Users/fanfpy/Projects/AssetManager/AssetManager.API/AssetManager.API.csproj",
"expectedPackageFiles": [
"/Users/fanfpy/.nuget/packages/microsoft.aspnetcore.authentication.jwtbearer/8.0.0/microsoft.aspnetcore.authentication.jwtbearer.8.0.0.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.aspnetcore.openapi/8.0.10/microsoft.aspnetcore.openapi.8.0.10.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.extensions.apidescription.server/6.0.5/microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.extensions.configuration.abstractions/8.0.0/microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.extensions.primitives/8.0.0/microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.identitymodel.abstractions/7.0.3/microsoft.identitymodel.abstractions.7.0.3.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.identitymodel.jsonwebtokens/7.0.3/microsoft.identitymodel.jsonwebtokens.7.0.3.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.identitymodel.logging/7.0.3/microsoft.identitymodel.logging.7.0.3.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.identitymodel.protocols/7.0.3/microsoft.identitymodel.protocols.7.0.3.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.identitymodel.protocols.openidconnect/7.0.3/microsoft.identitymodel.protocols.openidconnect.7.0.3.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.identitymodel.tokens/7.0.3/microsoft.identitymodel.tokens.7.0.3.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/microsoft.openapi/1.6.14/microsoft.openapi.1.6.14.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/swashbuckle.aspnetcore/6.6.2/swashbuckle.aspnetcore.6.6.2.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/swashbuckle.aspnetcore.swagger/6.6.2/swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/swashbuckle.aspnetcore.swaggergen/6.6.2/swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/swashbuckle.aspnetcore.swaggerui/6.6.2/swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512",
"/Users/fanfpy/.nuget/packages/system.identitymodel.tokens.jwt/7.0.3/system.identitymodel.tokens.jwt.7.0.3.nupkg.sha512"
],
"logs": []
}

View File

@ -0,0 +1 @@
"restore":{"projectUniqueName":"/Users/fanfpy/Projects/AssetManager/AssetManager.API/AssetManager.API.csproj","projectName":"AssetManager.API","projectPath":"/Users/fanfpy/Projects/AssetManager/AssetManager.API/AssetManager.API.csproj","outputPath":"/Users/fanfpy/Projects/AssetManager/AssetManager.API/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"/Users/fanfpy/Projects/AssetManager/AssetManager.Infrastructure/AssetManager.Infrastructure.csproj":{"projectPath":"/Users/fanfpy/Projects/AssetManager/AssetManager.Infrastructure/AssetManager.Infrastructure.csproj"},"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj":{"projectPath":"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj"},"/Users/fanfpy/Projects/AssetManager/AssetManager.Services/AssetManager.Services.csproj":{"projectPath":"/Users/fanfpy/Projects/AssetManager/AssetManager.Services/AssetManager.Services.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.0, )"},"Microsoft.AspNetCore.OpenApi":{"target":"Package","version":"[8.0.10, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[6.6.2, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/8.0.403/PortableRuntimeIdentifierGraph.json"}}

View File

@ -0,0 +1 @@
17713024201686261

View File

@ -0,0 +1 @@
17713024681896557

View File

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\AssetManager.Models\AssetManager.Models.csproj" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,6 @@
namespace AssetManager.Data;
public class Class1
{
}

View File

@ -0,0 +1,39 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"AssetManager.Data/1.0.0": {
"dependencies": {
"AssetManager.Models": "1.0.0"
},
"runtime": {
"AssetManager.Data.dll": {}
}
},
"AssetManager.Models/1.0.0": {
"runtime": {
"AssetManager.Models.dll": {
"assemblyVersion": "1.0.0",
"fileVersion": "1.0.0.0"
}
}
}
}
},
"libraries": {
"AssetManager.Data/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"AssetManager.Models/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

View File

@ -0,0 +1,128 @@
{
"format": 1,
"restore": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj": {}
},
"projects": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj",
"projectName": "AssetManager.Data",
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Data/AssetManager.Data.csproj",
"packagesPath": "/Users/fanfpy/.nuget/packages/",
"outputPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/Users/fanfpy/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj": {
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj",
"projectName": "AssetManager.Models",
"projectPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/AssetManager.Models.csproj",
"packagesPath": "/Users/fanfpy/.nuget/packages/",
"outputPath": "/Users/fanfpy/Projects/AssetManager/AssetManager.Models/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/Users/fanfpy/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/fanfpy/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/fanfpy/.nuget/packages/</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.10.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/Users/fanfpy/.nuget/packages/" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("AssetManager.Data")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("AssetManager.Data")]
[assembly: System.Reflection.AssemblyTitleAttribute("AssetManager.Data")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
e830d3e99e1877069986f6502826dcbe8b78a12f50c05a9b552ddf3251a6f63e

View File

@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = AssetManager.Data
build_property.ProjectDir = /Users/fanfpy/Projects/AssetManager/AssetManager.Data/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@ -0,0 +1 @@
198578c7339bb93df4efffba8b491385119c87f752f4c50425687925f27a88a9

View File

@ -0,0 +1,15 @@
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/bin/Debug/net8.0/AssetManager.Data.deps.json
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/bin/Debug/net8.0/AssetManager.Data.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/bin/Debug/net8.0/AssetManager.Data.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/bin/Debug/net8.0/AssetManager.Models.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/bin/Debug/net8.0/AssetManager.Models.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/AssetManager.Data.csproj.AssemblyReference.cache
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/AssetManager.Data.GeneratedMSBuildEditorConfig.editorconfig
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/AssetManager.Data.AssemblyInfoInputs.cache
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/AssetManager.Data.AssemblyInfo.cs
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/AssetManager.Data.csproj.CoreCompileInputs.cache
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/AssetMan.57965B68.Up2Date
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/AssetManager.Data.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/refint/AssetManager.Data.dll
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/AssetManager.Data.pdb
/Users/fanfpy/Projects/AssetManager/AssetManager.Data/obj/Debug/net8.0/ref/AssetManager.Data.dll

Some files were not shown because too many files have changed in this diff Show More