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