using APT.BaseData.Domain.Entities;
using APT.Infrastructure.Api;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.IServices.FM;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal;
using APT.BaseData.Domain.ApiModel;
using APT.BaseData.Domain.Enums;
using Microsoft.EntityFrameworkCore.Internal;
using System.Linq;
using IdentityModel;
using System.Data.Common;
using APT.Utility;
using APT.Infrastructure.Core;
namespace APT.PF.WebApiControllers.Api.PF
{
///
/// WebSocket信息
///
[Route("api/PF/WebSocketInfo")]
public partial class WebSocketInfoController : AuthorizeApiController
{
///
/// 联合添加
///
///
/// 实体
///
///
[HttpPost, Route("ConcurrencyNum")]
public JsonActionResult ConcurrencyNum([FromBody]KeywordFilter filter)
{
return base.SafeExecute(() =>
{
return WebSocketServiceHelper.ClintInfos.Count;
});
}
///
/// 联合添加
///
///
/// 实体
///
///
[HttpGet, Route("JobDelete")]
public JsonActionResult JobDelete(string id)
{
return base.SafeExecute(() =>
{
var data = this.GetEntity(id);
if (data == null)
this.ThrowError("20002");
var extConnConfigService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService();
var connParam = extConnConfigService.GetConfigParam(data.ORG_ID ?? Guid.Empty, "D001");
if (connParam == null)
this.ThrowError("20002");
var conn = connParam["Conn"];
if (string.IsNullOrEmpty(conn))
this.ThrowError("20002");
var dbConn = this.InitDbConnection(DataBaseType.Postgresql, conn);
var clientEnable = data.ENABLE_STATUS == (int)(FMEnableStatusEnum.启用) ? true : false;
var sql = $"SELECT \"Id\", \"Enabled\", \"ClientId\", \"ClientName\" FROM public.\"Clients\" where \"ClientId\"='{data.APP_ID}'";
bool isUpdate;
int clientId;
QueryClient(dbConn, sql, out isUpdate, out clientId);
if (isUpdate)
{
var commitSql = $"delete from \"Clients\" where \"Id\"='{clientId}'";
//查询scops
var deleteScops = $"DELETE FROM \"ClientScopes\" WHERE \"ClientId\"='{clientId}'";
var commitSecret = $"delete from \"ClientSecrets\" where \"ClientId\"='{clientId}'";
var clientGrantSql = $"delete from \"ClientGrantTypes\" where \"ClientId\"='{clientId}'";
//2.scop表
this.ExecuteNonQueryByConn(DataBaseType.Postgresql, dbConn, System.Data.CommandType.Text, deleteScops, null, false);
//3.Secret表
this.ExecuteNonQueryByConn(DataBaseType.Postgresql, dbConn, System.Data.CommandType.Text, commitSecret, null, false);
//4.grantType表
this.ExecuteNonQueryByConn(DataBaseType.Postgresql, dbConn, System.Data.CommandType.Text, clientGrantSql, null, false);
//1.client表
this.ExecuteNonQueryByConn(DataBaseType.Postgresql, dbConn, System.Data.CommandType.Text, commitSql, null, true);
}
//4.内部数据
this.UnifiedCommit(() =>
{
this.DeleteEntityNoCommit(i => i.DATA_CHANNEL_ID == data.ID);
this.DeleteEntityNoCommit(id);
});
return true;
});
}
private void QueryClient(DbConnection dbConn, string sql, out bool isUpdate, out int clientId)
{
var update = false;
var id = 0;
this.ExecuteReaderPageByConn(DataBaseType.Postgresql, dbConn, System.Data.CommandType.Text, sql,
null, 0, 1, (reader) =>
{
while (reader.Read())
{
update = true;
id = Convert.ToInt32(reader.GetValue(0));
}
}, false);
isUpdate = update;
clientId = id;
}
}
}