子站批量设置节点允许指定主站推送

作者:动易软件 来源:本站原创 点击数: 发布时间:2021年01月09日

        如果按照正常操作步骤:

  1. 每个子站先开启允许指定主站推送(不建议直接选全部);

    de8394730451414c942b9b3dc940decf.png

  2. 切换到每个子站后台,在节点修改,权限设置中选择允许主站推送;重复设置其他节点;

    f8805e1f042c4daba562fde95187220e.png

针对以上操作,如果有四五十个子站,每个站点十几个栏目需要设置,这工作量想想就够了。


优化后的方法(数据库操作,记得提前备份):

  1. 子站点设置开启允许主站推送:
    declare my_cursor cursor for     
    select SiteId,OtherSiteSendPermissionType from PE_Common_Site where SiteId <> 1
    open my_cursor                  
    declare   @SiteId int,@OtherSiteSendPermissionType int
    fetch next from my_cursor into @SiteId,@OtherSiteSendPermissionType
    while( @@FETCH_STATUS=0) --假如检索到了数据继续执行
    begin
        print('-----------------------begin-------------------------------CurrentSiteId=' + convert(nvarchar,@SiteId))
        if(@OtherSiteSendPermissionType != 2) --如果“报送/推送权限”状态不是“只允许指定站点报送/推送数据到本站点”。
        begin
            print('正在修改SiteId为' + convert(nvarchar,@SiteId) + '的 “SendPermissionType”值为2(只允许指定站点报送/推送数据到本节点。)')
            update PE_Common_Site set OtherSiteSendPermissionType = 2 where SiteId = @SiteId
        end

        if((select count(*) from [PE_Common_SiteAllowDesignatedSiteRelation] where SiteId = @SiteId and DesignatedSiteId = 1) = 0) -- 当前站点还未指定站点ID为1
        begin
            print('正在为SiteId为' + convert(nvarchar,@SiteId) + ' 的站点,将主站添加到“已允许的站点”关系中。 ')
            insert into [PE_Common_SiteAllowDesignatedSiteRelation] values(@SiteId, 1, True, '1|0')
        end
        print('-----------------------end-------------------------------')
        fetch next from my_cursor into @nodeid, @SendPermissionType

    end--关闭释放游标
    close my_cursor
    deallocate my_cursor



    结果如下:


    cf097fef855c4f92b671bf34eec5af62.png

    d85bd47b2b9849a386978e00b2e3fbae.png

  2. 子站节点开启允许主站推送
    declare my_cursor cursor for     
    select nodeid,SendPermissionType from PE_ContentManage_Node where NodeName = '栏目名称' and SiteId <> 1
    open my_cursor                  
    declare   @nodeid int,@SendPermissionType int
    fetch next from my_cursor into @nodeid, @SendPermissionType
    while( @@FETCH_STATUS=0) --假如检索到了数据继续执行
    begin
        print('-----------------------begin-------------------------------CurrentNodeId=' + convert(nvarchar,@nodeid))
        if(@SendPermissionType != 2) --如果“报送/推送权限”状态不是“只允许指定站点报送/推送数据到本节点”。
        begin
            print('正在修改nodeid为' + convert(nvarchar,@nodeid) + '的 “SendPermissionType”值为2(只允许指定站点报送/推送数据到本节点。)')
            update PE_ContentManage_Node set SendPermissionType = 2 where NodeId = @nodeid
        end

        if((select count(*) from [PE_ContentManage_NodeAllowDesignatedSiteRelation] where NodeId = @nodeid and DesignatedSiteId = 1) = 0) -- 当前节点还未指定站点ID为1
        begin
            print('正在为nodeid为' + convert(nvarchar,@nodeid) + ' 的节点,将主站添加到“已允许的站点”关系中。 ')
            insert into [PE_ContentManage_NodeAllowDesignatedSiteRelation] values(@nodeid, 1, 0, '1|0')
        end
        print('-----------------------end-------------------------------')
        fetch next from my_cursor into @nodeid, @SendPermissionType

    end--关闭释放游标
    close my_cursor
    deallocate my_cursor


        结果如下:

        b3db5ee4bc474d3eb64349a988c0a7aa.png

f08f6e9c15df44cd9c813c25ff73f07f.png

执行脚本后需要点下清空数据缓存。

批量设置允许主站推送.rar