Exemplo n.º 1
0
        /// <summary>
        ///  将数据转换成 GroupChannelResponse 并将中的设备 授权字段 进行填充
        /// </summary>
        /// <param name="primaryCustomerId"></param>
        /// <param name="channelFlag"></param>
        /// <returns></returns>
        private List <GroupChannelResponse> ConvertGroupChannelResponse(int primaryCustomerId, IList <GroupChannelResponse> groupChannelResponseFlag)
        {
            List <int> deviceIdFlag = new List <int>();
            List <GroupChannelResponse> tmpGroupChannelResponseList = new List <GroupChannelResponse>();

            if (groupChannelResponseFlag == null || groupChannelResponseFlag.Count == 0)
            {
                return(tmpGroupChannelResponseList);
            }
            for (int i = 0; i < groupChannelResponseFlag.Count; i++)
            {
                deviceIdFlag.Add(groupChannelResponseFlag[i].DeviceId);
            }
            //去除重复设备Id
            deviceIdFlag = deviceIdFlag.Distinct().ToList();
            //获取出所有通道的所属 设备的授权集合
            IList <Permission> permissionFlag = permissionServer.SelectDeviceAuthorizeByDeviceIdList(primaryCustomerId, deviceIdFlag);

            for (int i = 0; i < groupChannelResponseFlag.Count; i++)
            {
                GroupChannelResponse groupChannelResponse = groupChannelResponseFlag[i];
                GroupChannelResponse gcr = new GroupChannelResponse();
                gcr.ChannelId   = groupChannelResponse.ChannelId;
                gcr.ChannelName = groupChannelResponse.ChannelName;
                for (int j = 0; j < permissionFlag.Count; j++)
                {
                    if (permissionFlag[j].NodeType == (int)PermissionNodeTypeEnum.Device &&
                        groupChannelResponse.DeviceId == permissionFlag[j].NodeId &&
                        permissionFlag[j].IsEnable == 1)
                    {
                        //当用户 是设备 + 通道的设备字段与权限相同 +权限的中的可用状态为1
                        //将这个通道输出时,变为是授权
                        gcr.IsAuthorize = 1;
                    }
                }
                IList <UserFavorite> userFavoriteFlag = userFavoriteServer.SelectCustomerByTid(
                    new UserFavorite()
                {
                    UserFavoriteType = (int)UserFavoriteTypeEnum.Channel, UserFavoriteTypeId = gcr.ChannelId
                });
                if (userFavoriteFlag != null && userFavoriteFlag.Count == 1)
                {
                    gcr.IsFavorite = 1;
                }
                gcr.ImagePath       = groupChannelResponse.ImagePath;
                gcr.IsEnable        = groupChannelResponse.IsEnable;
                gcr.ResourceGroupId = groupChannelResponse.ResourceGroupId;
                gcr.DeviceId        = groupChannelResponse.DeviceId;
                gcr.ChannelNumber   = groupChannelResponse.ChannelNumber;
                tmpGroupChannelResponseList.Add(gcr);
            }
            return(tmpGroupChannelResponseList);
        }
Exemplo n.º 2
0
        //查询单一通道
        public GetSingleChannelResponseDto GetSingleChannel(GetSingleChannelRequestDto req)
        {
            GetSingleChannelResponseDto cscr = new GetSingleChannelResponseDto();
            string customerToken             = "";

            if (!RestHelper.SecurityCheck(ref customerToken))
            {
                cscr.Code    = (int)CodeEnum.ReqNoToken;
                cscr.Message = RestHelper.SecNoTokenMessage;
            }
            else
            {
                GroupChannelResponse groupChannelResponse = new GroupChannelResponse();
                ResponseBaseDto      dto = channelBLL.GetSingleChannel(req.ChannelId, customerToken, ref groupChannelResponse);
                cscr.Code         = dto.Code;
                cscr.Message      = dto.Message;
                cscr.groupChannel = groupChannelResponse;
            }
            return(cscr);
        }
