zhangbin 4 weeks ago
commit 0cca478475

@ -409,7 +409,7 @@ namespace OpenAuth.App.ServiceApp
#endregion #endregion
public async Task<Response<PageInfo<List<LasaMediaFile>>>> GetMediaFile(string taskId, string airId,string device, 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; RefAsync<int> totalCount = 0;
using (var db = UnitWork.CreateContext()) 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(!"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(parentKey), (x, b) => x.ParentKey == parentKey)
.WhereIF(!string.IsNullOrEmpty(taskId), (x, b) => x.TaskId == taskId) .WhereIF(!string.IsNullOrEmpty(taskId), (x, b) => x.TaskId == taskId)
.WhereIF(type != null, (x, b) => x.Type == type)
.OrderBy((x, b) => x.CreateTime, OrderByType.Desc) .OrderBy((x, b) => x.CreateTime, OrderByType.Desc)
.Select((x,b) => new LasaMediaFile .Select((x,b) => new LasaMediaFile
{ {
@ -457,7 +458,8 @@ namespace OpenAuth.App.ServiceApp
AirLineName = b.TaskAirLineName, AirLineName = b.TaskAirLineName,
GimbalYawDegree = x.GimbalYawDegree, GimbalYawDegree = x.GimbalYawDegree,
RelativeAltitude = x.RelativeAltitude, RelativeAltitude = x.RelativeAltitude,
PayloadModelName = x.PayloadModelName PayloadModelName = x.PayloadModelName,
Type = x.Type
}) })
.ToPageListAsync(page, limit, totalCount); .ToPageListAsync(page, limit, totalCount);
return new Response<PageInfo<List<LasaMediaFile>>> return new Response<PageInfo<List<LasaMediaFile>>>

@ -1,12 +1,18 @@
using System.Drawing; using System.Drawing;
using System.Dynamic; using System.Dynamic;
using System.Net;
using System.Text; using System.Text;
using Infrastructure; using Infrastructure;
using Infrastructure.CloudSdk;
using Infrastructure.CloudSdk.minio; using Infrastructure.CloudSdk.minio;
using Infrastructure.CloudSdk.wayline; using Infrastructure.CloudSdk.wayline;
using Infrastructure.Extensions;
using Infrastructure.Helpers; using Infrastructure.Helpers;
using MetadataExtractor;
using MetadataExtractor.Formats.Exif;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Tokens;
using Microsoft.Net.Http.Headers;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using OpenAuth.App.BaseApp.Base; using OpenAuth.App.BaseApp.Base;
@ -22,6 +28,8 @@ using OpenAuth.Repository.Domain;
using OpenAuth.WebApi; using OpenAuth.WebApi;
using OpenAuth.WebApi.CloudSdk; using OpenAuth.WebApi.CloudSdk;
using SqlSugar; using SqlSugar;
using Directory = System.IO.Directory;
using RangeHeaderValue = System.Net.Http.Headers.RangeHeaderValue;
namespace OpenAuth.App.ServiceApp namespace OpenAuth.App.ServiceApp
{ {
@ -969,7 +977,8 @@ namespace OpenAuth.App.ServiceApp
?.Value<int>(); // {"0":"无雨","1":"小雨","2":"中雨","3":"大雨"} ?.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 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 result = JsonConvert.DeserializeObject<TopicServicesRequest<dynamic>>(message);
var method = result.method; var method = result.method;
var data = result.data; var data = result.data;
_logger.LogInformation($"主题:{topic}\n消息{message}"); _logger.LogDebug($"主题:{topic}\n消息{message}");
long code = 0; long code = 0;
switch (tempStr) switch (tempStr)
{ {
@ -205,12 +205,9 @@ public class ConfigSubscribe : IJob
switch (method) switch (method)
{ {
case "file_upload_callback": case "file_upload_callback":
// todo 非图片文件添加文件大小
// todo 添加媒体文件类型
//
// 文件上传 // 文件上传
_logger.LogInformation("进入文件上传处理"); _logger.LogDebug("进入文件上传处理");
_logger.LogInformation($"文件上传处理:{message}"); _logger.LogDebug($"文件上传处理:{message}");
int flightType = data.flight_task.flight_type; int flightType = data.flight_task.flight_type;
string flightId = data.file.ext.flight_id; string flightId = data.file.ext.flight_id;
var taskAssign = _manageApp.GetTaskAssignByFlightId(flightId); var taskAssign = _manageApp.GetTaskAssignByFlightId(flightId);
@ -226,27 +223,6 @@ public class ConfigSubscribe : IJob
.Where(x => x.Id.Equals(parentKey)).CountAsync(); .Where(x => x.Id.Equals(parentKey)).CountAsync();
if (isExist == 0) 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 date = DateTime.Now;
var timeStr = date.ToString("yyyy-MM-dd HH:mm:ss"); var timeStr = date.ToString("yyyy-MM-dd HH:mm:ss");
var parent1 = new LasaMediaFile() var parent1 = new LasaMediaFile()
@ -272,7 +248,7 @@ public class ConfigSubscribe : IJob
if (mediaFile == null) if (mediaFile == null)
{ {
var type = 0; var type = 0;
var preSize = 512; var preSize = 1;
// todo 判断是不是图片 // todo 判断是不是图片
if (objectKey.EndsWith(".jpeg")) // todo 是否有其它类型的图片,待确定 if (objectKey.EndsWith(".jpeg")) // todo 是否有其它类型的图片,待确定
{ {
@ -324,7 +300,7 @@ public class ConfigSubscribe : IJob
if (contentRange != null) if (contentRange != null)
{ {
fileSize = contentRange.Length.Value; fileSize = contentRange.Length.Value;
Console.WriteLine( _logger.LogDebug(
$"获取范围:{contentRange.From}-{contentRange.To}/{contentRange.Length}"); $"获取范围:{contentRange.From}-{contentRange.To}/{contentRange.Length}");
} }
@ -402,20 +378,20 @@ public class ConfigSubscribe : IJob
await _minioService.PutObjectAsync("", data.file.name.ToString(), suoluokey, await _minioService.PutObjectAsync("", data.file.name.ToString(), suoluokey,
new MemoryStream(buffer)); new MemoryStream(buffer));
} }
else if (response.StatusCode == HttpStatusCode.OK) }
{ else if (response.StatusCode == HttpStatusCode.OK)
// 服务器不支持Range请求返回完整内容 {
throw new InvalidOperationException("服务器不支持Range请求"); // 服务器不支持Range请求返回完整内容
} throw new InvalidOperationException("服务器不支持Range请求");
else }
{ else
throw new HttpRequestException($"请求失败: {response.StatusCode}"); {
} throw new HttpRequestException($"请求失败: {response.StatusCode}");
} }
} }
catch (Exception ex) 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) var createTime = string.IsNullOrEmpty(createdTimeStr)
? DateTime.Now ? DateTime.Now
: createdTimeStr.ToDateTime(); : createdTimeStr.ToDateTime();
_logger.LogDebug("执行到保存媒体文件之前");
var fileUpload = new LasaMediaFile() var fileUpload = new LasaMediaFile()
{ {
Id = Guid.NewGuid().ToString(), Id = Guid.NewGuid().ToString(),

@ -36,7 +36,8 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
private readonly HttpClient _httpClient; private readonly HttpClient _httpClient;
private readonly MinioService _minioService; 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; _app = app;
_mqttClientManager = mqttClientManager; _mqttClientManager = mqttClientManager;
@ -45,6 +46,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
_httpClient = httpClient; _httpClient = httpClient;
_minioService = minioService; _minioService = minioService;
} }
/// <summary> /// <summary>
/// 机场注册 注册码生成 /// 机场注册 注册码生成
/// </summary> /// </summary>
@ -75,7 +77,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
{ {
device_binding_code = result.Result.DeviceBindingCode, device_binding_code = result.Result.DeviceBindingCode,
organization_id = result.Result.OrgId organization_id = result.Result.OrgId
} }
} }
} }
@ -83,7 +84,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
string payload = JsonSerializer.Serialize(requestData); string payload = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync(topicRequest, payload); await _mqttClientManager.PublishAsync(topicRequest, payload);
//在这个地方在接收一下? //在这个地方在接收一下?
} }
} }
catch (Exception ex) catch (Exception ex)
@ -94,6 +94,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
return result; return result;
} }
/// <summary> /// <summary>
/// 机场注册 注册码生成 /// 机场注册 注册码生成
/// </summary> /// </summary>
@ -125,6 +126,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
return result; return result;
} }
/// <summary> /// <summary>
/// 获取网关列表 /// 获取网关列表
/// </summary> /// </summary>
@ -149,6 +151,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
} }
#region 固件版本管理 #region 固件版本管理
/// <summary> /// <summary>
/// 添加固件版本 /// 添加固件版本
/// </summary> /// </summary>
@ -168,8 +171,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
/// <summary> /// <summary>
/// 修改无人机或机场版本 /// 修改无人机或机场版本
/// </summary> /// </summary>
@ -189,8 +194,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
/// <summary> /// <summary>
/// 上传固件文件 /// 上传固件文件
/// </summary> /// </summary>
@ -205,6 +212,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
var path = await _app.UploadFile(xmlFile); var path = await _app.UploadFile(xmlFile);
return Ok(new { message = "上传成功", path }); return Ok(new { message = "上传成功", path });
} }
#endregion #endregion
/// <summary> /// <summary>
@ -244,19 +252,18 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
await Task.CompletedTask; await Task.CompletedTask;
}); });
response.Result = 0; response.Result = 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
response.Code = 500; response.Code = 500;
response.Message = ex.Message; response.Message = ex.Message;
} }
return response; ;
return response;
;
} }
/// <summary> /// <summary>
/// 设置直播镜头 /// 设置直播镜头
/// </summary> /// </summary>
@ -267,7 +274,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
Response<int> response = new Response<int>(); Response<int> response = new Response<int>();
try try
{ {
var videoids = zhiboReq.videoId.Split("/"); var videoids = zhiboReq.videoId.Split("/");
var topicRequest = $"thing/product/" + videoids[0] + "/services"; var topicRequest = $"thing/product/" + videoids[0] + "/services";
var requestData = new var requestData = new
@ -296,15 +302,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
}); });
response.Result = 0; response.Result = 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
response.Code = 500; response.Code = 500;
response.Message = ex.Message; response.Message = ex.Message;
} }
return response;
return response;
} }
@ -346,15 +351,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
}); });
response.Result = 0; response.Result = 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
response.Code = 500; response.Code = 500;
response.Message = ex.Message; response.Message = ex.Message;
} }
return response;
return response;
} }
@ -378,7 +382,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new data = new
{ {
video_id = zhiboReq.videoId video_id = zhiboReq.videoId
} }
}; };
@ -396,17 +399,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
}); });
response.Result = 0; response.Result = 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
response.Code = 500; response.Code = 500;
response.Message = ex.Message; response.Message = ex.Message;
} }
return response;
return response;
} }
@ -439,13 +439,11 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
access_key_secret = "minioadmin", access_key_secret = "minioadmin",
expire = 3600, expire = 3600,
security_token = "security_token" security_token = "security_token"
}, },
endpoint = "175.27.168.120:6013", endpoint = "175.27.168.120:6013",
object_key_prefix = "", object_key_prefix = "",
provider = "ali", provider = "ali",
region = "hz" region = "hz"
}, },
result = 0 result = 0
} }
@ -453,21 +451,17 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
response.Result = 0; response.Result = 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
response.Code = 500; response.Code = 500;
response.Message = ex.Message; response.Message = ex.Message;
} }
return response;
return response;
} }
/// <summary> /// <summary>
/// 开始直播 /// 开始直播
/// </summary> /// </summary>
@ -507,21 +501,19 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
}); });
response.Result = 0; response.Result = 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
response.Code = 500; response.Code = 500;
response.Message = ex.Message; response.Message = ex.Message;
} }
return response;
return response;
} }
#region redis 多用户控制 #region redis 多用户控制
/// <summary> /// <summary>
/// 添加修改mqtt客户端信息 /// 添加修改mqtt客户端信息
/// </summary> /// </summary>
@ -570,6 +562,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
{ {
await _cache.SetRemoveAsync(lockSetKey, info.UserId); await _cache.SetRemoveAsync(lockSetKey, info.UserId);
} }
result.Result = true; result.Result = true;
} }
catch (Exception ex) catch (Exception ex)
@ -577,8 +570,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
/// <summary> /// <summary>
/// 获取当前用户mqtt客户端信息 /// 获取当前用户mqtt客户端信息
/// </summary> /// </summary>
@ -597,8 +592,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
private MqttClientResp ParseClient(HashEntry[] entries) private MqttClientResp ParseClient(HashEntry[] entries)
{ {
if (entries == null || entries.Length == 0) if (entries == null || entries.Length == 0)
@ -613,6 +610,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
IsLock = bool.Parse(dict["IsLock"]) IsLock = bool.Parse(dict["IsLock"])
}; };
} }
/// <summary> /// <summary>
/// 获取所有锁定的用户客户端信息 /// 获取所有锁定的用户客户端信息
/// </summary> /// </summary>
@ -630,11 +628,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
if (entries.Length > 0) if (entries.Length > 0)
result.Add(ParseClient(entries)); result.Add(ParseClient(entries));
} }
return result; return result;
} }
#endregion #endregion
#region 获取告警信息 #region 获取告警信息
/// <summary> /// <summary>
/// 获取告警信息 /// 获取告警信息
/// </summary> /// </summary>
@ -646,12 +647,14 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="limit"></param> /// <param name="limit"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet] [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>>>(); var result = new Response<PageInfo<List<LasaManageDeviceHms>>>();
try 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) catch (Exception ex)
{ {
@ -661,9 +664,11 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
return result; return result;
} }
#endregion #endregion
#region 日志信息 #region 日志信息
/// <summary> /// <summary>
/// 根据设备sn读取实时数据 /// 根据设备sn读取实时数据
/// </summary> /// </summary>
@ -674,7 +679,8 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="limit"></param> /// <param name="limit"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet] [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>>>(); var result = new Response<PageInfo<List<LasaLog>>>();
try try
@ -686,42 +692,50 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
#endregion #endregion
[HttpGet] [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>>>(); var result = new Response<PageInfo<List<LasaMediaFile>>>();
try 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) catch (Exception ex)
{ {
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
[HttpGet] [HttpGet]
[AllowAnonymous] [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>(); var result = new Response<string>();
try try
{ {
result = await _app.UpdatePicStatus(id, showOnMap, display,fileTags,graffitiJson); result = await _app.UpdatePicStatus(id, showOnMap, display, fileTags, graffitiJson);
} }
catch (Exception ex) catch (Exception ex)
{ {
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
@ -739,6 +753,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
@ -756,6 +771,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
@ -774,8 +790,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
[HttpGet] [HttpGet]
[AllowAnonymous] [AllowAnonymous]
public async Task<Response<string>> getMiniPic() public async Task<Response<string>> getMiniPic()
@ -783,9 +801,10 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
var result = new Response<string>(); var result = new Response<string>();
try 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"; // 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 = _minioService.GetObjectAsStream("test",
// var imageStream = await _httpClient.GetStreamAsync(presignedUrl); "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)) using (var image = Image.Load(imageStream.Result))
{ {
@ -803,18 +822,20 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
{ {
thumbnail.SaveAsJpeg(memoryStream); // 可以根据需要选择不同的格式如Png, Bmp等。 thumbnail.SaveAsJpeg(memoryStream); // 可以根据需要选择不同的格式如Png, Bmp等。
memoryStream.Position = 0; // 重置流的位置到开始处 memoryStream.Position = 0; // 重置流的位置到开始处
// 上传缩略图到MinIO // 上传缩略图到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) catch (Exception ex)
{ {
result.Code = 500; result.Code = 500;
result.Message = ex.Message; result.Message = ex.Message;
} }
return result; return result;
} }
} }
} }

@ -843,5 +843,12 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
return await _app.CreateMediaFolder(name,parentKey); return await _app.CreateMediaFolder(name,parentKey);
} }
#endregion #endregion
[HttpPost]
[AllowAnonymous]
public async Task<Response<bool>> Test1111(string msg)
{
return await _app.Test1111(msg);
}
} }
} }
Loading…
Cancel
Save