using System; using System.Threading.Tasks; using Abp.Auditing; using Abp.Configuration; using Abp.Domain.Repositories; using Abp.Runtime.Caching; using IwbZero.ToolCommon; using IwbZero.ToolCommon.StringModel; using WeEngine.CommonDto; using WePlatform.Configuration; using WePlatform.ThirdPartySystem; namespace WePlatform.DataCenter.MessageServer { /// /// 消息服务 /// [DisableAuditing] public class MessageServerAppService:DataCenterAppServiceBase, IMessageServerAppService { public MessageServerAppService(ICacheManager cacheManager, IRepository tpsRepository) { TpsRepository = tpsRepository; CacheManager = cacheManager; } private string ServiceIp => SettingManager.GetSettingValue(IwbSettingNames.MqttServiceIp); private int ServicePort => GetServicePort(); private int HttpServicePort => GetServicePort(true); private int GetServicePort(bool isHttp=false) { var portStr = SettingManager.GetSettingValue(isHttp ? IwbSettingNames.HttpMqttServicePort : IwbSettingNames.MqttServicePort); if (int.TryParse(portStr, out var port)) { return port; } return 0; } protected IRepository TpsRepository { get; } /// /// 获取客户端配置数据 /// /// /// [DisableAuditing] public async Task GetClient(string appId) { var entity = await TpsRepository.FirstOrDefaultAsync(a => a.AppId == appId); if (entity == null) { CheckErrors($"未查询到Id为【{appId}】的应用!"); return null; } if (!entity.IsActive) { CheckErrors($"应用已被锁定,请联系管理员!"); } if (entity.ExpiredDate != null && entity.ExpiredDate < DateTime.Now.Date) { CheckErrors($"应用已过期,请联系管理员!"); } if (!entity.IsRegistered) { string url = $"{ServiceIp}:{HttpServicePort}/api/mqtt/regClient"; var result = url.RequestPost(new { Id=entity.AppId, ClientName= entity.Name, Password= entity.SecretKey, ClientState=1 }.Obj2String()); if (result != null && result.Contains("\"isSuccess\":true")) { entity.IsRegistered = true; await TpsRepository.UpdateAsync(entity); } } return new MsgClientDto() { AppId = appId, Name = entity.Name, SecretKey = entity.SecretKey, ServerIp = ServiceIp, ServerPort =ServicePort }; } } }