Exemplo n.º 3
0
        //以分组集合查询通道
        public GetChannelByResourceGroupIdListResponseDto GetChannelByResourceGroupIdList(GetChannelByResourceGroupIdListRequestDto req)
        {
            GetChannelByResourceGroupIdListResponseDto gbrg = new GetChannelByResourceGroupIdListResponseDto();
            string customerToken = "";

            if (!RestHelper.SecurityCheck(ref customerToken))
            {
                gbrg.Code    = (int)CodeEnum.ReqNoToken;
                gbrg.Message = RestHelper.SecNoTokenMessage;
            }
            else
            {
                Bsr.Cloud.Model.Entities.ResourceGroup resourceGroup = new Model.Entities.ResourceGroup();
                resourceGroup.ResourceGroupId = req.ResourceGroupId;
                IList <Bsr.Cloud.Model.Entities.GroupChannel> groupChannel = new List <Bsr.Cloud.Model.Entities.GroupChannel>();
                ResponseBaseDto dto = resourceGroupBLL.GetChannelByResourceGroupIdList(resourceGroup, customerToken, ref groupChannel);
                gbrg.Code    = dto.Code;
                gbrg.Message = dto.Message;
                List <GroupChannelResponse> responseGroupChannelFlag = new List <GroupChannelResponse>();
                for (int i = 0; i < groupChannel.Count; i++)
                {
                    GroupChannelResponse responseGroupChannel = new GroupChannelResponse();
                    responseGroupChannel.ChannelId       = groupChannel[i].channel.ChannelId;
                    responseGroupChannel.ChannelName     = groupChannel[i].channel.ChannelName;
                    responseGroupChannel.ChannelNumber   = groupChannel[i].channel.ChannelNumber;
                    responseGroupChannel.DeviceId        = groupChannel[i].channel.DeviceId;
                    responseGroupChannel.ResourceGroupId = groupChannel[i].resourceGroup.ResourceGroupId;
                    responseGroupChannel.IsEnable        = groupChannel[i].channel.IsEnable;
                    responseGroupChannel.ImagePath      += @"channelImage\" + groupChannel[i].channel.ImagePath;

                    responseGroupChannelFlag.Add(responseGroupChannel);
                }
                gbrg.responseGroupChannelList = responseGroupChannelFlag;
            }
            return(gbrg);
        }
