产品手册 实施方案 用户案例 问题中心

将个人网盘文件转移(用户A转至用户B指定目录下)

分类:二次开发 产品中心 775
— 个人网盘用户A 所有网盘数据都转至 用户B 根目录下的一个目录中(此目录自动创建,名称:转自【用户A】_YYYYmmdd)
BEGIN
  Declare @strUserLogin1 as nvarchar(32)
  Declare @strUserLogin2 as nvarchar(32)
  Declare @strUserName1 as nvarchar(64)
  Declare @strUserName2 as nvarchar(64)
  Declare @nUserIndex1 as int
  Declare @nUserIndex2 as int
  Declare @strTabIndex1 as nchar(1)
  Declare @strTabIndex2 as nchar(1)
  Declare @strCatalogID as nvarchar(36)
  Declare @strCatalogName as nvarchar(64)
  Declare @strSQL as nvarchar(1024)
  Declare @strOwner as nvarchar(32)
  Declare @strOwnerName as nvarchar(64)
  Declare @nNDIndex as int
  Declare @strDate as nvarchar(8)
  — 指定用户A 与 用户B 的登录名,最好小写
  Set @strUserLogin1 = N’用户A’
  Set @strUserLogin2 = N’用户B’
  Set @nUserIndex1 = -1
  Set @nUserIndex2 = -1
  — 申请游标,得到用户个人网盘信息
  Declare userindex_cursor cursor for (SELECT Lower( CN_S_OWNER_ID ), CN_S_OWNER_NAME, CN_N_NDX FROM OI_ND_USER WHERE CN_S_OWNER_ID IN ( @strUserLogin1, @strUserLogin2 ) )
  — 打开游标
  Open userindex_cursor
  — 开始循环游标变量
  Fetch Next From userindex_cursor into @strOwner, @strOwnerName, @nNDIndex
  — FETCH 后的游标状态
  While @@FETCH_STATUS = 0
  Begin
    If @strOwner = @strUserLogin1
    Begin
      Set @nUserIndex1 = @nNDIndex
      Set @strUserName1 = @strOwnerName
    End
    Else
    Begin
      Set @nUserIndex2 = @nNDIndex
      Set @strUserName2 = @strOwnerName
    End
    — 转到下一个游标
    Fetch Next From userindex_cursor into @strOwner, @strOwnerName, @nNDIndex
  End
  — 关闭游标
  Close userindex_cursor
  — 释放游标
  Deallocate userindex_cursor
  — 判断用户索引
  If @nUserIndex1 = -1 Or @nUserIndex2 = -1
  Begin
    Print N’指定的用户不存在’
    Return
  End
  — 生成表索引
  Set @strTabIndex1 = Str( @nUserIndex1, 1 )
  Set @strTabIndex2 = Str( @nUserIndex2, 1 )
  — 在用户B根目录下创建存放转移数据的目录:转自【用户A】_YYYYmmdd
  Print N’创建转移数据的目录’
  Set @strCatalogID = NewID()
  Set @strDate = Left( Convert( char(8), GetDate(), 112 ), 8 )
  Set @strCatalogName = ‘转自【’ + @strUserName1 + ‘】_’ + @strDate
  Set @strSQL = N’INSERT INTO OI_ND_CATALOG ( CN_S_ID, CN_S_NAME, CN_N_DOC_LIST_TYPE, CN_N_SHARE, CN_S_CREATOR_ID, CN_S_CREATOR, CN_T_CREATE, CN_N_ORDER, CN_S_PARENTID ) ‘ +
