id, record_id, template_id, template_code, scenic_id, face_id, content_hash, status, worker_id, lease_expire_time, attempt_count, output_format, output_quality, original_object_key, cropped_object_key, payload_json, error_message, create_time, update_time INSERT INTO puzzle_edge_render_task ( record_id, template_id, template_code, scenic_id, face_id, content_hash, status, worker_id, lease_expire_time, attempt_count, output_format, output_quality, original_object_key, cropped_object_key, payload_json, error_message, create_time, update_time ) VALUES ( #{recordId}, #{templateId}, #{templateCode}, #{scenicId}, #{faceId}, #{contentHash}, #{status}, #{workerId}, #{leaseExpireTime}, #{attemptCount}, #{outputFormat}, #{outputQuality}, #{originalObjectKey}, #{croppedObjectKey}, #{payloadJson}, #{errorMessage}, NOW(), NOW() ) UPDATE puzzle_edge_render_task SET worker_id = #{workerId}, status = 1, lease_expire_time = #{leaseExpireTime}, attempt_count = attempt_count + 1, update_time = NOW() WHERE id = #{taskId} AND ( status = 0 OR (status = 1 AND lease_expire_time IS NOT NULL AND lease_expire_time < NOW()) ) UPDATE puzzle_edge_render_task SET status = 2, lease_expire_time = NULL, error_message = NULL, update_time = NOW() WHERE id = #{taskId} AND worker_id = #{workerId} AND status = 1 UPDATE puzzle_edge_render_task SET status = 3, lease_expire_time = NULL, error_message = #{errorMessage}, update_time = NOW() WHERE id = #{taskId} AND worker_id = #{workerId} AND status = 1