FROM x_user_file t
WHERE t.deleted = 0
AND t.id = #{param.id}
AND t.user_id = #{param.userId}
AND t.root_type = #{param.rootType}
AND t.file_type = #{param.fileType}
AND t.file_name = #{param.fileName}
AND t.file_name LIKE #{fileNameLike}
AND t.parent_id = #{param.parentId}
AND t.file_code = #{param.fileCode}
AND t.file_status = #{param.fileStatus}
AND t.path LIKE #{pathLike}
UPDATE x_user_file child
INNER JOIN x_user_file current ON current.id = #{fileId} AND current.deleted = 0
LEFT JOIN x_user_file parent ON parent.id = #{newParentId} AND parent.deleted = 0
SET child.path = CASE
WHEN child.id = #{fileId} THEN
CASE
WHEN #{newParentId} = 0 THEN CAST(#{fileId} AS CHAR)
ELSE CONCAT(parent.path, ',', #{fileId})
END
ELSE
REPLACE(child.path,
CONCAT(current.path, ','),
CASE
WHEN #{newParentId} = 0 THEN CONCAT(#{fileId}, ',')
ELSE CONCAT(parent.path, ',', #{fileId}, ',')
END)
END
WHERE (child.id = #{fileId} OR child.path LIKE CONCAT(current.path, ',%'))
AND child.deleted = 0
AND child.user_id = current.user_id
AND child.root_type = current.root_type
UPDATE x_user_file child
INNER JOIN x_user_file current ON current.id = #{fileId} AND current.deleted = 0
SET child.deleted = 1,
child.update_by = #{operateUserId},
child.update_time = NOW()
WHERE (child.id = #{fileId} OR child.path LIKE CONCAT(current.path, ',%'))
AND child.deleted = 0
AND child.user_id = current.user_id
AND child.root_type = current.root_type
UPDATE x_user_file child
INNER JOIN x_user_file current ON current.id = #{fileId}
AND current.deleted = 0
AND current.file_status = #{oldStatus}
SET child.file_status = #{newStatus},
child.update_by = #{operateUserId},
child.update_time = NOW()
WHERE (child.id = #{fileId} OR child.path LIKE CONCAT(current.path, ',%'))
AND child.deleted = 0
AND child.user_id = current.user_id
AND child.root_type = current.root_type