Merge remote-tracking branch 'origin/main'

feature-flyModify
陈伟 2025-06-13 14:15:53 +08:00
commit f6d0af348b
3 changed files with 314 additions and 6 deletions

View File

@ -282,13 +282,22 @@ namespace OpenAuth.App.ServiceApp
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public async Task<Response<List<dynamic>>> GetWorkspaceList(string key)
public async Task<Response<List<dynamic>>> GetWorkspaceList(int isjoin,string key,int state,string order= "\"CreateTime\" desc")
{
RefAsync<int> totalCount = 0;
using (var db = UnitWork.CreateContext())
{
var userid = _auth.GetCurrentUser().User.Id;
List<string> ids=new List<string>();
if (isjoin == 1)
{
ids=db.LasaSpaceUser.AsQueryable().Where(r=>r.UserId== userid)?.Select(r => r.WorkSpaceId).ToList();
}
var list = await db.LasaWorkspace.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(key), a => a.WorkspaceName.Contains(key))
.WhereIF(state != 0, a => a.Sate == state)
.WhereIF(isjoin == 1, a => ids.Contains(a.Id))
.WhereIF(isjoin == 2, a => !ids.Contains(a.Id))
.LeftJoin<SysUser>((a, u) => a.CreateId == u.Id)
.Select<dynamic>((a, u) => new
{
@ -299,9 +308,12 @@ namespace OpenAuth.App.ServiceApp
a.CreateTime,
a.CreateId,
u.Account,
u.Name
})
u.Name,
UserNames = SqlFunc.Subqueryable<LasaSpaceUser>().Where(r => r.WorkSpaceId == a.Id).LeftJoin<SysUser>((r, s) => r.UserId == s.Id).SelectStringJoin((r, s) => s.Name, ",")
}).MergeTable()
.OrderBy(order)
.ToListAsync();
return new Response<List<dynamic>>
{
Result = list
@ -469,6 +481,21 @@ namespace OpenAuth.App.ServiceApp
}
}
//归档项目
public async Task<Response<bool>> CompleteWorkspace(string id)
{
using (var db = UnitWork.CreateContext())
{
await db.LasaWorkspace.UpdateAsync(u => new LasaWorkspace
{
Sate = 2
}, u => u.Id == id);
if (db.Commit())
return new Response<bool> { Result = true, Message = "归档成功" };
else
return new Response<bool> { Result = false, Message = "归档失败" };
}
}
#endregion
public async Task ExecuteFlyTask(string taskId)

View File