Exemplo n.º 4
0
        /// <summary>
        ///  将数据转换成 GroupChannelResponse 并将中的设备 授权 收藏状态  分组信息 进行填充
        /// </summary>
        /// <param name="tcp">当前用户信息</param>
        /// <param name="primaryCustomerId">需要调用谁的设备和分组信息</param>
        /// <param name="channelFlag">通道信息</param>
        /// <returns></returns>
        internal List <GroupChannelResponse> ConvertGroupChannelResponse(TokenCacheProperty tcp, int primaryCustomerId, IList <Channel> channelFlag)
        {
            List <int> deviceIdFlag  = new List <int>();
            List <int> channelIdFlag = new List <int>();//用于进行分组获取
            List <GroupChannelResponse> tmpGroupChannelResponseList = new List <GroupChannelResponse>();

            if (channelFlag == null || channelFlag.Count == 0)
            {
                return(tmpGroupChannelResponseList);
            }
            for (int i = 0; i < channelFlag.Count; i++)
            {
                deviceIdFlag.Add(channelFlag[i].DeviceId);
            }
            //去除重复设备Id
            deviceIdFlag = deviceIdFlag.Distinct().ToList();
            //获取出所有通道的所属 设备的授权集合
            IList <Permission> permissionFlag = permissionServer.SelectDeviceAuthorizeByDeviceIdList(primaryCustomerId, deviceIdFlag);

            //通道进行添加是否是授权设备,是否被收藏
            for (int i = 0; i < channelFlag.Count; i++)
            {
                Channel channel          = channelFlag[i];
                GroupChannelResponse gcr = new GroupChannelResponse();
                gcr.ChannelId   = channel.ChannelId;
                gcr.ChannelName = channel.ChannelName;
                for (int j = 0; j < permissionFlag.Count; j++)
                {
                    if (permissionFlag[j].NodeType == (int)PermissionNodeTypeEnum.Device &&
                        channel.DeviceId == permissionFlag[j].NodeId &&
                        permissionFlag[j].IsEnable == 1)
                    {
                        //当用户 是设备 + 通道的设备字段与权限相同 +权限的中的可用状态为1
                        //将这个通道输出时,变为是授权
                        gcr.IsAuthorize = 1;
                    }
                }
                //是否收藏了通道
                IList <UserFavorite> userFavoriteFlag = userFavoriteServer.SelectCustomerByTid(
                    new UserFavorite()
                {
                    CustomerId = tcp.CustomerId, UserFavoriteType = (int)UserFavoriteTypeEnum.Channel, UserFavoriteTypeId = gcr.ChannelId
                });
                if (userFavoriteFlag != null && userFavoriteFlag.Count == 1)
                {
                    gcr.IsFavorite = 1;
                }
                gcr.ImagePath     = channel.ImagePath;
                gcr.IsEnable      = channel.IsEnable;
                gcr.DeviceId      = channel.DeviceId;
                gcr.ChannelNumber = channel.ChannelNumber;
                tmpGroupChannelResponseList.Add(gcr);
                channelIdFlag.Add(gcr.ChannelId);
            }
            //以primaryCustomerId和多个channelId查找出它们的分组
            IList <GroupChannel> groupChannelFlag =
                groupChannelServer.SelectGroupChannelByChannelIdListAndCustomerId(primaryCustomerId, channelIdFlag);

            //将tmpGroupChannelResponseList里的通道进行分组赋值
            for (int i = 0; i < tmpGroupChannelResponseList.Count; i++)
            {
                var result = from gc in groupChannelFlag
                             where tmpGroupChannelResponseList[i].ChannelId == gc.channel.ChannelId
                             select gc;
                //防止迭代器版本号丢失和空数据
                if (result != null && result.Count() != 0)
                {
                    tmpGroupChannelResponseList[i].ResourceGroupId = result.First().resourceGroup.ResourceGroupId;
                }
            }
            return(tmpGroupChannelResponseList);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 查询单一通道信息 GetSingleChannel
        /// </summary>
        /// <param name="customerToken">token</param>
        /// <param name="channel">通道信息</param>
        /// <returns></returns>
        public ResponseBaseDto GetSingleChannel(int channelId, string customerToken, ref GroupChannelResponse groupChannelResponse)
        {
            ResponseBaseDto    dto = new ResponseBaseDto();
            UserTokenCache     utc = UserTokenCache.GetInstance();
            TokenCacheProperty tcp = new TokenCacheProperty();

            try
            {
                if (utc.IsValid(customerToken) == false)
                {
                    dto.Code    = (int)CodeEnum.ServerNoToken;
                    dto.Message = "用户token已失效,请重新登录后继续";
                    return(dto);
                }
                dto = bllHelper.CheckCustomer(dto, customerToken, ref tcp);
                if (dto.Code != 0)
                {
                    return(dto);
                }
                else
                {
                    int             primaryCustomerId = 0;
                    IList <Channel> channelFlag       = channelServer.SelectChannelByChannelId(new Channel()
                    {
                        ChannelId = channelId
                    });
                    if (tcp.SignInType == (int)CustomerSignInTypeEnum.SubCustomer)
                    {
                        IList <Permission> permissionFlag = permissionServer.SelectPermissionByCidAndNid(
                            new Customer()
                        {
                            CustomerId = tcp.CustomerId
                        },
                            new Permission()
                        {
                            NodeType = (int)PermissionNodeTypeEnum.Channel, NodeId = channelId
                        });
                        if (permissionFlag == null || permissionFlag.Count == 0)
                        {
                            dto.Code    = (int)CodeEnum.NoAuthorization;
                            dto.Message = "您当前账户里没有此观看权限!";
                            return(dto);
                        }
                        primaryCustomerId = tcp.ParentId;
                    }
                    else if (tcp.SignInType == (int)CustomerSignInTypeEnum.PrimaryCustomer)
                    {
                        if (channelFlag == null || channelFlag.Count == 0)
                        {
                            dto.Code    = (int)CodeEnum.NoAuthorization;
                            dto.Message = "您当前账户里没有此观看权限!";
                            return(dto);
                        }
                        IList <Device> deviceFlag = deviceServer.SelectDeviceByDeviceId(new Device()
                        {
                            DeviceId = channelFlag[0].DeviceId
                        });
                        if (deviceFlag == null || deviceFlag.Count == 0 || deviceFlag[0].CustomerId != tcp.CustomerId)
                        {
                            dto.Code    = (int)CodeEnum.NoAuthorization;
                            dto.Message = "您当前账户里没有此观看权限!";
                            return(dto);
                        }
                        primaryCustomerId = tcp.CustomerId;
                    }
                    if (channelFlag != null && channelFlag.Count == 1)
                    {
                        var result = ConvertGroupChannelResponse(tcp, primaryCustomerId, channelFlag);
                        if (result != null && result.Count == 1)
                        {
                            groupChannelResponse = result[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.WarnFormat("GetSingleChannel方法异常,通道Id:{0}", ex, channelId);
            }
            return(dto);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 查询分组下(包括子分组)的所有通道 分页 GetChannelByPageOrResourceGroupId
        /// </summary>
        /// <param name="resourceGroup"></param>
        /// <param name="customerToken"></param>
        /// <param name="groupChannel"></param>
        /// <param name="Total"></param>
        /// <returns></returns>
        public ResponseBaseDto GetChannelByPageOrResourceGroupId
            (ResourceGroup resourceGroup, int startCount, int requestCount, string keyWord,
            string customerToken, ref IList <GroupChannelResponse> groupChannelResponseFlag, ref int total)
        {
            ResponseBaseDto    dto = new ResponseBaseDto();
            UserTokenCache     utc = UserTokenCache.GetInstance();
            TokenCacheProperty tcp = new TokenCacheProperty();

            if (utc.IsValid(customerToken) == false)
            {
                dto.Code    = (int)CodeEnum.ServerNoToken;
                dto.Message = "用户token已失效,请重新登录后继续";
            }
            else
            {
                try
                {
                    dto = bllHelper.CheckCustomer(dto, customerToken, ref tcp);
                    if (dto.Code != 0)
                    {
                        return(dto);
                    }
                    //查询当前用户的分组
                    List <int>            resourceGroupIdFlag = new List <int>();
                    IList <ResourceGroup> allResourceList     = new List <ResourceGroup>();
                    bool   isSubCustomer     = false;
                    int    primaryCustomerId = 0;
                    string deviceIdListStr   = "";
                    startCount -= 1;
                    startCount  = startCount < 0 ? 0 : startCount;
                    if (tcp.SignInType == (int)CustomerSignInTypeEnum.SubCustomer)
                    {
                        isSubCustomer     = true;
                        primaryCustomerId = tcp.ParentId;
                    }
                    else
                    {
                        isSubCustomer     = false;
                        primaryCustomerId = tcp.CustomerId;
                    }
                    //查找是否有授权的设备
                    Customer primaryCustomer = new Customer()
                    {
                        CustomerId = primaryCustomerId
                    };
                    IList <Device> primaryDeviceFlag =
                        deviceServer.SelectDeviceCustomerId(primaryCustomer);
                    //查询出权限表中可以使用的设备Id
                    IList <Permission> primaryPermissionFlag = permissionServer.SelectPermissionByCustomerId(primaryCustomer);
                    //当前用户下所有可以使用的设备
                    for (int i = 0; i < primaryPermissionFlag.Count; i++)
                    {
                        Permission permission = primaryPermissionFlag[0];
                        if (permission.NodeType == (int)PermissionNodeTypeEnum.Device && permission.IsEnable == 1)
                        {
                            Device device = new Device();
                            device.DeviceId = permission.NodeId;
                            IList <Device> otherDeviceFlag = deviceServer.SelectDeviceByDeviceId(device);
                            if (otherDeviceFlag != null && otherDeviceFlag.Count == 1)
                            {
                                primaryDeviceFlag.Add(otherDeviceFlag[0]);
                            }
                        }
                    }
                    //将设备集合对象中的设备ID修改为 21,22,33
                    for (int j = 0; j < primaryDeviceFlag.Count; j++)
                    {
                        if (j != primaryDeviceFlag.Count - 1)
                        {
                            deviceIdListStr += primaryDeviceFlag[j].DeviceId + ",";
                        }
                        else
                        {
                            deviceIdListStr += primaryDeviceFlag[j].DeviceId.ToString();
                        }
                    }
                    //如果用户的分组为0(isGroup=1,ResourceGroupId=0),将查询未分组的通道
                    if (resourceGroup != null && resourceGroup.ResourceGroupId == 0 &&
                        deviceIdListStr != string.Empty && deviceIdListStr != "")
                    {
                        IList <Channel> channelFlag = new List <Channel>();
                        GetChannelByNoGroup(primaryCustomerId, deviceIdListStr, isSubCustomer,
                                            startCount, requestCount, keyWord, ref channelFlag, ref total);
                        groupChannelResponseFlag =
                            channelBLL.ConvertGroupChannelResponse(tcp, primaryCustomerId, channelFlag);
                        dto.Code    = (int)CodeEnum.Success;
                        dto.Message = "通道获取完成!";
                        return(dto);
                    }

                    GetchildResourceGroup(resourceGroup, ref allResourceList);
                    allResourceList.Add(resourceGroup);
                    for (int i = 0; i < allResourceList.Count; i++)
                    {
                        resourceGroupIdFlag.Add(allResourceList[i].ResourceGroupId);
                    }
                    string resourceGroupIdListStr = string.Empty;
                    for (int j = 0; j < resourceGroupIdFlag.Count; j++)
                    {
                        if (j != resourceGroupIdFlag.Count - 1)
                        {
                            resourceGroupIdListStr += resourceGroupIdFlag[j] + ",";
                        }
                        else
                        {
                            resourceGroupIdListStr += resourceGroupIdFlag[j].ToString();
                        }
                    }
                    IList result = null;
                    if (isSubCustomer)
                    {
                        //子用户有权限
                        if (deviceIdListStr != string.Empty && deviceIdListStr != "")
                        {
                            result = groupChannelServer.SelectSubChannelByPageOrResourceGroupId
                                         (tcp.CustomerId, startCount, requestCount, keyWord, resourceGroupIdListStr);
                            total = groupChannelServer.SelectSubChannelByPageOrResourceGroupIdCount(tcp.CustomerId, keyWord, resourceGroupIdListStr);
                        }
                    }
                    else
                    {
                        //检索关键字,当前用户可用的组集合,当前可用设备的集合
                        //返回 List<object[]>输出时需装箱
                        if (deviceIdListStr != string.Empty && deviceIdListStr != "")
                        {
                            result = groupChannelServer.SelectChannelByPageOrResourceGroupId
                                         (startCount, requestCount, keyWord, deviceIdListStr, resourceGroupIdListStr);
                            total = groupChannelServer.SelectChannelByPageOrResourceGroupIdCount(keyWord, deviceIdListStr, resourceGroupIdListStr);
                        }
                    }
                    //通道数据装箱
                    if (result != null)
                    {
                        for (int i = 0; i < result.Count; i++)
                        {
                            object[]             data = (object[])result[i];
                            GroupChannelResponse gcr  = new GroupChannelResponse();
                            gcr.ChannelId       = (int)data[0];
                            gcr.ResourceGroupId = (int)data[1];
                            gcr.ChannelName     = (string)data[2];
                            gcr.ChannelNumber   = (int)data[3];
                            gcr.DeviceId        = (int)data[4];
                            gcr.IsEnable        = (int)data[5];
                            gcr.ImagePath       = (string)data[6];
                            groupChannelResponseFlag.Add(gcr);
                        }
                    }
                    //填充 需要的 授权字段
                    groupChannelResponseFlag = ConvertGroupChannelResponse(primaryCustomerId, groupChannelResponseFlag);
                    dto.Code    = (int)CodeEnum.Success;
                    dto.Message = "通道获取完成!";
                }
                catch (Exception ex)
                {
                    dto.Code    = (int)CodeEnum.ApplicationErr;
                    dto.Message = "网络异常,请刷新页面后继续";
                    myLog.WarnFormat("GetChannelByPageOrResourceGroupId方法异常, 组id:{0}, 起始值:{1},请求数量:{2}, 关键字:{3}",
                                     ex, resourceGroup.ResourceGroupId, startCount, requestCount, keyWord);
                }
            }
            return(dto);
        }