N’VALUES ( ”’ + @strCatalogID + ”’, ”’ + @strCatalogName + ”’, 0, 0, ”’ + @strUserLogin2 + ”’, ”’ + @strUserName2 + ”’, GetDate(), 0, ”” )’
  EXEC( @strSQL )
  — 索引值相同,直接替换
  If @nUserIndex1 = @nUserIndex2
  Begin
    Print N’用户索引相同’
    — 个人文档表
    Print N’个人文档表’
    Set @strSQL = N’UPDATE OI_ND_DOC_’ + @strTabIndex1 + N’ SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
    — 根级目录文档
    Print N’根级目录文档’
    Set @strSQL = N’UPDATE OI_ND_CATALOG_HLINK_’ + @strTabIndex1 + N’ SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CATALOG_ID = ”’ + @strCatalogID + N”’ WHERE (CN_S_CATALOG_ID IS NULL OR CN_S_CATALOG_ID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
    — 子级目录文档
    Print N’子级目录文档’
    Set @strSQL = N’UPDATE OI_ND_CATATLOG_HLINK_’ + @strTabIndex1 + N’ SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
  End
  — 索引值不同,数据记录迁移(记录复制至 B用户索引表,删除A用户索引表记录)
  Else
  Begin
    Print N’用户索引不相同’
    — 个人文档表,复制
    Print N’个人文档表,复制’
    Set @strSQL = N’INSERT INTO OI_ND_DOC_’ + @strTabIndex2 + N’ ( CN_S_ID, CN_S_FILE_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_T_FILE_DATETIME, CN_S_FILE_MD5, CN_S_FILE_SERVER, CN_G_FILE_ID, CN_G_PDF_FILE_ID, CN_G_FLASH_FILE_ID, CN_G_THUMB_IMAGE_ID, CN_S_THUMB_URL, ‘ +
N’CN_S_CREATOR_ID, CN_S_CREATOR, CN_T_CREATE, CN_S_VERSION, CN_S_TAGS_NAME, CN_N_SHARE, CN_N_MOD, CN_S_NOTE, CN_S_SYS_NOTE ) ‘ +
N’SELECT CN_S_ID, CN_S_FILE_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_T_FILE_DATETIME, CN_S_FILE_MD5, CN_S_FILE_SERVER, CN_G_FILE_ID, CN_G_PDF_FILE_ID, CN_G_FLASH_FILE_ID, CN_G_THUMB_IMAGE_ID, CN_S_THUMB_URL, ‘ +
N”” + @strUserLogin2 + N”’, ”’ + @strUserName2 + N”’, CN_T_CREATE, CN_S_VERSION, CN_S_TAGS_NAME, CN_N_SHARE, CN_N_MOD, CN_S_NOTE, CN_S_SYS_NOTE ‘ +
N’FROM OI_ND_DOC_’ + @strTabIndex1 +
N’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
    — 删除
    Print N’个人文档表,删除’
    Set @strSQL = N’DELETE OI_ND_DOC_’ + @strTabIndex1 + N’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
    — 根级目录文档,复制
    Print N’根级目录文档,复制’
    Set @strSQL = N’INSERT INTO OI_ND_CATALOG_HLINK_’ + @strTabIndex2 + N’ ( CN_S_CREATOR_ID, CN_S_CATALOG_ID, CN_S_OBJ_ID, CN_S_DISPLAY_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_S_THUMB_URL, CN_T_FILE_DATETIME, CN_S_EXTATTR, CN_N_SHARE, CN_T_LINK, CN_S_TAGS ) ‘ +
N’SELECT ”’ + @strUserLogin2 + N”’, ”’ + @strCatalogID + N”’, CN_S_OBJ_ID, CN_S_DISPLAY_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_S_THUMB_URL, CN_T_FILE_DATETIME, CN_S_EXTATTR, CN_N_SHARE, CN_T_LINK, CN_S_TAGS ‘ +
N’FROM OI_ND_CATALOG_HLINK_’ + @strTabIndex1 +
N’ WHERE (CN_S_CATALOG_ID IS NULL OR CN_S_CATALOG_ID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
    — 删除
    Print N’根级目录文档,删除’
    Set @strSQL = N’DELETE OI_ND_CATALOG_HLINK_’ + @strTabIndex1 + N’ WHERE (CN_S_CATALOG_ID IS NULL OR CN_S_CATALOG_ID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
    — 子级目录文档,复制
    Print N’子级目录文档,复制’
    Set @strSQL = N’INSERT INTO OI_ND_CATALOG_HLINK_’ + @strTabIndex2 + N’ ( CN_S_CREATOR_ID, CN_S_CATALOG_ID, CN_S_OBJ_ID, CN_S_DISPLAY_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_S_THUMB_URL, CN_T_FILE_DATETIME, CN_S_EXTATTR, CN_N_SHARE, CN_T_LINK, CN_S_TAGS ) ‘ +
N’SELECT ”’ + @strUserLogin2 + N”’, CN_S_CATALOG_ID, CN_S_OBJ_ID, CN_S_DISPLAY_NAME, CN_S_FILE_TYPE, CN_N_FILE_SIZE, CN_S_THUMB_URL, CN_T_FILE_DATETIME, CN_S_EXTATTR, CN_N_SHARE, CN_T_LINK, CN_S_TAGS ‘ +
N’FROM OI_ND_CATALOG_HLINK_’ + @strTabIndex1 +
N’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
    — 删除
    Print N’子级目录文档,删除’
    Set @strSQL = N’DELETE OI_ND_CATALOG_HLINK_’ + @strTabIndex1 + N’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
    EXEC( @strSQL )
  End
  — 未分表的数据表,直接替换
  — 回收站,原根目录文档
  Print N’回收站,原根目录文档’
  Set @strSQL = N’UPDATE OI_ND_DOC_DELETE SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’, CN_S_DELETED_BY_ID = ”’ + @strUserLogin2 + N”’, CN_S_DELETED_BY = ”’ + @strUserName2 + N”’, CN_G_CATALOG_ID = ”’ + @strCatalogID + N”’ ‘ +
N’WHERE (CN_G_CATALOG_ID IS NULL OR CN_G_CATALOG_ID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
  EXEC( @strSQL )
  — 回收站,其它目录文档
  Print N’回收站,其它目录文档’
  Set @strSQL = N’UPDATE OI_ND_DOC_DELETE SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’, CN_S_DELETED_BY_ID = ”’ + @strUserLogin2 + N”’, CN_S_DELETED_BY = ”’ + @strUserName2 + N”’ ‘ +
N’WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
  EXEC( @strSQL )
  — 历史表
  Print N’历史表’
  Set @strSQL = N’UPDATE OI_ND_DOC_HISTORY SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’, CN_S_OPERATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_OPERATOR = ”’ + @strUserName2 + N”’ ‘ +
N’WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
  EXEC( @strSQL )
  — 根级目录
  Print N’根级目录’
  Set @strSQL = N’UPDATE OI_ND_CATALOG SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’, CN_S_PARENTID = ”’ + @strCatalogID + N”’ ‘ +
N’WHERE (CN_S_PARENTID IS NULL OR CN_S_PARENTID = ””) AND CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
  EXEC( @strSQL )
  — 子级目录
  Print N’子级目录’
  Set @strSQL = N’UPDATE OI_ND_CATALOG SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’ ‘ +
N’WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
  EXEC( @strSQL )
  — 共享出去信息替换
  Print N’共享出去信息替换’
  Set @strSQL = N’UPDATE OI_ND_SHARE_OUT SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
  EXEC( @strSQL )
  — 删除共享进来 A -> B,B -> A 记录
  Print N’删除共享进来 A -> B,B -> A 记录’
  Set @strSQL = N’DELETE OI_ND_SHARE_IN WHERE (CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N”’ AND CN_S_SHARER_ID = ”’ + @strUserLogin2 + N”’) OR (CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’ AND CN_S_SHARER_ID = ”’ + @strUserLogin1 + N”’)’
  EXEC( @strSQL )
  — 共享进来信息替换
  Print N’共享进来信息替换’
  Set @strSQL = N’UPDATE OI_ND_SHARE_IN SET CN_S_CREATOR_ID = ”’ + @strUserLogin2 + N”’, CN_S_CREATOR = ”’ + @strUserName2 + N”’ WHERE CN_S_CREATOR_ID = ”’ + @strUserLogin1 + N””
  EXEC( @strSQL )
END
GO
标签:脚本 上一篇: 下一篇:
展开更多
预约软件体验

loading...