@ -71,5 +71,274 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
return result;
}
/// <summary>
/// 切换相机
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<Response<int>> ExchangeCamera(string camera,int position,string videoId)
{
Response<int> response = new Response<int>();
try
{
var topicRequest = $"thing/product/8UUXN5400A079H/services";
var requestData = new
{
bid = Guid.NewGuid().ToString(),
method = "live_camera_change",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
camera_position = position,
video_id = "8UUXN5400A079H/165-0-7/normal-0"
}
};
string payload = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync(topicRequest, payload);
var topicRequest1 = $"thing/product/8UUXN5400A079H/services_reply";
var requestData1 = new
{
bid = Guid.NewGuid().ToString(),
method = "live_camera_change",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
result = 0
}
};
string payload1 = JsonSerializer.Serialize(requestData1);
await _mqttClientManager.PublishAsync(topicRequest1, payload1);
response.Result = 1;
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response; ;
}
/// <summary>
/// 设置直播镜头
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<Response<int>> SetCamera(string cameraType, string videoId)
{
Response<int> response = new Response<int>();
try
{
var topicRequest = $"thing/product/8UUXN5400A079H/services";
var requestData = new
{
bid = Guid.NewGuid().ToString(),
method = "live_lens_change",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
video_type = cameraType,
video_id = "8UUXN5400A079H/165-0-7/normal-0"
}
};
string payload = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync(topicRequest, payload);
var topicRequest1 = $"thing/product/8UUXN5400A079H/services_reply";
var requestData1 = new
{
bid = Guid.NewGuid().ToString(),
method = "live_lens_change",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
result = 0
}
};
string payload1 = JsonSerializer.Serialize(requestData1);
await _mqttClientManager.PublishAsync(topicRequest1, payload1);
response.Result = 1;
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
/// <summary>
/// 设置直播清晰度
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<Response<int>> SetCameraVideo(int videoQuality, string videoId)
{
Response<int> response = new Response<int>();
try
{
var topicRequest = $"thing/product/8UUXN5400A079H/services";
var requestData = new
{
bid = Guid.NewGuid().ToString(),
method = "live_set_quality",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
video_quality = videoQuality,
video_id = "8UUXN5400A079H/165-0-7/normal-0"
}
};
string payload = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync(topicRequest, payload);
var topicRequest1 = $"thing/product/8UUXN5400A079H/services_reply";
var requestData1 = new
{
bid = Guid.NewGuid().ToString(),
method = "live_set_quality",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
result = 0
}
};
string payload1 = JsonSerializer.Serialize(requestData1);
await _mqttClientManager.PublishAsync(topicRequest1, payload1);
response.Result = 1;
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
/// <summary>
/// 停止直播
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<Response<int>> EndLive( string videoId)
{
Response<int> response = new Response<int>();
try
{
var topicRequest = $"thing/product/8UUXN5400A079H/services";
var requestData = new
{
bid = Guid.NewGuid().ToString(),
method = "live_stop_push",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
video_id = "8UUXN5400A079H/165-0-7/normal-0"
}
};
string payload = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync(topicRequest, payload);
var topicRequest1 = $"thing/product/8UUXN5400A079H/services_reply";
var requestData1 = new
{
bid = Guid.NewGuid().ToString(),
method = "live_start_push",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
result = 0
}
};
string payload1 = JsonSerializer.Serialize(requestData1);
await _mqttClientManager.PublishAsync(topicRequest1, payload1);
response.Result = 1;
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
/// <summary>
/// 开始直播
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<Response<int>> StartLive(string videoId,int urlType,string url,int quality)
{
Response<int> response = new Response<int>();
try
{
var topicRequest = $"thing/product/8UUXN5400A079H/services";
var requestData = new
{
bid = Guid.NewGuid().ToString(),
method = "live_start_push",
tid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
data = new
{
url_type = urlType,
url = url,
video_quality = quality,
video_id = "8UUXN5400A079H/165-0-7/normal-0"
}
};
string payload = JsonSerializer.Serialize(requestData);
await _mqttClientManager.PublishAsync(topicRequest, payload);
response.Result = 1;
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.Message;
}
return response;
}
}
}

View File

@ -294,15 +294,18 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <summary>
/// 获取项目列表
/// </summary>
/// <param name="key"></param>
/// <param name="isjoin">是否是已加入的项目0全部1加入2未加入</param>
/// <param name="key">项目名称筛选</param>
/// <param name="state">状态0全部1进行中2已归档</param>
/// <param name="order">排序</param>
/// <returns></returns>
[HttpGet]
public async Task<Response<List<dynamic>>> GetWorkspaceList(string key)
public async Task<Response<List<dynamic>>> GetWorkspaceList(int isjoin, string key, int state, string order = "\"CreateTime\" desc")
{
var result = new Response<List<dynamic>>();
try
{
result = await _app.GetWorkspaceList(key);
result = await _app.GetWorkspaceList(isjoin,key,state,order);
}
catch (Exception ex)
{
@ -343,6 +346,15 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
return await _app.DeleteWorkspace(id);
}
/// <summary>
/// 归档项目
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<Response<bool>> CompleteWorkspace(string id)
{
return await _app.CompleteWorkspace(id);
}
/// <summary>
/// 获取机场列表,添加项目使用
/// </summary>