Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/LASAPlatform
commit
0cca478475
|
|
@ -409,7 +409,7 @@ namespace OpenAuth.App.ServiceApp
|
|||
#endregion
|
||||
|
||||
public async Task<Response<PageInfo<List<LasaMediaFile>>>> GetMediaFile(string taskId, string airId,string device,
|
||||
string picname, DateTime? startTime, DateTime? endTime, int page, int limit, string parentKey,int? objectKeyExist)
|
||||
int? type, string picname, DateTime? startTime, DateTime? endTime, int page, int limit, string parentKey,int? objectKeyExist)
|
||||
{
|
||||
RefAsync<int> totalCount = 0;
|
||||
using (var db = UnitWork.CreateContext())
|
||||
|
|
@ -426,6 +426,7 @@ namespace OpenAuth.App.ServiceApp
|
|||
.WhereIF(!"0001/1/1 0:00:00".Equal(endTime.ToString()), (x, b) => x.CreateTime <= endTime)
|
||||
.WhereIF(!string.IsNullOrEmpty(parentKey), (x, b) => x.ParentKey == parentKey)
|
||||
.WhereIF(!string.IsNullOrEmpty(taskId), (x, b) => x.TaskId == taskId)
|
||||
.WhereIF(type != null, (x, b) => x.Type == type)
|
||||
.OrderBy((x, b) => x.CreateTime, OrderByType.Desc)
|
||||
.Select((x,b) => new LasaMediaFile
|
||||
{
|
||||
|
|
@ -457,7 +458,8 @@ namespace OpenAuth.App.ServiceApp
|
|||
AirLineName = b.TaskAirLineName,
|
||||
GimbalYawDegree = x.GimbalYawDegree,
|
||||
RelativeAltitude = x.RelativeAltitude,
|
||||
PayloadModelName = x.PayloadModelName
|
||||
PayloadModelName = x.PayloadModelName,
|
||||
Type = x.Type
|
||||
})
|
||||
.ToPageListAsync(page, limit, totalCount);
|
||||
return new Response<PageInfo<List<LasaMediaFile>>>
|
||||
|
|
|
|||
|
|
@ -1,12 +1,18 @@
|
|||
using System.Drawing;
|
||||
using System.Dynamic;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using Infrastructure;
|
||||
using Infrastructure.CloudSdk;
|
||||
using Infrastructure.CloudSdk.minio;
|
||||
using Infrastructure.CloudSdk.wayline;
|
||||
using Infrastructure.Extensions;
|
||||
using Infrastructure.Helpers;
|
||||
using MetadataExtractor;
|
||||
using MetadataExtractor.Formats.Exif;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Microsoft.Net.Http.Headers;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OpenAuth.App.BaseApp.Base;
|
||||
|
|
@ -22,6 +28,8 @@ using OpenAuth.Repository.Domain;
|
|||
using OpenAuth.WebApi;
|
||||
using OpenAuth.WebApi.CloudSdk;
|
||||
using SqlSugar;
|
||||
using Directory = System.IO.Directory;
|
||||
using RangeHeaderValue = System.Net.Http.Headers.RangeHeaderValue;
|
||||
|
||||
namespace OpenAuth.App.ServiceApp
|
||||
{
|
||||
|
|
@ -969,7 +977,8 @@ namespace OpenAuth.App.ServiceApp
|
|||
?.Value<int>(); // {"0":"无雨","1":"小雨","2":"中雨","3":"大雨"}
|
||||
|
||||
// 如果没有天气阻飞?
|
||||
if (windSpeedThreshold <= windSpeed || rainThreshold <= rainfall || weatherWindSpeedThreshold <= weatherWindSpeed)
|
||||
if (windSpeedThreshold <= windSpeed || rainThreshold <= rainfall ||
|
||||
weatherWindSpeedThreshold <= weatherWindSpeed)
|
||||
{
|
||||
// 不让起飞
|
||||
// 更新失败原因
|
||||
|
|
@ -1871,5 +1880,283 @@ namespace OpenAuth.App.ServiceApp
|
|||
Result = true
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<Response<bool>> Test1111(string msg)
|
||||
{
|
||||
var sn = "8UUXN5400A079H";
|
||||
var result = JsonConvert.DeserializeObject<TopicServicesRequest<dynamic>>(msg);
|
||||
var method = result.method;
|
||||
var data = result.data;
|
||||
int flightType = data.flight_task.flight_type;
|
||||
string flightId = data.file.ext.flight_id;
|
||||
var taskAssign = GetTaskAssignByFlightId(flightId);
|
||||
var taskId = taskAssign.TaskId;
|
||||
var executeTask = await Repository.AsSugarClient()
|
||||
.Queryable<LasaTask>()
|
||||
.SingleAsync(a => a.Id == taskId);
|
||||
string objectKey = data.file.object_key;
|
||||
var folderKey = ((string)data.file.object_key).Split("/");
|
||||
var parentKey = folderKey[2];
|
||||
var isExist = await Repository.AsSugarClient()
|
||||
.Queryable<LasaMediaFile>()
|
||||
.Where(x => x.Id.Equals(parentKey)).CountAsync();
|
||||
if (isExist == 0)
|
||||
{
|
||||
var date = DateTime.Now;
|
||||
var timeStr = date.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
var parent1 = new LasaMediaFile()
|
||||
{
|
||||
Id = folderKey[2],
|
||||
FlightId = flightId,
|
||||
TaskId = taskId,
|
||||
ParentKey = "0",
|
||||
Name = string.IsNullOrEmpty(executeTask.TaskName)
|
||||
? timeStr
|
||||
: $"{executeTask.TaskName} {timeStr}",
|
||||
WorkspaceId = executeTask.WorkspaceId,
|
||||
CreateTime = date,
|
||||
};
|
||||
await Repository.AsSugarClient().Insertable(parent1).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
// 重复检测
|
||||
var mediaFile = await Repository.AsSugarClient()
|
||||
.Queryable<LasaMediaFile>()
|
||||
.Where(a => a.FlightId.Equals(flightId))
|
||||
.Where(a => a.ObjectKey.Equals(objectKey)).SingleAsync();
|
||||
if (mediaFile == null)
|
||||
{
|
||||
var type = 0;
|
||||
var preSize = 5;
|
||||
// todo 判断是不是图片
|
||||
if (objectKey.EndsWith(".jpeg")) // todo 是否有其它类型的图片,待确定
|
||||
{
|
||||
preSize = 65535;
|
||||
var fileName = Path.GetFileNameWithoutExtension(objectKey);
|
||||
var fileNameParts = fileName.Split("_");
|
||||
var suffix = fileNameParts[^1];
|
||||
type = suffix switch
|
||||
{
|
||||
// 0 未知 1 可见光 2 红外 3 变焦 4.广角 5 视频
|
||||
"V" => 1,
|
||||
"T" => 2,
|
||||
"Z" => 3, // 变焦
|
||||
"W" => 4, // 广角
|
||||
_ => type
|
||||
};
|
||||
}
|
||||
else if (objectKey.EndsWith(".mp4"))
|
||||
{
|
||||
type = 5;
|
||||
}
|
||||
|
||||
string suoluokey = "";
|
||||
long? fileSize = 0;
|
||||
int width = 0, height = 0, focalLength = 0;
|
||||
int offset = 0, length = 0;
|
||||
string model = "";
|
||||
|
||||
var fileUrl = "http://" + _minioService.endPoint + "/" + _minioService._bucketName +
|
||||
"/" + objectKey;
|
||||
using (var httpClient = new HttpClient())
|
||||
{
|
||||
suoluokey = "minipic/" + data.file.name.ToString();
|
||||
// 目前读取64KB
|
||||
// 添加Range请求头
|
||||
httpClient.DefaultRequestHeaders.Range =
|
||||
new RangeHeaderValue(0, preSize);
|
||||
try
|
||||
{
|
||||
var response = httpClient
|
||||
.GetAsync(fileUrl, HttpCompletionOption.ResponseHeadersRead).Result;
|
||||
if (response.StatusCode == HttpStatusCode.PartialContent)
|
||||
{
|
||||
//Focal Length 35: 24 mm
|
||||
//Exif Image Width: 4032 pixels : Exif SubIFD
|
||||
//Exif Image Height: 3024 pixels : Exif SubIFD
|
||||
// 3.1 解析Content-Range头(格式:bytes start-end/total)
|
||||
var contentRange = response.Content.Headers.ContentRange;
|
||||
if (contentRange != null)
|
||||
{
|
||||
fileSize = contentRange.Length.Value;
|
||||
Console.WriteLine(
|
||||
$"获取范围:{contentRange.From}-{contentRange.To}/{contentRange.Length}");
|
||||
}
|
||||
|
||||
if (objectKey.ToLower().EndsWith("jpeg"))
|
||||
{
|
||||
// 成功获取部分内容
|
||||
var y = response.Content.ReadAsByteArrayAsync().Result;
|
||||
MemoryStream ms = new MemoryStream(y);
|
||||
var directories = ImageMetadataReader.ReadMetadata(ms);
|
||||
foreach (var directory in directories)
|
||||
{
|
||||
if (directory is ExifDirectoryBase)
|
||||
{
|
||||
if (directory.Name.Equals("Exif IFD0"))
|
||||
{
|
||||
foreach (var tag in directory.Tags)
|
||||
{
|
||||
if (tag.Name.Equals("Model"))
|
||||
{
|
||||
model = tag.Description;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (directory.Name.Equals("Exif SubIFD"))
|
||||
{
|
||||
foreach (var tag in directory.Tags)
|
||||
{
|
||||
if (tag.Name.Equals("Exif Image Width"))
|
||||
{
|
||||
width = int.Parse(tag.Description.Replace("pixels", "")
|
||||
.Trim());
|
||||
}
|
||||
|
||||
if (tag.Name.Equals("Exif Image Height"))
|
||||
{
|
||||
height = int.Parse(tag.Description.Replace("pixels", "")
|
||||
.Trim());
|
||||
}
|
||||
|
||||
if (tag.Name.Equals("Focal Length 35"))
|
||||
{
|
||||
focalLength = int.Parse(tag.Description
|
||||
.Replace("mm", "")
|
||||
.Trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Console.WriteLine(directory.Name);
|
||||
if (directory.Name.Equals("Exif Thumbnail"))
|
||||
{
|
||||
foreach (var tag in directory.Tags)
|
||||
{
|
||||
if (tag.Name.Equals("Thumbnail Offset"))
|
||||
{
|
||||
offset = int.Parse(tag.Description.Replace("bytes", "")
|
||||
.Trim());
|
||||
}
|
||||
|
||||
if (tag.Name.Equals("Thumbnail Length"))
|
||||
{
|
||||
length = int.Parse(tag.Description.Replace("bytes", "")
|
||||
.Trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ms.Seek(offset + 6, SeekOrigin.Begin);
|
||||
byte[] buffer = new byte[length];
|
||||
int bytesRead = ms.Read(buffer, 0, length);
|
||||
// 上传缩略图到MinIO
|
||||
await _minioService.PutObjectAsync("", data.file.name.ToString(), suoluokey,
|
||||
new MemoryStream(buffer));
|
||||
}
|
||||
}
|
||||
else if (response.StatusCode == HttpStatusCode.OK)
|
||||
{
|
||||
// 服务器不支持Range请求,返回完整内容
|
||||
throw new InvalidOperationException("服务器不支持Range请求");
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new HttpRequestException($"请求失败: {response.StatusCode}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"执行错误: {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
var createdTimeStr = (string)data.file.metadata.created_time;
|
||||
var createTime = string.IsNullOrEmpty(createdTimeStr)
|
||||
? DateTime.Now
|
||||
: createdTimeStr.ToDateTime();
|
||||
var fileUpload = new LasaMediaFile()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
FlightId = flightId, // 计划id
|
||||
TaskId = taskAssign.TaskId, // 任务id
|
||||
DroneModelKey = data.file.ext.drone_model_key, // 无人机型号
|
||||
PayloadModelKey = data.file.ext.payload_model_key, //这应该可以标明是什么设置
|
||||
IsOriginal = data.file.ext.is_original,
|
||||
MediaIndex = data.file.ext.media_index,
|
||||
AbsoluteAltitude = data.file.metadata.absolute_altitude, // 拍摄绝对高度
|
||||
GimbalYawDegree = data.file.metadata.gimbal_yaw_degree, //云台偏航角度
|
||||
RelativeAltitude = data.file.metadata.relative_altitude, // 拍摄相对高度
|
||||
Lat = data.file.metadata.shoot_position.lat,
|
||||
Lng = data.file.metadata.shoot_position.lng,
|
||||
Name = data.file.name,
|
||||
ObjectKey = data.file.object_key,
|
||||
Path = data.file.path, // 目前这个好像没有值
|
||||
CreateTime = createTime,
|
||||
WorkspaceId = executeTask.WorkspaceId,
|
||||
ParentKey = folderKey[2],
|
||||
Tid = result.tid,
|
||||
Bid = result.bid,
|
||||
FlightType = flightType,
|
||||
Width = width,
|
||||
Height = height,
|
||||
minipic = suoluokey,
|
||||
Size = fileSize,
|
||||
ShowOnMap = 1,
|
||||
display = 1,
|
||||
FocalLength = focalLength,
|
||||
PayloadModelName = model,
|
||||
Type = type
|
||||
};
|
||||
// todo 添加事务
|
||||
await Repository.AsSugarClient().Insertable(fileUpload).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
if (result.need_reply.Equals(1))
|
||||
{
|
||||
var fileUploadCallbackEventReply = new FileUploadCallbackEventReply<object>()
|
||||
{
|
||||
bid = result.bid,
|
||||
tid = result.tid,
|
||||
method = "file_upload_callback",
|
||||
gateway = sn,
|
||||
data = new
|
||||
{
|
||||
result = 0
|
||||
},
|
||||
timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(),
|
||||
};
|
||||
_ = _mqttClientManager.PublishAsync($"thing/product/{sn}/events_reply",
|
||||
JsonConvert.SerializeObject(fileUploadCallbackEventReply));
|
||||
}
|
||||
|
||||
var expectFileCount = data.flight_task.expected_file_count;
|
||||
var uploadedFileCount = data.flight_task.uploaded_file_count;
|
||||
|
||||
var taskRecord = new LasaTask()
|
||||
{
|
||||
Id = taskId,
|
||||
ExpectedFileCount = expectFileCount, // 期望文件数量
|
||||
UploadedFileCount = uploadedFileCount // 已上传文件数量
|
||||
};
|
||||
// 当expectFileCount 等于uploadedFileCount时,则表示航线执行完成
|
||||
/*
|
||||
if (uploadedFileCount.Equals(expectFileCount))
|
||||
{
|
||||
taskRecord.Status = 5; // 成功状态
|
||||
}
|
||||
*/
|
||||
|
||||
await Repository.AsSugarClient().Updateable(taskRecord)
|
||||
.IgnoreNullColumns().ExecuteCommandAsync();
|
||||
|
||||
return new Response<bool>()
|
||||
{
|
||||
Result = true
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -96,7 +96,7 @@ public class ConfigSubscribe : IJob
|
|||
var result = JsonConvert.DeserializeObject<TopicServicesRequest<dynamic>>(message);
|
||||
var method = result.method;
|
||||
var data = result.data;
|
||||
_logger.LogInformation($"主题:{topic}\n消息:{message}");
|
||||
_logger.LogDebug($"主题:{topic}\n消息:{message}");
|
||||
long code = 0;
|
||||
switch (tempStr)
|
||||
{
|
||||
|
|
@ -205,12 +205,9 @@ public class ConfigSubscribe : IJob
|
|||
switch (method)
|
||||
{
|
||||
case "file_upload_callback":
|
||||
// todo 非图片文件添加文件大小
|
||||
// todo 添加媒体文件类型
|
||||
//
|
||||
// 文件上传
|
||||
_logger.LogInformation("进入文件上传处理");
|
||||
_logger.LogInformation($"文件上传处理:{message}");
|
||||
_logger.LogDebug("进入文件上传处理");
|
||||
_logger.LogDebug($"文件上传处理:{message}");
|
||||
int flightType = data.flight_task.flight_type;
|
||||
string flightId = data.file.ext.flight_id;
|
||||
var taskAssign = _manageApp.GetTaskAssignByFlightId(flightId);
|
||||
|
|
@ -226,27 +223,6 @@ public class ConfigSubscribe : IJob
|
|||
.Where(x => x.Id.Equals(parentKey)).CountAsync();
|
||||
if (isExist == 0)
|
||||
{
|
||||
/*var parents = new List<LasaMediaFile>(3);
|
||||
var parent1 = new LasaMediaFile()
|
||||
{
|
||||
Id = folderKey[0],
|
||||
FlightId = flightId,
|
||||
TaskId = taskId,
|
||||
ParentKey = "0",
|
||||
Name = folderKey[0],
|
||||
WorkspaceId = executeTask.WorkspaceId,
|
||||
};
|
||||
parents.Add(parent1);
|
||||
parent1 = new LasaMediaFile()
|
||||
{
|
||||
Id = folderKey[1],
|
||||
FlightId = flightId,
|
||||
TaskId = taskId,
|
||||
ParentKey = folderKey[0],
|
||||
Name = folderKey[1],
|
||||
WorkspaceId = executeTask.WorkspaceId,
|
||||
};
|
||||
parents.Add(parent1);*/
|
||||
var date = DateTime.Now;
|
||||
var timeStr = date.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
var parent1 = new LasaMediaFile()
|
||||
|
|
@ -272,7 +248,7 @@ public class ConfigSubscribe : IJob
|
|||
if (mediaFile == null)
|
||||
{
|
||||
var type = 0;
|
||||
var preSize = 512;
|
||||
var preSize = 1;
|
||||
// todo 判断是不是图片
|
||||
if (objectKey.EndsWith(".jpeg")) // todo 是否有其它类型的图片,待确定
|
||||
{
|
||||
|
|
@ -324,7 +300,7 @@ public class ConfigSubscribe : IJob
|
|||
if (contentRange != null)
|
||||
{
|
||||
fileSize = contentRange.Length.Value;
|
||||
Console.WriteLine(
|
||||
_logger.LogDebug(
|
||||
$"获取范围:{contentRange.From}-{contentRange.To}/{contentRange.Length}");
|
||||
}
|
||||
|
||||
|
|
@ -402,20 +378,20 @@ public class ConfigSubscribe : IJob
|
|||
await _minioService.PutObjectAsync("", data.file.name.ToString(), suoluokey,
|
||||
new MemoryStream(buffer));
|
||||
}
|
||||
else if (response.StatusCode == HttpStatusCode.OK)
|
||||
{
|
||||
// 服务器不支持Range请求,返回完整内容
|
||||
throw new InvalidOperationException("服务器不支持Range请求");
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new HttpRequestException($"请求失败: {response.StatusCode}");
|
||||
}
|
||||
}
|
||||
else if (response.StatusCode == HttpStatusCode.OK)
|
||||
{
|
||||
// 服务器不支持Range请求,返回完整内容
|
||||
throw new InvalidOperationException("服务器不支持Range请求");
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new HttpRequestException($"请求失败: {response.StatusCode}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"下载Range数据失败: {ex.Message}", ex);
|
||||
throw new Exception($"执行错误: {ex.Message}", ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -423,6 +399,7 @@ public class ConfigSubscribe : IJob
|
|||
var createTime = string.IsNullOrEmpty(createdTimeStr)
|
||||
? DateTime.Now
|
||||
: createdTimeStr.ToDateTime();
|
||||
_logger.LogDebug("执行到保存媒体文件之前");
|
||||
var fileUpload = new LasaMediaFile()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
private readonly HttpClient _httpClient;
|
||||
private readonly MinioService _minioService;
|
||||
|
||||
public AirportMaintenanceController(AirportMaintenanceApp app, MqttClientManager mqttClientManager, MqttMessageCenter mqttCenter, RedisCacheContext cache, HttpClient httpClient,MinioService minioService)
|
||||
public AirportMaintenanceController(AirportMaintenanceApp app, MqttClientManager mqttClientManager,
|
||||
MqttMessageCenter mqttCenter, RedisCacheContext cache, HttpClient httpClient, MinioService minioService)
|
||||
{
|
||||
_app = app;
|
||||
_mqttClientManager = mqttClientManager;
|
||||
|
|
@ -45,6 +46,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
_httpClient = httpClient;
|
||||
_minioService = minioService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 机场注册 注册码生成
|
||||
/// </summary>
|
||||
|
|
@ -75,7 +77,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
{
|
||||
device_binding_code = result.Result.DeviceBindingCode,
|
||||
organization_id = result.Result.OrgId
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -83,7 +84,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
string payload = JsonSerializer.Serialize(requestData);
|
||||
await _mqttClientManager.PublishAsync(topicRequest, payload);
|
||||
//在这个地方在接收一下?
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -94,6 +94,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 机场注册 注册码生成
|
||||
/// </summary>
|
||||
|
|
@ -125,6 +126,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取网关列表
|
||||
/// </summary>
|
||||
|
|
@ -149,6 +151,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
}
|
||||
|
||||
#region 固件版本管理
|
||||
|
||||
/// <summary>
|
||||
/// 添加固件版本
|
||||
/// </summary>
|
||||
|
|
@ -168,8 +171,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改无人机或机场版本
|
||||
/// </summary>
|
||||
|
|
@ -189,8 +194,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上传固件文件
|
||||
/// </summary>
|
||||
|
|
@ -205,6 +212,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
var path = await _app.UploadFile(xmlFile);
|
||||
return Ok(new { message = "上传成功", path });
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -244,19 +252,18 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
await Task.CompletedTask;
|
||||
});
|
||||
response.Result = 0;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.Message;
|
||||
}
|
||||
return response; ;
|
||||
|
||||
return response;
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 设置直播镜头
|
||||
/// </summary>
|
||||
|
|
@ -267,7 +274,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
Response<int> response = new Response<int>();
|
||||
try
|
||||
{
|
||||
|
||||
var videoids = zhiboReq.videoId.Split("/");
|
||||
var topicRequest = $"thing/product/" + videoids[0] + "/services";
|
||||
var requestData = new
|
||||
|
|
@ -296,15 +302,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
});
|
||||
|
||||
response.Result = 0;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.Message;
|
||||
}
|
||||
return response;
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -346,15 +351,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
});
|
||||
|
||||
response.Result = 0;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.Message;
|
||||
}
|
||||
return response;
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -378,7 +382,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
||||
data = new
|
||||
{
|
||||
|
||||
video_id = zhiboReq.videoId
|
||||
}
|
||||
};
|
||||
|
|
@ -396,17 +399,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
});
|
||||
|
||||
response.Result = 0;
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.Message;
|
||||
}
|
||||
return response;
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -439,13 +439,11 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
access_key_secret = "minioadmin",
|
||||
expire = 3600,
|
||||
security_token = "security_token"
|
||||
|
||||
},
|
||||
endpoint = "175.27.168.120:6013",
|
||||
object_key_prefix = "",
|
||||
provider = "ali",
|
||||
region = "hz"
|
||||
|
||||
},
|
||||
result = 0
|
||||
}
|
||||
|
|
@ -453,21 +451,17 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
|
||||
|
||||
response.Result = 0;
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.Message;
|
||||
}
|
||||
|
||||
return response;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 开始直播
|
||||
/// </summary>
|
||||
|
|
@ -507,21 +501,19 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
});
|
||||
|
||||
response.Result = 0;
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.Code = 500;
|
||||
response.Message = ex.Message;
|
||||
}
|
||||
return response;
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
#region redis 多用户控制
|
||||
|
||||
/// <summary>
|
||||
/// 添加修改mqtt客户端信息
|
||||
/// </summary>
|
||||
|
|
@ -570,6 +562,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
{
|
||||
await _cache.SetRemoveAsync(lockSetKey, info.UserId);
|
||||
}
|
||||
|
||||
result.Result = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -577,8 +570,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前用户mqtt客户端信息
|
||||
/// </summary>
|
||||
|
|
@ -597,8 +592,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private MqttClientResp ParseClient(HashEntry[] entries)
|
||||
{
|
||||
if (entries == null || entries.Length == 0)
|
||||
|
|
@ -613,6 +610,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
IsLock = bool.Parse(dict["IsLock"])
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有锁定的用户客户端信息
|
||||
/// </summary>
|
||||
|
|
@ -630,11 +628,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
if (entries.Length > 0)
|
||||
result.Add(ParseClient(entries));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 获取告警信息
|
||||
|
||||
/// <summary>
|
||||
/// 获取告警信息
|
||||
/// </summary>
|
||||
|
|
@ -646,12 +647,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
/// <param name="limit"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<Response<PageInfo<List<LasaManageDeviceHms>>>> GetManageDeviceHmsList(int level, int model, DateTime startTime, DateTime endTime, int page, int limit, string message,string getway)
|
||||
public async Task<Response<PageInfo<List<LasaManageDeviceHms>>>> GetManageDeviceHmsList(int level, int model,
|
||||
DateTime startTime, DateTime endTime, int page, int limit, string message, string getway)
|
||||
{
|
||||
var result = new Response<PageInfo<List<LasaManageDeviceHms>>>();
|
||||
try
|
||||
{
|
||||
result = await _app.GetManageDeviceHmsList(level, model, startTime, endTime, page, limit, message, getway);
|
||||
result = await _app.GetManageDeviceHmsList(level, model, startTime, endTime, page, limit, message,
|
||||
getway);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
@ -661,9 +664,11 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 日志信息
|
||||
|
||||
/// <summary>
|
||||
/// 根据设备sn读取实时数据
|
||||
/// </summary>
|
||||
|
|
@ -674,7 +679,8 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
/// <param name="limit"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<Response<PageInfo<List<LasaLog>>>> GetLogList(string sn, DateTime startTime, DateTime endTime, int page, int limit)
|
||||
public async Task<Response<PageInfo<List<LasaLog>>>> GetLogList(string sn, DateTime startTime, DateTime endTime,
|
||||
int page, int limit)
|
||||
{
|
||||
var result = new Response<PageInfo<List<LasaLog>>>();
|
||||
try
|
||||
|
|
@ -686,42 +692,50 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
[HttpGet]
|
||||
public async Task<Response<PageInfo<List<LasaMediaFile>>>> GetMediaFile(string taskId,string airId,string device,string picname, DateTime startTime, DateTime endTime, int page, int limit,string parentKey,int? objectKeyExist)
|
||||
public async Task<Response<PageInfo<List<LasaMediaFile>>>> GetMediaFile(string taskId, string airId,
|
||||
string device, int? type, string picname, DateTime startTime, DateTime endTime, int page, int limit,
|
||||
string parentKey, int? objectKeyExist)
|
||||
{
|
||||
var result = new Response<PageInfo<List<LasaMediaFile>>>();
|
||||
try
|
||||
{
|
||||
result = await _app.GetMediaFile(taskId,airId,device, picname,startTime, endTime, page, limit,parentKey,objectKeyExist);
|
||||
result = await _app.GetMediaFile(taskId, airId, device,type, picname, startTime, endTime, page, limit,
|
||||
parentKey, objectKeyExist);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<string>> UpdatePicStatus(string id, int showOnMap,int display,string fileTags,string graffitiJson)
|
||||
public async Task<Response<string>> UpdatePicStatus(string id, int showOnMap, int display, string fileTags,
|
||||
string graffitiJson)
|
||||
{
|
||||
var result = new Response<string>();
|
||||
try
|
||||
{
|
||||
result = await _app.UpdatePicStatus(id, showOnMap, display,fileTags,graffitiJson);
|
||||
result = await _app.UpdatePicStatus(id, showOnMap, display, fileTags, graffitiJson);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -739,6 +753,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -756,6 +771,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -774,8 +790,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<string>> getMiniPic()
|
||||
|
|
@ -783,9 +801,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
var result = new Response<string>();
|
||||
try
|
||||
{
|
||||
// string presignedUrl = "http://175.27.168.120:6014/test/44fc8b4b-9448-4e79-a71d-536d094b8598/ad854032-d4b7-42dc-8ac0-d1faef0ebc1e/DJI_202507231000_002_ad854032-d4b7-42dc-8ac0-d1faef0ebc1e/DJI_20250723100110_0001_V.jpeg";
|
||||
var imageStream = _minioService.GetObjectAsStream("test", "44fc8b4b-9448-4e79-a71d-536d094b8598/ad854032-d4b7-42dc-8ac0-d1faef0ebc1e/DJI_202507231000_002_ad854032-d4b7-42dc-8ac0-d1faef0ebc1e/DJI_20250723100110_0001_V.jpeg");
|
||||
// var imageStream = await _httpClient.GetStreamAsync(presignedUrl);
|
||||
// string presignedUrl = "http://175.27.168.120:6014/test/44fc8b4b-9448-4e79-a71d-536d094b8598/ad854032-d4b7-42dc-8ac0-d1faef0ebc1e/DJI_202507231000_002_ad854032-d4b7-42dc-8ac0-d1faef0ebc1e/DJI_20250723100110_0001_V.jpeg";
|
||||
var imageStream = _minioService.GetObjectAsStream("test",
|
||||
"44fc8b4b-9448-4e79-a71d-536d094b8598/ad854032-d4b7-42dc-8ac0-d1faef0ebc1e/DJI_202507231000_002_ad854032-d4b7-42dc-8ac0-d1faef0ebc1e/DJI_20250723100110_0001_V.jpeg");
|
||||
// var imageStream = await _httpClient.GetStreamAsync(presignedUrl);
|
||||
|
||||
using (var image = Image.Load(imageStream.Result))
|
||||
{
|
||||
|
|
@ -803,18 +822,20 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
{
|
||||
thumbnail.SaveAsJpeg(memoryStream); // 可以根据需要选择不同的格式,如Png, Bmp等。
|
||||
memoryStream.Position = 0; // 重置流的位置到开始处
|
||||
|
||||
|
||||
// 上传缩略图到MinIO
|
||||
await _minioService.PutObjectAsync("test" , "suolue_DJI_20250723100110_0001_V.jpeg", "abc/suolue_DJI_20250723100110_0001_V.jpeg", memoryStream); // 根据实际格式修改Content-Type
|
||||
await _minioService.PutObjectAsync("test", "suolue_DJI_20250723100110_0001_V.jpeg",
|
||||
"abc/suolue_DJI_20250723100110_0001_V.jpeg", memoryStream); // 根据实际格式修改Content-Type
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.Code = 500;
|
||||
result.Message = ex.Message;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -843,5 +843,12 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
return await _app.CreateMediaFolder(name,parentKey);
|
||||
}
|
||||
#endregion
|
||||
|
||||
[HttpPost]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<bool>> Test1111(string msg)
|
||||
{
|
||||
return await _app.Test1111(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue