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; } } }