心率上传
This commit is contained in:
parent
24ee15b7b5
commit
011f3fa3a4
@ -6,6 +6,7 @@ using YD_AllHeartRates.Api.Services.Interface;
|
||||
using YD_AllHeartRates.Commons.Dto;
|
||||
using YD_AllHeartRates.Commons.Dto.DataPush;
|
||||
using YD_AllHeartRates.Commons.Dto.Device;
|
||||
using YD_AllHeartRates.Commons.MemoryCaches;
|
||||
|
||||
namespace YD_AllHeartRates.Api.Controllers
|
||||
{
|
||||
@ -19,9 +20,12 @@ namespace YD_AllHeartRates.Api.Controllers
|
||||
{
|
||||
private readonly IDataPushService _dataPushService;
|
||||
|
||||
public DataPushController(IDataPushService dataPushService)
|
||||
private readonly ICaching _caching;
|
||||
|
||||
public DataPushController(IDataPushService dataPushService, ICaching caching)
|
||||
{
|
||||
_dataPushService = dataPushService;
|
||||
_caching = caching;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -53,29 +57,67 @@ namespace YD_AllHeartRates.Api.Controllers
|
||||
[HttpPost(nameof(SportsRoutineReport))]
|
||||
public async Task<SportsRoutineReportResponse> SportsRoutineReport()
|
||||
{
|
||||
var data = new List<StudentData>
|
||||
var now = DateTime.Now;
|
||||
SportsRoutineReportResponse res = new SportsRoutineReportResponse();
|
||||
|
||||
var _eduIds = _caching.Get<List<string>>("StudentEduIds");
|
||||
|
||||
if (_eduIds != null || _eduIds.Count > 0)
|
||||
{
|
||||
new StudentData
|
||||
var random = new Random();
|
||||
var data = new List<StudentData>();
|
||||
|
||||
// 假设需要过去 24 小时的心率(可改)
|
||||
var beginTime = now.AddHours(-24);
|
||||
|
||||
for (int i = 0; i < _eduIds.Count; i++)
|
||||
{
|
||||
SBID = "1234567",
|
||||
XSEDUID = "d1cd4ff5-6511-58b8-809f-22d102b3c20d",
|
||||
HDSJ = new List<HeartRateRecordDto>
|
||||
var hdsjList = new List<HeartRateRecordDto>();
|
||||
|
||||
// 从 24 小时前 → 当前时刻,每 2 分钟一条
|
||||
var minutes = (int)(now - beginTime).TotalMinutes;
|
||||
|
||||
for (int m = 0; m < minutes; m += 2)
|
||||
{
|
||||
new HeartRateRecordDto { SJSJ = "2025-11-11 14:50:00", XL = 90, JXXL = 80 },
|
||||
new HeartRateRecordDto { SJSJ = "2025-11-11 14:51:00", XL = 92, JXXL = 80 }
|
||||
var recordTime = beginTime.AddMinutes(m);
|
||||
|
||||
bool isSportTime = recordTime >= now.AddHours(-2);
|
||||
// ☆☆ 最近两小时是运动心率 ☆☆
|
||||
|
||||
hdsjList.Add(new HeartRateRecordDto
|
||||
{
|
||||
SJSJ = recordTime.ToString("yyyy-MM-dd HH:mm:ss"),
|
||||
|
||||
// 心率逻辑区分
|
||||
XL = isSportTime
|
||||
? random.Next(120, 166) // 运动心率偏高
|
||||
: random.Next(70, 111), // 正常心率 70~110(可调)
|
||||
|
||||
JXXL = random.Next(60, 91) // 静息心率保持不变
|
||||
});
|
||||
}
|
||||
},
|
||||
new StudentData
|
||||
{
|
||||
SBID = "5678934",
|
||||
XSEDUID = "d1cd4ff5-6511-58b8-809f-22d102b3c20e",
|
||||
HDSJ = new List<HeartRateRecordDto>
|
||||
|
||||
var student = new StudentData
|
||||
{
|
||||
new HeartRateRecordDto { SJSJ = "2025-11-11 14:50:00", XL = 88, JXXL = 78 }
|
||||
}
|
||||
SBID = (i + 1).ToString("D2"),
|
||||
XSEDUID = _eduIds[i],
|
||||
HDSJ = hdsjList
|
||||
};
|
||||
|
||||
data.Add(student);
|
||||
}
|
||||
};
|
||||
var res = await _dataPushService.SportsRoutineReport(data);
|
||||
|
||||
try
|
||||
{
|
||||
res = await _dataPushService.SportsRoutineReport(data);
|
||||
Console.WriteLine($"[{DateTime.Now}] HeartRate job code:{res?.code} msg:{res?.msg}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[{DateTime.Now}] HeartRate job msg:{ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -86,6 +128,7 @@ namespace YD_AllHeartRates.Api.Controllers
|
||||
[HttpPost(nameof(SportsAbnormalReport))]
|
||||
public async Task<SportsRoutineReportResponse> SportsAbnormalReport()
|
||||
{
|
||||
var now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
var data = new List<SportsAbnormalReportDto>
|
||||
{
|
||||
new SportsAbnormalReportDto
|
||||
@ -94,7 +137,7 @@ namespace YD_AllHeartRates.Api.Controllers
|
||||
XSEDUID = "d1cd4ff5-6511-58b8-809f-22d102b3c20d",
|
||||
HDSJ = new List<AbnormalHeartRateRecordDto>
|
||||
{
|
||||
new AbnormalHeartRateRecordDto { SJSJ = "2025-11-11 15:50:00", XL = 90, JXXL = 80, YCXX="心率过高", YCYY="持续剧烈运动" }
|
||||
new AbnormalHeartRateRecordDto { SJSJ = now, XL = 90, JXXL = 80, YCXX="心率过高", YCYY="持续剧烈运动" }
|
||||
}
|
||||
},
|
||||
new SportsAbnormalReportDto
|
||||
@ -103,7 +146,7 @@ namespace YD_AllHeartRates.Api.Controllers
|
||||
XSEDUID = "d1cd4ff5-6511-58b8-809f-22d102b3c20e",
|
||||
HDSJ = new List<AbnormalHeartRateRecordDto>
|
||||
{
|
||||
new AbnormalHeartRateRecordDto { SJSJ = "2025-11-11 15:50:00", XL = 88, JXXL = 78, YCXX="心率过高", YCYY="持续剧烈运动" }
|
||||
new AbnormalHeartRateRecordDto { SJSJ = now, XL = 88, JXXL = 78, YCXX="心率过高", YCYY="持续剧烈运动" }
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Binary file not shown.
@ -0,0 +1,6 @@
|
||||
C:\Users\tangl\Desktop\Git\YD_AllHeartRates.Api\YD_AllHeartRates.Api\Fakes\YD_AllHeartRates.Commons.fakes : warning : 无法为 YD_AllHeartRates.Commons.Dto.ResponseMsg 生成存根: 类型没有对程序集可见的构造函数。构造函数本身或参数可能不可见。。
|
||||
C:\Users\tangl\Desktop\Git\YD_AllHeartRates.Api\YD_AllHeartRates.Api\Fakes\YD_AllHeartRates.Commons.fakes : warning : 无法为 YD_AllHeartRates.Commons.MemoryCaches.MemoryCacheSetup 生成存根: 类型没有对程序集可见的构造函数。构造函数本身或参数可能不可见。。
|
||||
C:\Users\tangl\Desktop\Git\YD_AllHeartRates.Api\YD_AllHeartRates.Api\Fakes\YD_AllHeartRates.Commons.fakes : warning : 无法为 YD_AllHeartRates.Commons.Middlewares.SystemExceptionApplicationBuilderExtensions 生成存根: 类型没有对程序集可见的构造函数。构造函数本身或参数可能不可见。。
|
||||
C:\Users\tangl\Desktop\Git\YD_AllHeartRates.Api\YD_AllHeartRates.Api\Fakes\YD_AllHeartRates.Commons.fakes : warning : 无法为 YD_AllHeartRates.Commons.Utils.Util 生成存根: 类型没有对程序集可见的构造函数。构造函数本身或参数可能不可见。。
|
||||
C:\Users\tangl\Desktop\Git\YD_AllHeartRates.Api\YD_AllHeartRates.Api\Fakes\YD_AllHeartRates.Commons.fakes : warning : 正在跳过 method System.Int32 YD_AllHeartRates.Commons.Utils.Util.GetRank(!!0 score),method System.Int32 YD_AllHeartRates.Commons.Utils.Util.GetRank(!!0 score) unstubbable: 无法同时指定类约束和 "class" 或 "struct" 约束
|
||||
C:\Users\tangl\Desktop\Git\YD_AllHeartRates.Api\YD_AllHeartRates.Api\Fakes\YD_AllHeartRates.Commons.fakes : warning : 正在跳过 method System.String YD_AllHeartRates.Commons.Utils.Util.GetRankStr(!!0 score),method System.String YD_AllHeartRates.Commons.Utils.Util.GetRankStr(!!0 score) unstubbable: 无法同时指定类约束和 "class" 或 "struct" 约束
|
||||
@ -1,6 +1,9 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using YD_AllHeartRates.Api.Services.Interface;
|
||||
using YD_AllHeartRates.Commons.Dto.DataPush;
|
||||
using YD_AllHeartRates.Commons.MemoryCaches;
|
||||
using YD_AllHeartRates.Commons.Utils;
|
||||
|
||||
namespace YD_AllHeartRates.Api.Middlewares
|
||||
{
|
||||
@ -9,6 +12,8 @@ namespace YD_AllHeartRates.Api.Middlewares
|
||||
private readonly IDataPushService _dataPushService;
|
||||
private Timer _timer;
|
||||
|
||||
private readonly ICaching _caching;
|
||||
|
||||
private static string[] ChangXing = new string[]
|
||||
{
|
||||
"曹贺淳",
|
||||
@ -91,33 +96,53 @@ namespace YD_AllHeartRates.Api.Middlewares
|
||||
|
||||
private static List<string> _eduIds = new List<string>();
|
||||
|
||||
public SportsRoutineReportJob(IDataPushService dataPushService)
|
||||
public SportsRoutineReportJob(IDataPushService dataPushService, ICaching caching)
|
||||
{
|
||||
_dataPushService = dataPushService;
|
||||
_caching = caching;
|
||||
|
||||
// 尝试从 Redis 获取缓存
|
||||
var cachedEduIds = _caching.Get<List<string>>("StudentEduIds");
|
||||
if (cachedEduIds != null && cachedEduIds.Count > 0)
|
||||
{
|
||||
_eduIds = cachedEduIds;
|
||||
Console.WriteLine("从 Redis 加载学生 EduId 完成。");
|
||||
return; // 已有缓存直接返回
|
||||
}
|
||||
|
||||
// 正大中学
|
||||
foreach (var name in ZhengDa)
|
||||
{
|
||||
var student = _dataPushService.GetStudentEduId("上海市崇明区正大中学", "七年级", "5班", name, "").Result.FirstOrDefault();
|
||||
var student = _dataPushService
|
||||
.GetStudentEduId("上海市崇明区正大中学", "七年级", "5班", name, "")
|
||||
.Result
|
||||
.FirstOrDefault();
|
||||
|
||||
if (student != null)
|
||||
{
|
||||
_eduIds.Add(student.EduId);
|
||||
|
||||
Console.WriteLine($"上海市崇明区正大中学:[{DateTime.Now}] {name}: {student.EduId}");
|
||||
Console.WriteLine($"正大中学:[{DateTime.Now}] {name}: {student.EduId}");
|
||||
}
|
||||
}
|
||||
|
||||
// 长兴小学
|
||||
foreach (var name in ChangXing)
|
||||
{
|
||||
var student = _dataPushService.GetStudentEduId("上海市崇明区长兴小学", "二年级", "二年级2班", name, "").Result.FirstOrDefault();
|
||||
var student = _dataPushService
|
||||
.GetStudentEduId("上海市崇明区长兴小学", "二年级", "二年级2班", name, "")
|
||||
.Result
|
||||
.FirstOrDefault();
|
||||
|
||||
if (student != null)
|
||||
{
|
||||
_eduIds.Add(student.EduId);
|
||||
|
||||
Console.WriteLine($"上海市崇明区长兴小学:[{DateTime.Now}] {name}: {student.EduId}");
|
||||
Console.WriteLine($"长兴小学:[{DateTime.Now}] {name}: {student.EduId}");
|
||||
}
|
||||
}
|
||||
|
||||
var json = JsonConvert.SerializeObject(_eduIds);
|
||||
_caching.AddObject("StudentEduIds", json);
|
||||
Console.WriteLine("学生 EduId 已缓存到 Redis。");
|
||||
}
|
||||
|
||||
public Task StartAsync(CancellationToken cancellationToken)
|
||||
@ -137,33 +162,23 @@ namespace YD_AllHeartRates.Api.Middlewares
|
||||
var random = new Random();
|
||||
var data = new List<StudentData>();
|
||||
|
||||
// 假设需要过去 24 小时的心率(可改)
|
||||
var beginTime = now.AddHours(-24);
|
||||
|
||||
for (int i = 0; i < _eduIds.Count; i++)
|
||||
{
|
||||
var hdsjList = new List<HeartRateRecordDto>();
|
||||
|
||||
// 从 24 小时前 → 当前时刻,每 2 分钟一条
|
||||
var minutes = (int)(now - beginTime).TotalMinutes;
|
||||
// 每个学生生成 60 条心率数据,间隔可平均分在过去 24 小时
|
||||
var beginTime = now.AddHours(-24);
|
||||
var intervalMinutes = 24 * 60 / 60; // 24 小时 / 60 条 = 每条间隔分钟数
|
||||
|
||||
for (int m = 0; m < minutes; m += 2)
|
||||
for (int j = 0; j < 60; j++)
|
||||
{
|
||||
var recordTime = beginTime.AddMinutes(m);
|
||||
|
||||
bool isSportTime = recordTime >= now.AddHours(-2);
|
||||
// ☆☆ 最近两小时是运动心率 ☆☆
|
||||
var recordTime = beginTime.AddMinutes(j * intervalMinutes);
|
||||
|
||||
hdsjList.Add(new HeartRateRecordDto
|
||||
{
|
||||
SJSJ = recordTime.ToString("yyyy-MM-dd HH:mm:ss"),
|
||||
|
||||
// 心率逻辑区分
|
||||
XL = isSportTime
|
||||
? random.Next(120, 166) // 运动心率偏高
|
||||
: random.Next(70, 111), // 正常心率 70~110(可调)
|
||||
|
||||
JXXL = random.Next(60, 91) // 静息心率保持不变
|
||||
XL = random.Next(70, 111), // 正常心率 70~110
|
||||
JXXL = random.Next(60, 91) // 静息心率
|
||||
});
|
||||
}
|
||||
|
||||
@ -179,16 +194,17 @@ namespace YD_AllHeartRates.Api.Middlewares
|
||||
|
||||
try
|
||||
{
|
||||
await _dataPushService.SportsRoutineReport(data);
|
||||
Console.WriteLine($"[{DateTime.Now}] HeartRate job OK.");
|
||||
var res = await _dataPushService.SportsRoutineReport(data);
|
||||
Console.WriteLine($"[{DateTime.Now}] HeartRate job code:{res?.code} msg:{res?.msg}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[{DateTime.Now}] Job ERROR: {ex}");
|
||||
Console.WriteLine($"[{DateTime.Now}] HeartRate job msg:{ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
_timer?.Change(Timeout.Infinite, 0);
|
||||
|
||||
@ -186,6 +186,61 @@ namespace YD_AllHeartRates.Api.Mqtt
|
||||
RedisHelper.SAdd($"school:{student.SchoolCode}:students", student.StudentNo);
|
||||
}
|
||||
|
||||
else if (ble.bs_name.Contains("YD"))
|
||||
{
|
||||
if (!studentHMap.TryGetValue(ble.bs_name, out var student)) continue;
|
||||
|
||||
// 寻找有效载荷开头 ffff0170
|
||||
int ydIndex = IndexOfSequence(data, new byte[] { 0xFF, 0xFF, 0x01, 0x70 });
|
||||
if (ydIndex < 0 || data.Length < ydIndex + 17) continue;
|
||||
|
||||
int battery = data[ydIndex + 2];
|
||||
int heartRate = data[ydIndex + 3];
|
||||
int calorie = data[ydIndex + 4];
|
||||
int hrv = data[ydIndex + 5];
|
||||
int statusFlag = data[ydIndex + 6];
|
||||
|
||||
// 步数 2 个字节,小端
|
||||
int step = data[ydIndex + 7] | (data[ydIndex + 8] << 8);
|
||||
|
||||
int intensity = data[ydIndex + 9];
|
||||
|
||||
// 设备编号 7 个字节 ASCII
|
||||
string deviceNo = Encoding.ASCII.GetString(data, ydIndex + 10, 7).Trim('\0');
|
||||
|
||||
if (heartRate == 0) continue;
|
||||
|
||||
var entity = new HeartRateData
|
||||
{
|
||||
ScoreTime = scoreTime,
|
||||
Code = ble.bs_name,
|
||||
GradeId = student.GradeId,
|
||||
GradeName = student.GradeName,
|
||||
ClassId = student.ClassId,
|
||||
ClassName = student.ClassName ?? "",
|
||||
SchoolCode = student.SchoolCode ?? "",
|
||||
Sex = student.Sex,
|
||||
Value = heartRate,
|
||||
QuantityOfElectricity = battery,
|
||||
StudentNo = student.StudentNo,
|
||||
StudentName = student.StudentName,
|
||||
|
||||
// 强度算法 —— 与 GTY 类似,用年龄计算
|
||||
Strength = (int)Math.Round(((double)heartRate / (220 - student.Age)) * 100),
|
||||
|
||||
// 可扩展字段(如果 HeartRateData 未包含可删除)
|
||||
//Calorie = calorie,
|
||||
//HRV = hrv,
|
||||
//Step = step,
|
||||
//StatusFlag = statusFlag,
|
||||
//DeviceNo = deviceNo
|
||||
};
|
||||
|
||||
heartRateEntities.Add(entity);
|
||||
_caching.AddObject($"heartRate:{student.StudentNo}", entity, 60);
|
||||
RedisHelper.SAdd($"school:{student.SchoolCode}:students", student.StudentNo);
|
||||
}
|
||||
|
||||
else if (ble.bs_name.Contains("RS207"))
|
||||
{
|
||||
//if (!deviceJMap.TryGetValue(ble.bs_name, out var studentNo)) continue;
|
||||
|
||||
@ -4,6 +4,7 @@ using System.Text;
|
||||
using YD_AllHeartRates.Api.Services.Interface;
|
||||
using YD_AllHeartRates.Api.Utilities;
|
||||
using YD_AllHeartRates.Commons.Dto.DataPush;
|
||||
using YD_AllHeartRates.Commons.MemoryCaches;
|
||||
|
||||
namespace YD_AllHeartRates.Api.Services.Impl
|
||||
{
|
||||
@ -195,6 +196,14 @@ namespace YD_AllHeartRates.Api.Services.Impl
|
||||
|
||||
return new List<StudentEduDto>();
|
||||
}
|
||||
private readonly ICaching _caching;
|
||||
|
||||
|
||||
|
||||
public DataPushService(ICaching caching)
|
||||
{
|
||||
_caching = caching;
|
||||
}
|
||||
|
||||
public async Task<SportsRoutineReportResponse> SportsRoutineReport(List<StudentData> data)
|
||||
{
|
||||
@ -236,6 +245,9 @@ namespace YD_AllHeartRates.Api.Services.Impl
|
||||
try
|
||||
{
|
||||
jsonPlain = JsonConvert.SerializeObject(package, Formatting.None);
|
||||
|
||||
_caching.Add("HeartRateData", jsonPlain);
|
||||
|
||||
Console.WriteLine($"[SportsRoutineReport] Package JSON: {jsonPlain}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@ -14,7 +14,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("YD_AllHeartRates.Api")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+dcd60ea122e6397c3b9767667ca9ca7a0e84d15c")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+24ee15b7b50692742c8b3b473f35816e9066b2b1")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("YD_AllHeartRates.Api")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("YD_AllHeartRates.Api")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
@ -1 +1 @@
|
||||
184bb69585d31dd16b0e558eb791ebdf94ba1d5005394e88cdc02f2083ad9219
|
||||
9974da8b4c2c60d16c128ae3f34b19149b967ee33d081a58b7674b52fa6c3185
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -14,7 +14,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("YD_AllHeartRates.Commons")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+dcd60ea122e6397c3b9767667ca9ca7a0e84d15c")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+24ee15b7b50692742c8b3b473f35816e9066b2b1")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("YD_AllHeartRates.Commons")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("YD_AllHeartRates.Commons")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
@ -1 +1 @@
|
||||
0725621c579d71a4a2e1f0dedeaa95017b4b1d54526c943a181f6f9946ec33da
|
||||
5ff03eace3a6603ede58a64881e5f61ecc32706ffbd9bd5953b29181564fa8be
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -94,11 +94,6 @@
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
},
|
||||
"runtimes": {
|
||||
"linux-x64": {
|
||||
"#import": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -373,379 +373,6 @@
|
||||
"lib/netcoreapp2.0/_._": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"net6.0/linux-x64": {
|
||||
"Aliyun.OSS.SDK.NetCore/2.14.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Aliyun.OSS.Core.dll": {
|
||||
"related": ".pdb;.xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Aliyun.OSS.Core.dll": {
|
||||
"related": ".pdb;.xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CSRedisCore/3.8.804": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "13.0.1",
|
||||
"System.ValueTuple": "4.5.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/CSRedisCore.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/CSRedisCore.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Abstractions/2.2.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Http.Features": "2.2.0",
|
||||
"System.Text.Encodings.Web": "4.5.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Features/2.2.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "2.2.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.JsonPatch/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Newtonsoft.Json": "13.0.1"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.JsonPatch.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.JsonPatch.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Mvc.Abstractions/2.2.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
|
||||
"Microsoft.Net.Http.Headers": "2.2.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Mvc.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Mvc.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Mvc.NewtonsoftJson/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.JsonPatch": "6.0.0",
|
||||
"Newtonsoft.Json": "13.0.1",
|
||||
"Newtonsoft.Json.Bson": "1.0.2"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"frameworkReferences": [
|
||||
"Microsoft.AspNetCore.App"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.Routing.Abstractions/2.2.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Http.Abstractions": "2.2.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Bcl.AsyncInterfaces/8.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Bcl.TimeProvider/8.0.1": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.AsyncInterfaces": "8.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/net6.0/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/2.2.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.1",
|
||||
"System.Runtime.CompilerServices.Unsafe": "4.5.1"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Abstractions/8.3.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.IdentityModel.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.IdentityModel.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.JsonWebTokens/8.3.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.TimeProvider": "8.0.1",
|
||||
"Microsoft.IdentityModel.Tokens": "8.3.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Logging/8.3.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.Abstractions": "8.3.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.IdentityModel.Logging.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.IdentityModel.Logging.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.IdentityModel.Tokens/8.3.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.TimeProvider": "8.0.1",
|
||||
"Microsoft.IdentityModel.Logging": "8.3.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.IdentityModel.Tokens.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.IdentityModel.Tokens.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Net.Http.Headers/2.2.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "2.2.0",
|
||||
"System.Buffers": "4.5.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json.Bson/1.0.2": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "12.0.1"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Newtonsoft.Json.Bson.dll": {
|
||||
"related": ".pdb;.xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Newtonsoft.Json.Bson.dll": {
|
||||
"related": ".pdb;.xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Buffers/4.5.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/_._": {}
|
||||
}
|
||||
},
|
||||
"System.IdentityModel.Tokens.Jwt/8.3.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.IdentityModel.JsonWebTokens": "8.3.0",
|
||||
"Microsoft.IdentityModel.Tokens": "8.3.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/System.IdentityModel.Tokens.Jwt.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/System.IdentityModel.Tokens.Jwt.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.1/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.1/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/4.5.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Text.Encodings.Web/4.5.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/System.Text.Encodings.Web.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Text.Encodings.Web.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.ValueTuple/4.5.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/_._": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
@ -1429,11 +1056,6 @@
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
},
|
||||
"runtimes": {
|
||||
"linux-x64": {
|
||||
"#import": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "O2pQJnT8voA=",
|
||||
"dgSpecHash": "66S6RYy996A=",
|
||||
"success": true,
|
||||
"projectFilePath": "C:\\Users\\tangl\\Desktop\\Git\\YD_AllHeartRates.Api\\YD_AllHeartRates.Commons\\YD_AllHeartRates.Commons.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user