//获取配置信息 internal BPServerConfig GetServerConfig(BPServerConfig serverConfig) { IList <BPServerConfig> serverConfigFlag = bpServerConfigServer.GetBPServerConfigByKey(serverConfig); if (serverConfigFlag != null && serverConfigFlag.Count > 0) { return(serverConfigFlag[0]); } return(null); }
/// <summary> /// 获取服务器某块的svc服务是否在本地配置存在 /// </summary> internal string GetServerModelStr() { BPServerConfig serverConfig = GetServerConfig(); if (serverConfig != null) { return(serverConfig.BusinessLogicAddress); } return(""); }
/// <summary> /// 需要配置的服务信息 /// </summary> /// <param name="serverConfig">ServerConfig 实体</param> public void InsertBPServerConfig(BPServerConfig serverConfig) { try { using (var sessionFactory = nhFactory.GetRepositoryFor <BPServerConfig>()) { sessionFactory.Session.BeginTransaction(); sessionFactory.Save(serverConfig); sessionFactory.Session.CommitChanges(); } } catch (BPCloudException e) { throw new BPCloudException("error line 78", e, myLog); } }
//获取配置信息 internal BPServerConfig GetServerConfig() { BPServerConfig bpServerConfig = new BPServerConfig(); bpServerConfig.Domain = "default"; IList <BPServerConfig> bpServerConfigFlag = bpServerConfigServer.GetBPServerConfigByDomain(bpServerConfig); if (bpServerConfigFlag == null && bpServerConfigFlag.Count == 0) { bpServerConfig.BPServerConfigId = 3; bpServerConfigFlag.Add(bpServerConfig); return(GetServerConfig(bpServerConfigFlag[0])); } else { return(bpServerConfigFlag[0]); } }
/// <summary> /// 查询本地配置的需要的服务器位置 GetBPServerConfigById /// </summary> /// <param name="serverConfig"> BPServerConfig 实体</param> /// <returns></returns> public IList <BPServerConfig> GetBPServerConfigByKey(BPServerConfig serverConfig) { IList <BPServerConfig> serverConfigFlag = null; try { using (var sessionFactory = nhFactory.GetRepositoryFor <BPServerConfig>()) { sessionFactory.Session.BeginTransaction(); serverConfigFlag = sessionFactory.Session.GetISession() .CreateQuery(" FROM BPServerConfig AS s WHERE s.BPServerConfigId=? ") .SetInt32(0, serverConfig.BPServerConfigId).List <BPServerConfig>(); sessionFactory.Session.CommitChanges(); } } catch (BPCloudException e) { throw new BPCloudException("error line 47", e, myLog); } return(serverConfigFlag); }
/// <summary> /// 为各客户端提供播放流需要的相关信息 GetStreamerParameterByCustomerToken /// </summary> /// <param name="channel">channel.ChannelId</param> /// <param name="customerToken">Token</param> /// <param name="streamerParmeter">ref 流媒体播放参数</param> /// <returns></returns> public ResponseBaseDto GetStreamerParameterByCustomerToken(Channel channel, string customerToken, ref BP4StreamerParameter streamerParmeter) { ResponseBaseDto dto = new ResponseBaseDto(); try { UserTokenCache utc = UserTokenCache.GetInstance(); if (utc.IsValid(customerToken) == false) { dto.Code = (int)CodeEnum.ServerNoToken; dto.Message = "用户token已失效,请重新登录后继续"; } else { /* channel.ChannelId 通道Id * channel.DeviceId 设备Id * bpServerConfig.BPServerConfigId 设备调用时需要的源 * 3个参数不可缺少 */ if (channel == null) { dto.Code = (int)CodeEnum.NoComplete; dto.Message = "提交数据不完整"; return(dto); } IList <Channel> channelFlag = channelServer.SelectChannelByChannelId(channel); if (channelFlag == null || channelFlag.Count <= 0) { dto.Code = (int)CodeEnum.NoHardWare; dto.Message = "未找到需要的通道"; return(dto); } Device device = new Device(); device.DeviceId = channelFlag[0].DeviceId; IList <Device> deviceFlag = deviceServer.SelectDeviceByDeviceId(device); if (deviceFlag == null || deviceFlag.Count <= 0) { dto.Code = (int)CodeEnum.NoHardWare; dto.Message = "未找到需要的设备"; return(dto); } BPServerConfig bpServerConfig = new BPServerConfig(); bpServerConfig.BPServerConfigId = deviceFlag[0].BPServerConfigId; IList <BPServerConfig> bpServerConfigFlag = bpServerConfigServer.GetBPServerConfigByKey(bpServerConfig); if (bpServerConfigFlag == null || bpServerConfigFlag.Count <= 0) { dto.Code = (int)CodeEnum.NoHardWare; dto.Message = "没有找到需要请求流媒体的服务端"; return(dto); } //进行必须的流媒体配置 streamerParmeter.LoginModel = new BP4DeviceLoginModel(); streamerParmeter.RealStreamModel = new BP4RealStreamModel(); streamerParmeter.CustomerToken = customerToken; streamerParmeter.LoginModel.Address = deviceFlag[0].SerialNumber;//设备的SN码 IP不可使用 streamerParmeter.LoginModel.AddressType = 5; streamerParmeter.PlayerType = 2; if (deviceFlag[0].UserName != null && deviceFlag[0].UserName != "") { streamerParmeter.LoginModel.UserName = deviceFlag[0].UserName; } if (deviceFlag[0].PassWord != null && deviceFlag[0].PassWord != "") { streamerParmeter.LoginModel.Password = MDKey.Encrypt(deviceFlag[0].PassWord); } streamerParmeter.RealStreamModel.Channel = channelFlag[0].ChannelNumber; //该通道所属设备的插槽号 streamerParmeter.RealStreamModel.ChannelId = channel.ChannelId; //本地的通道Id if (bpServerConfigFlag[0].StreamerPublicAddress.IndexOf(":") != -1) { string[] streamerAddress = bpServerConfigFlag[0].StreamerPublicAddress.Split(':'); streamerParmeter.RestServIp = streamerAddress[0]; streamerParmeter.RestServPort = Convert.ToInt32(streamerAddress[1]); } streamerParmeter.RealStreamModel.SubStream = 0; streamerParmeter.RealStreamModel.TransProc = 0; dto.Code = (int)CodeEnum.Success; dto.Message = "流媒体参数已准备完成"; }/*end if(utc.IsValid(customerToken) == false)*/ } catch (Exception ex) { dto.Code = (int)CodeEnum.ApplicationErr; dto.Message = "网络异常,请刷新页面后继续"; myLog.ErrorFormat("GetStreamerParameterByCustomerToken方法异常,通道Id:{0}", ex, channel.ChannelId); } return(dto); }
/// <summary> /// 1添加设备 2初次添加设备通道 /// </summary> /// <returns>ResponseBaseDto</returns> public ResponseBaseDto AddDevice(string deviceName, string serialNumber, string customerToken) { ResponseBaseDto dto = new ResponseBaseDto(); TokenCacheProperty tcp = new TokenCacheProperty(); UserTokenCache utc = UserTokenCache.GetInstance(); OperaterLog oLog = new OperaterLog(); oLog.Action = " 添加设备 "; try { dto = bllHelper.CheckCustomer(dto, customerToken, ref tcp); //获取 判定token if (utc.IsValid(customerToken) == false) { dto.Code = (int)CodeEnum.ServerNoToken; dto.Message = "Token已失效"; } else { Device device = new Device(); device.SerialNumber = serialNumber; IList <Device> deviceFlag = deviceServer.SelectDeviceSerialNumber(device); if (device != null && deviceFlag.Count != 0) { //设备被添加过 dto.Code = (int)CodeEnum.NoHardWare; dto.Message = "此设备正在被使用中"; oLog.Result = dto.Code; oLog.Remarks = dto.Message; bllHelper.AddOperaterLog(oLog, tcp); return(dto); } //参数 0=IP 3等于 CN AddDeviceResponseDto result = AddDeviceMethod(serialNumber); if (result != null && result.Success == true) { //添加本地设备列表 Bsr.Cloud.Model.Entities.Device dev = new Model.Entities.Device(); dev.SerialNumber = result.DeviceDto.AddDeviceEntity.SerialNumber; dev.BPServerDeviceId = result.DeviceDto.AddDeviceEntity.Id; if (deviceName == null || deviceName == "") { deviceName = "BStar"; } dev.DeviceName = deviceName; // 序列号添加时填3,需用IDeviceEntity.getDeviceType获取真正实际类型 dev.DeviceType = result.DeviceDto.AddDeviceEntity.AddMode; dev.HardwareType = result.DeviceDto.AddDeviceEntity.HardwareType; dev.CustomerId = tcp.CustomerId; dev.UserName = result.DeviceDto.AddDeviceEntity.User; dev.PassWord = result.DeviceDto.AddDeviceEntity.Password; //以规则需要定义服务器位置 BPServerConfig bpServerConfig = new BPServerConfig(); bpServerConfig.Domain = "default"; IList <BPServerConfig> bpServerConfigFlag = bpServerConfigServer.GetBPServerConfigByDomain(bpServerConfig); if (bpServerConfigFlag != null && bpServerConfigFlag.Count != 0) { dev.BPServerConfigId = bpServerConfigFlag[0].BPServerConfigId; } else { dev.BPServerConfigId = 1; //需修改 } int deviceId = deviceServer.InsertDevice(dev); //日志动作的目标对象Id oLog.TargetId = deviceId; //通道添加 IList <CameraEntity> channelFlag = result.DeviceDto.AddDeviceEntity.Cameras; for (int i = 0; i < channelFlag.Count; i++) { Bsr.Cloud.Model.Entities.Channel channel = new Model.Entities.Channel(); CameraEntity ce = channelFlag[i]; channel.DeviceId = deviceId; channel.ChannelNumber = ce.ChannelNo; channel.ChannelName = ce.Name; channel.IsEnable = 1; channel.BPServerChannelId = ce.Id; channel.ImagePath = "default.jpg"; channelServer.InsertChannel(channel); } dto.Code = (int)CodeEnum.Success; dto.Message = "设备" + deviceName + "已添加完成!"; } else { dto.Code = (int)CodeEnum.NoHardWare; dto.Message = result.Message; } } } catch (Exception ex) { dto.Code = (int)CodeEnum.ApplicationErr; dto.Message = "网络异常,添加设备时,远程连接超时!"; myLog.ErrorFormat("AddDevice方法异常,设备名:{0}, 设备序列号:{1}", ex, deviceName, serialNumber); } oLog.TargetType = (int)OperaterLogEnum.Device; oLog.Result = dto.Code; oLog.Remarks = dto.Message; bllHelper.AddOperaterLog(oLog, tcp); return(dto); }